From a9ff030c73fdfcb7ced051ad49450a24dea05212 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Mon, 29 Mar 2021 11:37:11 +0300 Subject: [PATCH] [Test] Add ability to configure tests by negative test location regex --- .../test/builders/TestConfigurationBuilder.kt | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/builders/TestConfigurationBuilder.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/builders/TestConfigurationBuilder.kt index 8220e3d0c7d..ae7943b541b 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/builders/TestConfigurationBuilder.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/builders/TestConfigurationBuilder.kt @@ -39,7 +39,8 @@ class TestConfigurationBuilder { private val directives: MutableList = mutableListOf() val defaultRegisteredDirectivesBuilder: RegisteredDirectivesBuilder = RegisteredDirectivesBuilder() - private val configurationsByTestDataCondition: MutableList Unit>> = mutableListOf() + private val configurationsByPositiveTestDataCondition: MutableList Unit>> = mutableListOf() + private val configurationsByNegativeTestDataCondition: MutableList Unit>> = mutableListOf() private val additionalServices: MutableList = mutableListOf() private var compilerConfigurationProvider: ((Disposable, List) -> CompilerConfigurationProvider)? = null @@ -59,6 +60,11 @@ class TestConfigurationBuilder { forTestsMatching(regex, configuration) } + fun forTestsNotMatching(pattern: String, configuration: TestConfigurationBuilder.() -> Unit) { + val regex = pattern.toMatchingRegexString().toRegex() + forTestsNotMatching(regex, configuration) + } + infix fun String.or(other: String): String { return """$this|$other""" } @@ -66,7 +72,11 @@ class TestConfigurationBuilder { private fun String.toMatchingRegexString(): String = """^${replace("*", ".*")}$""" fun forTestsMatching(pattern: Regex, configuration: TestConfigurationBuilder.() -> Unit) { - configurationsByTestDataCondition += pattern to configuration + configurationsByPositiveTestDataCondition += pattern to configuration + } + + fun forTestsNotMatching(pattern: Regex, configuration: TestConfigurationBuilder.() -> Unit) { + configurationsByNegativeTestDataCondition += pattern to configuration } inline fun globalDefaults(init: DefaultsProviderBuilder.() -> Unit) { @@ -148,11 +158,16 @@ class TestConfigurationBuilder { } fun build(testDataPath: String): TestConfiguration { - for ((regex, configuration) in configurationsByTestDataCondition) { + for ((regex, configuration) in configurationsByPositiveTestDataCondition) { if (regex.matches(testDataPath)) { this.configuration() } } + for ((regex, configuration) in configurationsByNegativeTestDataCondition) { + if (!regex.matches(testDataPath)) { + this.configuration() + } + } return TestConfigurationImpl( testInfo, defaultsProviderBuilder.build(),