[K/N][Tests] Use GTest patterns for ignored tests

^KT-61259
This commit is contained in:
Vladimir Sukharev
2024-01-29 19:13:13 +01:00
committed by Space Team
parent 1ca79e645a
commit 2276abfb85
5 changed files with 46 additions and 15 deletions
@@ -90,8 +90,12 @@ internal class TestProcessor(val suites: List<TestSuite>, val args: Array<String
private fun String.substringEscaped(range: IntRange) = this.substring(range).let { if (it.isNotEmpty()) Regex.escape(it) else "" }
private fun String.toGTestPatterns() = splitToSequence(':').map { pattern ->
private fun String.fromGTestPatterns(): List<Regex> = splitToSequence(':').map(::fromGTestPattern).toList()
// must be in sync with `fromGTestPattern(String)` in native/native.tests/tests/org/jetbrains/kotlin/konan/test/blackbox/support/runner/TestRun.kt
private fun fromGTestPattern(pattern: String): Regex {
val result = StringBuilder()
result.append("^")
var prevIndex = 0
pattern.forEachIndexed { index, c ->
if (c == '*' || c == '?') {
@@ -101,8 +105,9 @@ internal class TestProcessor(val suites: List<TestSuite>, val args: Array<String
}
}
result.append(pattern.substringEscaped(prevIndex until pattern.length))
return@map result.toString().toRegex()
}.toList()
result.append("$")
return result.toString().toRegex()
}
// region filters
@@ -115,8 +120,8 @@ internal class TestProcessor(val suites: List<TestSuite>, val args: Array<String
throw IllegalArgumentException("Wrong pattern syntax: $filter.")
}
val positivePatterns = filters[0].toGTestPatterns()
val negativePatterns = filters.getOrNull(1)?.toGTestPatterns() ?: emptyList()
val positivePatterns = filters[0].fromGTestPatterns()
val negativePatterns = filters.getOrNull(1)?.fromGTestPatterns() ?: emptyList()
return { testCase ->
positivePatterns.any { testCase.prettyName.matches(it) } &&