Skip to content

Commit f152615

Browse files
author
Ivan Dyatlov
committed
Add support for application and component tests in Allure
1 parent 27cc6da commit f152615

File tree

6 files changed

+29
-3
lines changed

6 files changed

+29
-3
lines changed

core/src/main/kotlin/com/malinskiy/marathon/execution/Configuration.kt

+3
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ data class Configuration(
4141
val testClassRegexes: Collection<Regex>,
4242
val ignoreFailureRegexes: Collection<Regex>,
4343
val failFastFailureRegexes: Collection<Regex>,
44+
val appModuleRegexes: Collection<Regex>,
4445

4546
val testOutputTimeoutMillis: Long,
4647
val noDevicesTimeoutMillis: Long,
@@ -72,6 +73,7 @@ data class Configuration(
7273
testClassRegexes: Collection<Regex>?,
7374
ignoreFailureRegexes: Collection<Regex>?,
7475
failFastFailureRegexes: Collection<Regex>?,
76+
appModuleRegexes: Collection<Regex>?,
7577

7678
testOutputTimeoutMillis: Long?,
7779
noDevicesTimeoutMillis: Long?,
@@ -100,6 +102,7 @@ data class Configuration(
100102
testClassRegexes = testClassRegexes ?: listOf(Regex("^((?!Abstract).)*Test$")),
101103
ignoreFailureRegexes = ignoreFailureRegexes ?: emptyList(),
102104
failFastFailureRegexes = failFastFailureRegexes ?: emptyList(),
105+
appModuleRegexes = appModuleRegexes ?: emptyList(),
103106
testOutputTimeoutMillis = testOutputTimeoutMillis ?: DEFAULT_OUTPUT_TIMEOUT_MILLIS,
104107
noDevicesTimeoutMillis = noDevicesTimeoutMillis ?: DEFAULT_NO_DEVICES_TIMEOUT_MILLIS,
105108
analyticsTracker = analyticsTracker,

core/src/main/kotlin/com/malinskiy/marathon/report/allure/AllureReporter.kt

+17-3
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ class AllureReporter(
5959
params.forEach {
6060
params[it.key] = it.value
6161
}
62-
params["platform"] = "Android"
62+
params[PLATFORM] = ANDROID
6363
params.saveToEnvironmentProperties()
6464
}
6565

@@ -154,14 +154,23 @@ class AllureReporter(
154154
test.findValue<String>(Description::class.java.canonicalName)?.let { allureTestResult.setDescription(it) }
155155
test.findValue<String>(Issue::class.java.canonicalName)?.let { allureTestResult.links.add(ResultsUtils.createIssueLink(it)) }
156156
test.findValue<String>(TmsLink::class.java.canonicalName)?.let { allureTestResult.links.add(ResultsUtils.createTmsLink(it)) }
157-
allureTestResult.labels.add(ResultsUtils.createLabel("layer", "UI"))
158-
allureTestResult.labels.add(ResultsUtils.createLabel("platform", "Android"))
157+
158+
allureTestResult.labels.add(
159+
ResultsUtils.createLabel(
160+
LAYER, if (test.isApplicationTest()) CLIENT_APPLICATION else CLIENT_COMPONENT
161+
)
162+
)
163+
164+
allureTestResult.labels.add(ResultsUtils.createLabel(PLATFORM, ANDROID))
159165
allureTestResult.labels.addAll(ResultsUtils.getProvidedLabels())
160166
allureTestResult.labels.addAll(test.getOptionalLabels())
161167

162168
return allureTestResult
163169
}
164170

171+
private fun Test.isApplicationTest(): Boolean =
172+
configuration.appModuleRegexes.any { it.matches(pkg) }
173+
165174
private fun getHistoryId(test: Test): String =
166175
ResultsUtils.generateMethodSignatureHash(test.clazz, test.method, emptyList())
167176

@@ -192,5 +201,10 @@ class AllureReporter(
192201

193202
private companion object {
194203
private const val MESSAGE_LINES_COUNT = 3
204+
private const val LAYER = "layer"
205+
private const val PLATFORM = "platform"
206+
private const val ANDROID = "Android"
207+
private const val CLIENT_APPLICATION = "Application client"
208+
private const val CLIENT_COMPONENT = "Component client"
195209
}
196210
}

marathon-gradle-plugin/src/main/kotlin/com/malinskiy/marathon/ConfigurationFactory.kt

+1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ internal fun createCommonConfiguration(
2929
testClassRegexes = extensionConfig.testClassRegexes.get().map { it.toRegex() },
3030
ignoreFailureRegexes = extensionConfig.ignoreFailureRegexes.get().map { it.toRegex(RegexOption.DOT_MATCHES_ALL) },
3131
failFastFailureRegexes = extensionConfig.failFastFailureRegexes.get().map { it.toRegex(RegexOption.DOT_MATCHES_ALL) },
32+
appModuleRegexes = extensionConfig.appModuleRegexes.get().map { it.toRegex(RegexOption.DOT_MATCHES_ALL) },
3233
testOutputTimeoutMillis = extensionConfig.testOutputTimeoutMillis.orNull,
3334
noDevicesTimeoutMillis = extensionConfig.noDevicesTimeoutMillis.orNull,
3435
analyticsTracker = MarathonListenerHolder.analyticsTracker,

marathon-gradle-plugin/src/main/kotlin/com/malinskiy/marathon/MarathonExtension.kt

+5
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,11 @@ interface MarathonExtension {
6262
*/
6363
val failFastFailureRegexes: ListProperty<String>
6464

65+
/**
66+
* Application modules, needed for distinguish between application and component tests in Allure
67+
*/
68+
val appModuleRegexes: ListProperty<String>
69+
6570
val uncompletedTestRetryQuota: Property<Int>
6671
val usedStorageThresholdInPercents: Property<Int>
6772
val testOutputTimeoutMillis: Property<Long>

vendor/vendor-android/ddmlib/src/test/kotlin/com/malinskiy/marathon/android/AndroidDeviceTestRunnerSpek.kt

+1
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ class AndroidDeviceTestRunnerSpek : Spek({
6666
excludeSerialRegexes = null,
6767
ignoreFailureRegexes = null,
6868
failFastFailureRegexes = null,
69+
appModuleRegexes = null,
6970
testOutputTimeoutMillis = null,
7071
noDevicesTimeoutMillis = null,
7172
analyticsTracker = null,

vendor/vendor-test/src/main/kotlin/com/malinskiy/marathon/test/factory/ConfigurationFactory.kt

+2
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ class ConfigurationFactory {
4040
var testClassRegexes: Collection<Regex>? = null
4141
var ignoreFailureRegexes: List<Regex>? = null
4242
var failFastFailureRegexes: List<Regex>? = null
43+
var appModuleRegexes: List<Regex>? = null
4344
var testOutputTimeoutMillis: Long? = null
4445
var noDevicesTimeoutMillis: Long? = null
4546
var analyticsTracker: Tracker? = null
@@ -76,6 +77,7 @@ class ConfigurationFactory {
7677
testClassRegexes = testClassRegexes,
7778
ignoreFailureRegexes = ignoreFailureRegexes,
7879
failFastFailureRegexes = failFastFailureRegexes,
80+
appModuleRegexes = appModuleRegexes,
7981
testOutputTimeoutMillis = testOutputTimeoutMillis,
8082
noDevicesTimeoutMillis = noDevicesTimeoutMillis,
8183
analyticsTracker = analyticsTracker,

0 commit comments

Comments
 (0)