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 maxParallelForks = maxParallelTestForks
systemProperty("gradle.integration.tests.gradle.version.filter", gradleVersion) systemProperty("gradle.integration.tests.gradle.version.filter", gradleVersion)
systemProperty("junit.jupiter.extensions.autodetection.enabled", "true")
if (junitTag in requiresKotlinNative) { if (junitTag in requiresKotlinNative) {
applyKotlinNativeFromCurrentBranchIfNeeded() applyKotlinNativeFromCurrentBranchIfNeeded()
} }
@@ -21,6 +21,5 @@ import java.lang.annotation.Target;
@AndroidTestVersions @AndroidTestVersions
@ParameterizedTest(name = "AGP {1} with {0}: {displayName}") @ParameterizedTest(name = "AGP {1} with {0}: {displayName}")
@ArgumentsSource(GradleAndAgpArgumentsProvider.class) @ArgumentsSource(GradleAndAgpArgumentsProvider.class)
@ExtendWith(DisabledIfNoArgumentsProvided.class)
public @interface GradleAndroidTest { public @interface GradleAndroidTest {
} }
@@ -20,6 +20,5 @@ import java.lang.annotation.Target;
@GradleTestVersions @GradleTestVersions
@ParameterizedTest(name = "{0}: {displayName}") @ParameterizedTest(name = "{0}: {displayName}")
@ArgumentsSource(GradleArgumentsProvider.class) @ArgumentsSource(GradleArgumentsProvider.class)
@ExtendWith(DisabledIfNoArgumentsProvided.class)
public @interface GradleTest { public @interface GradleTest {
} }
@@ -21,6 +21,5 @@ import java.lang.annotation.Target;
@JdkVersions @JdkVersions
@ParameterizedTest(name = "{1} with {0}: {displayName}") @ParameterizedTest(name = "{1} with {0}: {displayName}")
@ArgumentsSource(GradleAndJdkArgumentsProvider.class) @ArgumentsSource(GradleAndJdkArgumentsProvider.class)
@ExtendWith(DisabledIfNoArgumentsProvided.class)
public @interface GradleWithJdkTest { public @interface GradleWithJdkTest {
} }
@@ -104,6 +104,5 @@ internal class HierarchicalStructureOptInMigrationArtifactContentMppIT : KGPBase
@GradleTestVersions @GradleTestVersions
@ParameterizedTest(name = "{0} mode {1}: {displayName}") @ParameterizedTest(name = "{0} mode {1}: {displayName}")
@ArgumentsSource(GradleAndHmppModeProvider::class) @ArgumentsSource(GradleAndHmppModeProvider::class)
@ExtendWith(DisabledIfNoArgumentsProvided::class)
annotation class GradleWithHmppModeTest annotation class GradleWithHmppModeTest
} }
@@ -513,7 +513,6 @@ class KotlinSpecificDependenciesIT : KGPBaseTest() {
@GradleTestVersions @GradleTestVersions
@ParameterizedTest(name = "{1} with {0}: {displayName}") @ParameterizedTest(name = "{1} with {0}: {displayName}")
@ArgumentsSource(GradleAndTestFrameworksArgumentsProvider::class) @ArgumentsSource(GradleAndTestFrameworksArgumentsProvider::class)
@ExtendWith(DisabledIfNoArgumentsProvided::class)
fun testFrameworkSelectionJvm( fun testFrameworkSelectionJvm(
gradleVersion: GradleVersion, gradleVersion: GradleVersion,
testFramework: Pair<String, String> testFramework: Pair<String, String>
@@ -537,7 +536,6 @@ class KotlinSpecificDependenciesIT : KGPBaseTest() {
@GradleTestVersions @GradleTestVersions
@ParameterizedTest(name = "{1} with {0}: {displayName}") @ParameterizedTest(name = "{1} with {0}: {displayName}")
@ArgumentsSource(GradleAndTestFrameworksArgumentsProvider::class) @ArgumentsSource(GradleAndTestFrameworksArgumentsProvider::class)
@ExtendWith(DisabledIfNoArgumentsProvided::class)
fun testFrameworkSelectionMppJvm( fun testFrameworkSelectionMppJvm(
gradleVersion: GradleVersion, gradleVersion: GradleVersion,
testFramework: Pair<String, String> testFramework: Pair<String, String>
@@ -562,7 +560,6 @@ class KotlinSpecificDependenciesIT : KGPBaseTest() {
@GradleTestVersions @GradleTestVersions
@ParameterizedTest(name = "{1} with {0}: {displayName}") @ParameterizedTest(name = "{1} with {0}: {displayName}")
@ArgumentsSource(GradleAndTestFrameworksArgumentsProvider::class) @ArgumentsSource(GradleAndTestFrameworksArgumentsProvider::class)
@ExtendWith(DisabledIfNoArgumentsProvided::class)
fun testFrameworkSelectionMppCommon( fun testFrameworkSelectionMppCommon(
gradleVersion: GradleVersion, gradleVersion: GradleVersion,
testFramework: Pair<String, String> testFramework: Pair<String, String>
@@ -238,6 +238,5 @@ internal class MppHighlightingTestDataWithGradleIT : KGPBaseTest() {
@GradleTestVersions @GradleTestVersions
@ParameterizedTest(name = "{0} - {1} - {2} - {3}: {displayName}") @ParameterizedTest(name = "{0} - {1} - {2} - {3}: {displayName}")
@ArgumentsSource(GradleAndMppHighlightingProvider::class) @ArgumentsSource(GradleAndMppHighlightingProvider::class)
@ExtendWith(DisabledIfNoArgumentsProvided::class)
annotation class GradleWithMppHighlightingTest annotation class GradleWithMppHighlightingTest
} }
@@ -24,7 +24,6 @@ class XcodeDirectIntegrationIT : KGPBaseTest() {
@DisplayName("Xcode direct integration") @DisplayName("Xcode direct integration")
@ParameterizedTest(name = "{displayName} with {1}, {0} and isStatic={2}") @ParameterizedTest(name = "{displayName} with {1}, {0} and isStatic={2}")
@ArgumentsSource(XcodeArgumentsProvider::class) @ArgumentsSource(XcodeArgumentsProvider::class)
@ExtendWith(DisabledIfNoArgumentsProvided::class)
fun test( fun test(
gradleVersion: GradleVersion, gradleVersion: GradleVersion,
iosApp: String, 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 { class DisabledIfNoArgumentsProvided : ExecutionCondition {
override fun evaluateExecutionCondition(context: ExtensionContext): ConditionEvaluationResult { 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") val gradleVersionFilterParameter = context.getConfigurationParameter("gradle.integration.tests.gradle.version.filter")
if (!gradleVersionFilterParameter.isPresent) if (!gradleVersionFilterParameter.isPresent) {
return ConditionEvaluationResult.enabled("No Gradle version filter provided") return ConditionEvaluationResult.enabled("No Gradle version filter provided")
}
val argumentProviders = AnnotationUtils.findRepeatableAnnotations(context.requiredTestMethod, ArgumentsSource::class.java) val argumentProviders = AnnotationUtils.findRepeatableAnnotations(context.requiredTestMethod, ArgumentsSource::class.java)
.map(ArgumentsSource::value) .map(ArgumentsSource::value)
@@ -0,0 +1 @@
org.jetbrains.kotlin.gradle.testbase.DisabledIfNoArgumentsProvided