Skip to content

Commit ab1920a

Browse files
authored
Merge pull request #892 from MarathonLabs/feature/remote-parser-update
fix(android): support ':' characters in annotation values for remote …
2 parents 6c68772 + 9367eea commit ab1920a

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

buildSrc/src/main/kotlin/Versions.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ object Versions {
66
val coroutinesTest = coroutines
77

88
val androidCommon = "31.2.2"
9-
val adam = "0.5.3"
9+
val adam = "0.5.4"
1010
val dexTestParser = "2.3.4"
1111
val kotlinLogging = "3.0.5"
1212
val logbackClassic = "1.4.14"

vendor/vendor-android/src/main/kotlin/com/malinskiy/marathon/android/adam/event/TestAnnotationParser.kt

+30
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,35 @@ import com.malinskiy.marathon.test.MetaProperty
66
class TestAnnotationParser {
77
fun extractAnnotations(event: TestEnded): List<MetaProperty> {
88
val v2 = event.metrics[METRIC_ANNOTATION_V2]
9+
val v3 = event.metrics[METRIC_ANNOTATION_V3]
910
return when {
11+
v3 != null -> {
12+
val removeSurrounding = v3.removeSurrounding("[", "]")
13+
METRIC_ANNOTATION_V2_REGEX.findAll(removeSurrounding)
14+
.map { it.value.trim() }
15+
.filter { !it.isNullOrEmpty() }
16+
.toList().map { serializedAnnotation ->
17+
val index = serializedAnnotation.indexOfFirst { it == '(' }
18+
val name = serializedAnnotation.substring(0 until index)
19+
var serializedParameters = serializedAnnotation.substring(index).removeSurrounding("(", ")")
20+
21+
val values = mutableListOf<Pair<String, String>>()
22+
while (true) {
23+
val splitPoint = serializedParameters.indexOfFirst { it == 'L' }
24+
if (splitPoint == -1) break
25+
val length = serializedParameters.substring(0 until splitPoint).toIntOrNull() ?: break
26+
serializedParameters = serializedParameters.removeRange(0..splitPoint)
27+
val parameter = serializedParameters.substring(0 until length)
28+
serializedParameters = serializedParameters.removeRange(0 until length)
29+
if (parameter.length > 1 && parameter.contains("=")) {
30+
values.add(Pair(parameter.substringBefore("="), parameter.substringAfter("=")))
31+
}
32+
}
33+
34+
MetaProperty(name = name, values = values.toMap())
35+
}
36+
}
37+
1038
v2 != null -> {
1139
val removeSurrounding = v2.removeSurrounding("[", "]")
1240
METRIC_ANNOTATION_V2_REGEX.findAll(removeSurrounding)
@@ -28,12 +56,14 @@ class TestAnnotationParser {
2856
}
2957
}
3058

59+
3160
else -> emptyList()
3261
}
3362
}
3463

3564
companion object {
3665
private const val METRIC_ANNOTATION_V2 = "com.malinskiy.adam.junit4.android.listener.TestAnnotationProducer.v2"
66+
private const val METRIC_ANNOTATION_V3 = "com.malinskiy.adam.junit4.android.listener.TestAnnotationProducer.v3"
3767
private val METRIC_ANNOTATION_V2_REGEX = "\\p{Graph}+\\([^\\)]*\\)".toRegex()
3868
}
3969
}

0 commit comments

Comments
 (0)