Skip to content

Commit 3e2a12f

Browse files
authored
Merge pull request #23 from Automattic/issue/fix_crash_when_no_token_provided
fix: do not crash build if `appsMetricsToken` was not provided
2 parents cbd6a5f + f9e2f1f commit 3e2a12f

File tree

2 files changed

+25
-5
lines changed

2 files changed

+25
-5
lines changed

measure-builds/src/main/java/com/automattic/android/measure/BuildTimePlugin.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ class BuildTimePlugin @Inject constructor(
3030
override fun apply(project: Project) {
3131
val startTime =
3232
(project.gradle as DefaultGradle).services[BuildStartedTime::class.java].startTime
33+
val extension =
34+
project.extensions.create("measureBuilds", MeasureBuildsExtension::class.java, project)
3335

3436
val authToken = AuthTokenProvider.provide(project)
3537
if (authToken.isNullOrBlank()) {
@@ -39,9 +41,6 @@ class BuildTimePlugin @Inject constructor(
3941

4042
val analyticsReporter = MetricsReporter(project.logger, authToken)
4143

42-
val extension =
43-
project.extensions.create("measureBuilds", MeasureBuildsExtension::class.java, project)
44-
4544
val encodedUser: String = UsernameProvider.provide(project, extension)
4645

4746
project.afterEvaluate {

measure-builds/src/test/java/com/automattic/android/measure/BuildTimePluginTest.kt

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,24 @@ class BuildTimePluginTest {
9898
assertThat(run.output).doesNotContain("Reporting build data to Apps Metrics...")
9999
}
100100

101+
@Test
102+
fun `given a project without apps metrics token, when executing a task, then build does not fail`() {
103+
// given
104+
val runner = functionalTestRunner(
105+
enable = true,
106+
attachGradleScanId = false,
107+
applyAppsMetricsToken = false,
108+
)
109+
110+
// when
111+
val run = runner.withArguments("help").build()
112+
113+
// then
114+
assertThat(run.output)
115+
.contains("Did not find appsMetricsToken in gradle.properties. Skipping reporting.")
116+
.contains("BUILD SUCCESSFUL")
117+
}
118+
101119
@BeforeEach
102120
fun clearCache() {
103121
val projectDir = File("build/functionalTest")
@@ -107,7 +125,8 @@ class BuildTimePluginTest {
107125
private fun functionalTestRunner(
108126
enable: Boolean?,
109127
attachGradleScanId: Boolean,
110-
vararg arguments: String
128+
applyAppsMetricsToken: Boolean = true,
129+
vararg arguments: String,
111130
): GradleRunner {
112131
val projectDir = File("build/functionalTest")
113132
projectDir.mkdirs()
@@ -138,7 +157,9 @@ class BuildTimePluginTest {
138157
}
139158
""".trimIndent()
140159
)
141-
projectDir.resolve("gradle.properties").writeText("appsMetricsToken=token")
160+
if (applyAppsMetricsToken) {
161+
projectDir.resolve("gradle.properties").writeText("appsMetricsToken=token")
162+
}
142163

143164
val runner = GradleRunner.create()
144165
runner.forwardOutput()

0 commit comments

Comments
 (0)