diff --git a/build.gradle.kts b/build.gradle.kts index 70998a0407fc..6bd224f787eb 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -18,6 +18,8 @@ extra["license"] = License( val mavenizedProjects = listOf( projects.junitStart, projects.junitPlatformCommons, + projects.junitPlatformConfigurationApi, + projects.junitPlatformConfigurationProcessor, projects.junitPlatformConsole, projects.junitPlatformConsoleStandalone, projects.junitPlatformEngine, diff --git a/junit-jupiter-api/junit-jupiter-api.gradle.kts b/junit-jupiter-api/junit-jupiter-api.gradle.kts index 4fe91a3dcf42..c52c9cf784e6 100644 --- a/junit-jupiter-api/junit-jupiter-api.gradle.kts +++ b/junit-jupiter-api/junit-jupiter-api.gradle.kts @@ -9,6 +9,8 @@ plugins { description = "JUnit Jupiter API" dependencies { + annotationProcessor(projects.junitPlatformConfigurationProcessor) + api(platform(projects.junitBom)) api(libs.opentest4j) api(projects.junitPlatformCommons) @@ -17,6 +19,7 @@ dependencies { compileOnlyApi(libs.jspecify) compileOnly(kotlin("stdlib")) + compileOnly(projects.junitPlatformConfigurationApi) testFixturesImplementation(libs.assertj) testFixturesImplementation(testFixtures(projects.junitPlatformCommons)) @@ -35,7 +38,7 @@ eclipseConventions { tasks { compileJava { - options.compilerArgs.add("-Xlint:-module") // due to qualified exports + options.compilerArgs.add("-Xlint:-module,-processing") // -module: due to qualified exports, -processing: not all annotations need to be processed } jar { bundle { diff --git a/junit-jupiter-api/src/main/java/module-info.java b/junit-jupiter-api/src/main/java/module-info.java index eb0df11c066b..583a9701aa62 100644 --- a/junit-jupiter-api/src/main/java/module-info.java +++ b/junit-jupiter-api/src/main/java/module-info.java @@ -21,6 +21,7 @@ requires transitive org.junit.platform.commons; requires transitive org.opentest4j; + requires static org.junit.platform.configuration.api; requires static kotlin.stdlib; exports org.junit.jupiter.api; diff --git a/junit-jupiter-api/src/main/java/org/junit/jupiter/api/Constants.java b/junit-jupiter-api/src/main/java/org/junit/jupiter/api/Constants.java index f1c38975ed51..54ac6abffeef 100644 --- a/junit-jupiter-api/src/main/java/org/junit/jupiter/api/Constants.java +++ b/junit-jupiter-api/src/main/java/org/junit/jupiter/api/Constants.java @@ -20,6 +20,7 @@ import org.junit.jupiter.api.io.CleanupMode; import org.junit.jupiter.api.io.TempDir; import org.junit.jupiter.api.parallel.Execution; +import org.junit.platform.configuration.api.ConfigurationProperty; /** * Collection of configuration constants for the Jupiter test engine. @@ -64,6 +65,7 @@ public final class Constants { * *
Note: A class that matches both an inclusion and exclusion pattern will be excluded. */ + @ConfigurationProperty public static final String EXTENSIONS_AUTODETECTION_INCLUDE_PROPERTY_NAME = "junit.jupiter.extensions.autodetection.include"; /** diff --git a/junit-platform-configuration-api/junit-platform-configuration-api.gradle.kts b/junit-platform-configuration-api/junit-platform-configuration-api.gradle.kts new file mode 100644 index 000000000000..fc03f296f01c --- /dev/null +++ b/junit-platform-configuration-api/junit-platform-configuration-api.gradle.kts @@ -0,0 +1,17 @@ +plugins { + id("junitbuild.java-library-conventions") +} + +description = "JUnit Platform Configuration API" + +dependencies { + api(platform(projects.junitBom)) + api(projects.junitPlatformCommons) + + compileOnlyApi(libs.apiguardian) + compileOnlyApi(libs.jspecify) +} + +backwardCompatibilityChecks { + enabled = false // not yet released +} diff --git a/junit-platform-configuration-api/src/main/java/module-info.java b/junit-platform-configuration-api/src/main/java/module-info.java new file mode 100644 index 000000000000..dfa9067462b7 --- /dev/null +++ b/junit-platform-configuration-api/src/main/java/module-info.java @@ -0,0 +1,16 @@ +/* + * Copyright 2015-2026 the original author or authors. + * + * All rights reserved. This program and the accompanying materials are + * made available under the terms of the Eclipse Public License v2.0 which + * accompanies this distribution and is available at + * + * https://www.eclipse.org/legal/epl-v20.html + */ + +module org.junit.platform.configuration.api { + requires static transitive org.jspecify; + requires static transitive org.apiguardian.api; + + exports org.junit.platform.configuration.api; +} diff --git a/junit-platform-configuration-api/src/main/java/org/junit/platform/configuration/api/ConfigurationProperty.java b/junit-platform-configuration-api/src/main/java/org/junit/platform/configuration/api/ConfigurationProperty.java new file mode 100644 index 000000000000..bb0aed569f76 --- /dev/null +++ b/junit-platform-configuration-api/src/main/java/org/junit/platform/configuration/api/ConfigurationProperty.java @@ -0,0 +1,24 @@ +/* + * Copyright 2026 the original author or authors. + * + * All rights reserved. This program and the accompanying materials are + * made available under the terms of the Eclipse Public License v2.0 which + * accompanies this distribution and is available at + * + * https://www.eclipse.org/legal/epl-v20.html + */ + +package org.junit.platform.configuration.api; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import org.apiguardian.api.API; + +@API(status = API.Status.EXPERIMENTAL) +@Retention(RetentionPolicy.SOURCE) +@Target(ElementType.FIELD) +public @interface ConfigurationProperty { +} diff --git a/junit-platform-configuration-api/src/main/java/org/junit/platform/configuration/api/package-info.java b/junit-platform-configuration-api/src/main/java/org/junit/platform/configuration/api/package-info.java new file mode 100644 index 000000000000..4c97e5c75569 --- /dev/null +++ b/junit-platform-configuration-api/src/main/java/org/junit/platform/configuration/api/package-info.java @@ -0,0 +1,14 @@ +/* + * Copyright 2012 the original author or authors. + * + * All rights reserved. This program and the accompanying materials are + * made available under the terms of the Eclipse Public License v2.0 which + * accompanies this distribution and is available at + * + * https://www.eclipse.org/legal/epl-v20.html + */ + +@NullMarked +package org.junit.platform.configuration.api; + +import org.jspecify.annotations.NullMarked; diff --git a/junit-platform-configuration-processor/junit-platform-configuration-processor.gradle.kts b/junit-platform-configuration-processor/junit-platform-configuration-processor.gradle.kts new file mode 100644 index 000000000000..8bbc6735b57d --- /dev/null +++ b/junit-platform-configuration-processor/junit-platform-configuration-processor.gradle.kts @@ -0,0 +1,18 @@ +plugins { + id("junitbuild.java-library-conventions") +} + +description = "JUnit Platform Configuration Processor" + +dependencies { + api(platform(projects.junitBom)) + api(projects.junitPlatformConfigurationApi) + api(projects.junitPlatformCommons) + + compileOnlyApi(libs.apiguardian) + compileOnlyApi(libs.jspecify) +} + +backwardCompatibilityChecks { + enabled = false // not yet released +} diff --git a/junit-platform-configuration-processor/src/main/java/module-info.java b/junit-platform-configuration-processor/src/main/java/module-info.java new file mode 100644 index 000000000000..1c134963564b --- /dev/null +++ b/junit-platform-configuration-processor/src/main/java/module-info.java @@ -0,0 +1,19 @@ +/* + * Copyright 2015-2026 the original author or authors. + * + * All rights reserved. This program and the accompanying materials are + * made available under the terms of the Eclipse Public License v2.0 which + * accompanies this distribution and is available at + * + * https://www.eclipse.org/legal/epl-v20.html + */ + +module org.junit.platform.configuration.processor { + requires static transitive org.jspecify; + requires static transitive org.apiguardian.api; + + requires java.compiler; + requires org.junit.platform.configuration.api; + + provides javax.annotation.processing.Processor with org.junit.platform.configuration.processor.ConfigurationMetadataAnnotationProcessor; +} diff --git a/junit-platform-configuration-processor/src/main/java/org/junit/platform/configuration/processor/ConfigurationMetadataAnnotationProcessor.java b/junit-platform-configuration-processor/src/main/java/org/junit/platform/configuration/processor/ConfigurationMetadataAnnotationProcessor.java new file mode 100644 index 000000000000..3725a709d25d --- /dev/null +++ b/junit-platform-configuration-processor/src/main/java/org/junit/platform/configuration/processor/ConfigurationMetadataAnnotationProcessor.java @@ -0,0 +1,59 @@ +/* + * Copyright 2026 the original author or authors. + * + * All rights reserved. This program and the accompanying materials are + * made available under the terms of the Eclipse Public License v2.0 which + * accompanies this distribution and is available at + * + * https://www.eclipse.org/legal/epl-v20.html + */ + +package org.junit.platform.configuration.processor; + +import static java.util.Objects.requireNonNull; + +import java.nio.charset.StandardCharsets; +import java.util.Set; + +import javax.annotation.processing.AbstractProcessor; +import javax.annotation.processing.ProcessingEnvironment; +import javax.annotation.processing.RoundEnvironment; +import javax.annotation.processing.SupportedAnnotationTypes; +import javax.annotation.processing.SupportedSourceVersion; +import javax.lang.model.SourceVersion; +import javax.lang.model.element.TypeElement; +import javax.tools.StandardLocation; + +import org.apiguardian.api.API; +import org.jspecify.annotations.Nullable; + +@API(status = API.Status.EXPERIMENTAL) +@SupportedSourceVersion(SourceVersion.RELEASE_17) +@SupportedAnnotationTypes("org.junit.platform.configuration.api.ConfigurationProperty") +public class ConfigurationMetadataAnnotationProcessor extends AbstractProcessor { + private static final String METADATA_PATH = "META-INF/junit-platform-configuration-metadata.json"; + private @Nullable ProcessingEnvironment environment; + + @Override + public synchronized void init(ProcessingEnvironment environment) { + super.init(environment); + this.environment = environment; + } + + @Override + public boolean process(Set extends TypeElement> annotations, RoundEnvironment roundEnv) { + if (roundEnv.processingOver()) { + try { + var resource = requireNonNull(environment).getFiler().createResource(StandardLocation.CLASS_OUTPUT, "", + METADATA_PATH); + try (var out = resource.openOutputStream()) { + out.write("{}".getBytes(StandardCharsets.UTF_8)); + } + } + catch (Exception ex) { + throw new IllegalStateException("Failed to write metadata", ex); + } + } + return false; + } +} diff --git a/junit-platform-configuration-processor/src/main/java/org/junit/platform/configuration/processor/package-info.java b/junit-platform-configuration-processor/src/main/java/org/junit/platform/configuration/processor/package-info.java new file mode 100644 index 000000000000..77966dcca659 --- /dev/null +++ b/junit-platform-configuration-processor/src/main/java/org/junit/platform/configuration/processor/package-info.java @@ -0,0 +1,14 @@ +/* + * Copyright 2012 the original author or authors. + * + * All rights reserved. This program and the accompanying materials are + * made available under the terms of the Eclipse Public License v2.0 which + * accompanies this distribution and is available at + * + * https://www.eclipse.org/legal/epl-v20.html + */ + +@NullMarked +package org.junit.platform.configuration.processor; + +import org.jspecify.annotations.NullMarked; diff --git a/junit-platform-configuration-processor/src/main/resources/META-INF/gradle/incremental.annotation.processors b/junit-platform-configuration-processor/src/main/resources/META-INF/gradle/incremental.annotation.processors new file mode 100644 index 000000000000..3019ff07037d --- /dev/null +++ b/junit-platform-configuration-processor/src/main/resources/META-INF/gradle/incremental.annotation.processors @@ -0,0 +1 @@ +org.junit.platform.configuration.processor.ConfigurationMetadataAnnotationProcessor,aggregating diff --git a/junit-platform-configuration-processor/src/main/resources/META-INF/services/javax.annotation.processing.Processor b/junit-platform-configuration-processor/src/main/resources/META-INF/services/javax.annotation.processing.Processor new file mode 100644 index 000000000000..c034bf8213af --- /dev/null +++ b/junit-platform-configuration-processor/src/main/resources/META-INF/services/javax.annotation.processing.Processor @@ -0,0 +1 @@ +org.junit.platform.configuration.processor.ConfigurationMetadataAnnotationProcessor diff --git a/junit-platform-console-standalone/junit-platform-console-standalone.gradle.kts b/junit-platform-console-standalone/junit-platform-console-standalone.gradle.kts index c0bfd2391dff..05d127a64834 100644 --- a/junit-platform-console-standalone/junit-platform-console-standalone.gradle.kts +++ b/junit-platform-console-standalone/junit-platform-console-standalone.gradle.kts @@ -58,6 +58,8 @@ tasks { // https://github.com/junit-team/junit-framework/issues/2557 // exclude compiled module declarations from any source (e.g. /*, /META-INF/versions/N/*) exclude("**/module-info.class") + // TODO: merge meta data files? + exclude("META-INF/junit-platform-configuration-metadata.json") // https://github.com/junit-team/junit-framework/issues/761 // prevent duplicates, add 3rd-party licenses explicitly exclude("**/COPYRIGHT*") diff --git a/junit-platform-launcher/junit-platform-launcher.gradle.kts b/junit-platform-launcher/junit-platform-launcher.gradle.kts index 00e431dead15..046bd921df5a 100644 --- a/junit-platform-launcher/junit-platform-launcher.gradle.kts +++ b/junit-platform-launcher/junit-platform-launcher.gradle.kts @@ -6,12 +6,16 @@ plugins { description = "JUnit Platform Launcher" dependencies { + annotationProcessor(projects.junitPlatformConfigurationProcessor) + api(platform(projects.junitBom)) api(projects.junitPlatformEngine) compileOnlyApi(libs.apiguardian) compileOnlyApi(libs.jspecify) + compileOnly(projects.junitPlatformConfigurationApi) + osgiVerification(projects.junitJupiterEngine) } @@ -20,6 +24,9 @@ javadocConventions { } tasks { + compileJava { + options.compilerArgs.add("-Xlint:-processing") // -processing: not all annotations need to be processed + } jar { bundle { bnd(""" diff --git a/junit-platform-launcher/src/main/java/module-info.java b/junit-platform-launcher/src/main/java/module-info.java index 466aa808fc1c..93c1672cfbf1 100644 --- a/junit-platform-launcher/src/main/java/module-info.java +++ b/junit-platform-launcher/src/main/java/module-info.java @@ -25,6 +25,8 @@ requires static transitive org.apiguardian.api; requires static transitive org.jspecify; + + requires static org.junit.platform.configuration.api; requires static jdk.jfr; requires transitive java.logging; diff --git a/junit-platform-launcher/src/main/java/org/junit/platform/launcher/LauncherConstants.java b/junit-platform-launcher/src/main/java/org/junit/platform/launcher/LauncherConstants.java index de1cfc719f78..c7aec3a8e2a1 100644 --- a/junit-platform-launcher/src/main/java/org/junit/platform/launcher/LauncherConstants.java +++ b/junit-platform-launcher/src/main/java/org/junit/platform/launcher/LauncherConstants.java @@ -16,6 +16,7 @@ import org.apiguardian.api.API; import org.junit.platform.commons.util.ClassNamePatternFilterUtils; +import org.junit.platform.configuration.api.ConfigurationProperty; import org.junit.platform.engine.EngineDiscoveryRequest; import org.junit.platform.engine.TestDescriptor; import org.junit.platform.engine.reporting.ReportEntry; @@ -44,6 +45,7 @@ public class LauncherConstants { * @see ReportEntry * @see TestExecutionListener#reportingEntryPublished(TestIdentifier, ReportEntry) */ + @ConfigurationProperty public static final String CAPTURE_STDOUT_PROPERTY_NAME = "junit.platform.output.capture.stdout"; /** diff --git a/junit-platform-launcher/src/main/java/org/junit/platform/launcher/core/ClasspathAlignmentChecker.java b/junit-platform-launcher/src/main/java/org/junit/platform/launcher/core/ClasspathAlignmentChecker.java index 4ddc74c8128c..14efcc0ada2f 100644 --- a/junit-platform-launcher/src/main/java/org/junit/platform/launcher/core/ClasspathAlignmentChecker.java +++ b/junit-platform-launcher/src/main/java/org/junit/platform/launcher/core/ClasspathAlignmentChecker.java @@ -37,6 +37,8 @@ class ClasspathAlignmentChecker { "org.junit.jupiter.params", // "org.junit.platform.commons", // "org.junit.platform.console", // + "org.junit.platform.configuration.api", // + "org.junit.platform.configuration.processor", // "org.junit.platform.engine", // "org.junit.platform.launcher", // "org.junit.platform.reporting", // diff --git a/junit-vintage-engine/junit-vintage-engine.gradle.kts b/junit-vintage-engine/junit-vintage-engine.gradle.kts index d8b3f7cc3b22..315dbd526f42 100644 --- a/junit-vintage-engine/junit-vintage-engine.gradle.kts +++ b/junit-vintage-engine/junit-vintage-engine.gradle.kts @@ -9,6 +9,8 @@ plugins { description = "JUnit Vintage Engine" dependencies { + annotationProcessor(projects.junitPlatformConfigurationProcessor) + api(platform(projects.junitBom)) api(projects.junitPlatformEngine) api(libs.junit4) @@ -16,6 +18,8 @@ dependencies { compileOnlyApi(libs.apiguardian) compileOnlyApi(libs.jspecify) + compileOnly(projects.junitPlatformConfigurationApi) + testFixturesApi(platform(libs.groovy2.bom)) testFixturesApi(libs.spock1) testFixturesImplementation(projects.junitPlatformSuiteApi) @@ -33,7 +37,7 @@ dependencies { tasks { compileJava { - options.compilerArgs.add("-Xlint:-requires-automatic") // JUnit 4 + options.compilerArgs.add("-Xlint:-requires-automatic,-processing") // -requires-automatic: JUnit 4, -module: due to qualified exports, -processing: not all annotations need to be processed } compileTestFixturesGroovy { javaLauncher = project.javaToolchains.launcherFor { diff --git a/junit-vintage-engine/src/main/java/module-info.java b/junit-vintage-engine/src/main/java/module-info.java index 336418b4cf0a..eecadbee0850 100644 --- a/junit-vintage-engine/src/main/java/module-info.java +++ b/junit-vintage-engine/src/main/java/module-info.java @@ -20,6 +20,7 @@ module org.junit.vintage.engine { requires static org.apiguardian.api; + requires static org.junit.platform.configuration.api; requires static transitive org.jspecify; requires junit; // 4 diff --git a/junit-vintage-engine/src/main/java/org/junit/vintage/engine/Constants.java b/junit-vintage-engine/src/main/java/org/junit/vintage/engine/Constants.java index 2c7da30e392a..a6e5c44bf01c 100644 --- a/junit-vintage-engine/src/main/java/org/junit/vintage/engine/Constants.java +++ b/junit-vintage-engine/src/main/java/org/junit/vintage/engine/Constants.java @@ -14,6 +14,7 @@ import static org.apiguardian.api.API.Status.MAINTAINED; import org.apiguardian.api.API; +import org.junit.platform.configuration.api.ConfigurationProperty; /** * Collection of constants related to the {@link VintageTestEngine}. @@ -34,6 +35,7 @@ public final class Constants { * @since 5.12 */ @API(status = MAINTAINED, since = "5.13.3") + @ConfigurationProperty public static final String PARALLEL_EXECUTION_ENABLED = "junit.vintage.execution.parallel.enabled"; /** diff --git a/platform-tooling-support-tests/projects/jar-describe-module/junit-jupiter-api.expected.txt b/platform-tooling-support-tests/projects/jar-describe-module/junit-jupiter-api.expected.txt index 50e4a7c4f920..856a65ab6108 100644 --- a/platform-tooling-support-tests/projects/jar-describe-module/junit-jupiter-api.expected.txt +++ b/platform-tooling-support-tests/projects/jar-describe-module/junit-jupiter-api.expected.txt @@ -12,6 +12,7 @@ requires kotlin.stdlib static requires org.apiguardian.api static transitive requires org.jspecify static transitive requires org.junit.platform.commons transitive +requires org.junit.platform.configuration.api static requires org.opentest4j transitive qualified exports org.junit.jupiter.api.timeout to org.junit.jupiter.engine qualified opens org.junit.jupiter.api.condition to org.junit.platform.commons diff --git a/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-configuration-api.expected.txt b/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-configuration-api.expected.txt new file mode 100644 index 000000000000..34741f806073 --- /dev/null +++ b/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-configuration-api.expected.txt @@ -0,0 +1,5 @@ +org.junit.platform.configuration.api@${version} jar:file:.+/junit-platform-configuration-api-\d.+\.jar..module-info\.class +exports org.junit.platform.configuration.api +requires java.base mandated +requires org.apiguardian.api static transitive +requires org.jspecify static transitive \ No newline at end of file diff --git a/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-configuration-processor.expected.txt b/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-configuration-processor.expected.txt new file mode 100644 index 000000000000..c5d5087cbe64 --- /dev/null +++ b/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-configuration-processor.expected.txt @@ -0,0 +1,8 @@ +org.junit.platform.configuration.processor@${version} jar:file:.+/junit-platform-configuration-processor-\d.+\.jar..module-info\.class +requires java.base mandated +requires java.compiler +requires org.apiguardian.api static transitive +requires org.jspecify static transitive +requires org.junit.platform.configuration.api +provides javax.annotation.processing.Processor with org.junit.platform.configuration.processor.ConfigurationMetadataAnnotationProcessor +contains org.junit.platform.configuration.processor \ No newline at end of file diff --git a/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-launcher.expected.txt b/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-launcher.expected.txt index 3bf55cd46f61..1253a982bf66 100644 --- a/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-launcher.expected.txt +++ b/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-launcher.expected.txt @@ -9,6 +9,7 @@ requires jdk.jfr static requires org.apiguardian.api static transitive requires org.jspecify static transitive requires org.junit.platform.commons transitive +requires org.junit.platform.configuration.api static requires org.junit.platform.engine transitive uses org.junit.platform.engine.TestEngine uses org.junit.platform.launcher.LauncherDiscoveryListener @@ -16,4 +17,4 @@ uses org.junit.platform.launcher.LauncherInterceptor uses org.junit.platform.launcher.LauncherSessionListener uses org.junit.platform.launcher.PostDiscoveryFilter uses org.junit.platform.launcher.TestExecutionListener -provides org.junit.platform.launcher.TestExecutionListener with org.junit.platform.launcher.listeners.UniqueIdTrackingListener +provides org.junit.platform.launcher.TestExecutionListener with org.junit.platform.launcher.listeners.UniqueIdTrackingListener \ No newline at end of file diff --git a/platform-tooling-support-tests/projects/jar-describe-module/junit-vintage-engine.expected.txt b/platform-tooling-support-tests/projects/jar-describe-module/junit-vintage-engine.expected.txt index 8d3bf8d6650f..ce57bcbfc2e2 100644 --- a/platform-tooling-support-tests/projects/jar-describe-module/junit-vintage-engine.expected.txt +++ b/platform-tooling-support-tests/projects/jar-describe-module/junit-vintage-engine.expected.txt @@ -3,6 +3,7 @@ requires java.base mandated requires junit requires org.apiguardian.api static requires org.jspecify static transitive +requires org.junit.platform.configuration.api static requires org.junit.platform.engine provides org.junit.platform.engine.TestEngine with org.junit.vintage.engine.VintageTestEngine contains org.junit.vintage.engine diff --git a/platform-tooling-support-tests/src/test/java/platform/tooling/support/HelperTests.java b/platform-tooling-support-tests/src/test/java/platform/tooling/support/HelperTests.java index 54ad44834707..9a6ffdb0bb0c 100644 --- a/platform-tooling-support-tests/src/test/java/platform/tooling/support/HelperTests.java +++ b/platform-tooling-support-tests/src/test/java/platform/tooling/support/HelperTests.java @@ -38,6 +38,8 @@ void loadModuleDirectoryNames() { "junit-jupiter-params", // "junit-start", // "junit-platform-commons", // + "junit-platform-configuration-api", // + "junit-platform-configuration-processor", // "junit-platform-console", // "junit-platform-engine", // "junit-platform-launcher", //