Build: Use junit auto detection for DisabledIfNoArgumentsProvided

#KTI-1596
This commit is contained in:
Vyacheslav Gerasimov
2024-03-05 11:37:59 +01:00
committed by Space Team
parent 424a5055e2
commit 679e6f0504
10 changed files with 13 additions and 10 deletions
@@ -306,6 +306,7 @@ junitTags.forEach { junitTag ->
maxParallelForks = maxParallelTestForks
systemProperty("gradle.integration.tests.gradle.version.filter", gradleVersion)
systemProperty("junit.jupiter.extensions.autodetection.enabled", "true")
if (junitTag in requiresKotlinNative) {
applyKotlinNativeFromCurrentBranchIfNeeded()
}
@@ -21,6 +21,5 @@ import java.lang.annotation.Target;
@AndroidTestVersions
@ParameterizedTest(name = "AGP {1} with {0}: {displayName}")
@ArgumentsSource(GradleAndAgpArgumentsProvider.class)
@ExtendWith(DisabledIfNoArgumentsProvided.class)
public @interface GradleAndroidTest {
}
@@ -20,6 +20,5 @@ import java.lang.annotation.Target;
@GradleTestVersions
@ParameterizedTest(name = "{0}: {displayName}")
@ArgumentsSource(GradleArgumentsProvider.class)
@ExtendWith(DisabledIfNoArgumentsProvided.class)
public @interface GradleTest {
}
@@ -21,6 +21,5 @@ import java.lang.annotation.Target;
@JdkVersions
@ParameterizedTest(name = "{1} with {0}: {displayName}")
@ArgumentsSource(GradleAndJdkArgumentsProvider.class)
@ExtendWith(DisabledIfNoArgumentsProvided.class)
public @interface GradleWithJdkTest {
}
@@ -104,6 +104,5 @@ internal class HierarchicalStructureOptInMigrationArtifactContentMppIT : KGPBase
@GradleTestVersions
@ParameterizedTest(name = "{0} mode {1}: {displayName}")
@ArgumentsSource(GradleAndHmppModeProvider::class)
@ExtendWith(DisabledIfNoArgumentsProvided::class)
annotation class GradleWithHmppModeTest
}
@@ -513,7 +513,6 @@ class KotlinSpecificDependenciesIT : KGPBaseTest() {
@GradleTestVersions
@ParameterizedTest(name = "{1} with {0}: {displayName}")
@ArgumentsSource(GradleAndTestFrameworksArgumentsProvider::class)
@ExtendWith(DisabledIfNoArgumentsProvided::class)
fun testFrameworkSelectionJvm(
gradleVersion: GradleVersion,
testFramework: Pair<String, String>
@@ -537,7 +536,6 @@ class KotlinSpecificDependenciesIT : KGPBaseTest() {
@GradleTestVersions
@ParameterizedTest(name = "{1} with {0}: {displayName}")
@ArgumentsSource(GradleAndTestFrameworksArgumentsProvider::class)
@ExtendWith(DisabledIfNoArgumentsProvided::class)
fun testFrameworkSelectionMppJvm(
gradleVersion: GradleVersion,
testFramework: Pair<String, String>
@@ -562,7 +560,6 @@ class KotlinSpecificDependenciesIT : KGPBaseTest() {
@GradleTestVersions
@ParameterizedTest(name = "{1} with {0}: {displayName}")
@ArgumentsSource(GradleAndTestFrameworksArgumentsProvider::class)
@ExtendWith(DisabledIfNoArgumentsProvided::class)
fun testFrameworkSelectionMppCommon(
gradleVersion: GradleVersion,
testFramework: Pair<String, String>
@@ -238,6 +238,5 @@ internal class MppHighlightingTestDataWithGradleIT : KGPBaseTest() {
@GradleTestVersions
@ParameterizedTest(name = "{0} - {1} - {2} - {3}: {displayName}")
@ArgumentsSource(GradleAndMppHighlightingProvider::class)
@ExtendWith(DisabledIfNoArgumentsProvided::class)
annotation class GradleWithMppHighlightingTest
}
@@ -24,7 +24,6 @@ class XcodeDirectIntegrationIT : KGPBaseTest() {
@DisplayName("Xcode direct integration")
@ParameterizedTest(name = "{displayName} with {1}, {0} and isStatic={2}")
@ArgumentsSource(XcodeArgumentsProvider::class)
@ExtendWith(DisabledIfNoArgumentsProvided::class)
fun test(
gradleVersion: GradleVersion,
iosApp: String,
@@ -220,11 +220,21 @@ class GradleAndAgpArgumentsProvider : GradleArgumentsProvider() {
)
}
/**
* Disables a parametrized test if any of argument providers doesn't have arguments to provide.
* When gradle.integration.tests.gradle.version.filter property is used, all arguments of a GradleArgumentsProvider may be filtered out.
* If such a test is not disabled, it will fail with initialization error.
*/
class DisabledIfNoArgumentsProvided : ExecutionCondition {
override fun evaluateExecutionCondition(context: ExtensionContext): ConditionEvaluationResult {
if (!context.testMethod.isPresent) {
return ConditionEvaluationResult.enabled("The execution condition is only applicable to test methods")
}
val gradleVersionFilterParameter = context.getConfigurationParameter("gradle.integration.tests.gradle.version.filter")
if (!gradleVersionFilterParameter.isPresent)
if (!gradleVersionFilterParameter.isPresent) {
return ConditionEvaluationResult.enabled("No Gradle version filter provided")
}
val argumentProviders = AnnotationUtils.findRepeatableAnnotations(context.requiredTestMethod, ArgumentsSource::class.java)
.map(ArgumentsSource::value)
@@ -0,0 +1 @@
org.jetbrains.kotlin.gradle.testbase.DisabledIfNoArgumentsProvided