From e7265c9981faa12e0178cb11716afea82b1a5cbb Mon Sep 17 00:00:00 2001 From: Marc Philipp Date: Tue, 24 Jun 2025 13:05:59 +0200 Subject: [PATCH 01/10] Configure Maven Central snapshots repo --- junit-jupiter-extensions/build.gradle | 7 +++++++ junit-jupiter-starter-gradle-groovy/build.gradle | 7 +++++++ .../build.gradle.kts | 6 ++++++ junit-jupiter-starter-gradle/build.gradle | 7 +++++++ junit-jupiter-starter-maven-kotlin/pom.xml | 13 +++++++++++++ junit-jupiter-starter-maven/pom.xml | 13 +++++++++++++ junit-jupiter-starter-sbt/build.sbt | 3 ++- junit-migration-gradle/build.gradle | 7 +++++++ junit-migration-maven/pom.xml | 13 +++++++++++++ junit-multiple-engines/build.gradle.kts | 7 +++++++ 10 files changed, 82 insertions(+), 1 deletion(-) diff --git a/junit-jupiter-extensions/build.gradle b/junit-jupiter-extensions/build.gradle index 53d461dc..37da8b0b 100644 --- a/junit-jupiter-extensions/build.gradle +++ b/junit-jupiter-extensions/build.gradle @@ -6,6 +6,13 @@ plugins { repositories { mavenCentral() + maven { + url = "https://central.sonatype.com/repository/maven-snapshots" + mavenContent { + snapshotsOnly() + includeGroupByRegex("org\\.junit.*") + } + } } version = '1.0.0-SNAPSHOT' diff --git a/junit-jupiter-starter-gradle-groovy/build.gradle b/junit-jupiter-starter-gradle-groovy/build.gradle index 524b7ebd..95774a88 100644 --- a/junit-jupiter-starter-gradle-groovy/build.gradle +++ b/junit-jupiter-starter-gradle-groovy/build.gradle @@ -6,6 +6,13 @@ plugins { repositories { mavenCentral() + maven { + url = "https://central.sonatype.com/repository/maven-snapshots" + mavenContent { + snapshotsOnly() + includeGroupByRegex("org\\.junit.*") + } + } } dependencies { diff --git a/junit-jupiter-starter-gradle-kotlin/build.gradle.kts b/junit-jupiter-starter-gradle-kotlin/build.gradle.kts index ffd5868d..67b01c67 100644 --- a/junit-jupiter-starter-gradle-kotlin/build.gradle.kts +++ b/junit-jupiter-starter-gradle-kotlin/build.gradle.kts @@ -7,6 +7,12 @@ plugins { repositories { mavenCentral() + maven(url = "https://central.sonatype.com/repository/maven-snapshots") { + mavenContent { + snapshotsOnly() + includeGroupByRegex("org\\.junit.*") + } + } } dependencies { diff --git a/junit-jupiter-starter-gradle/build.gradle b/junit-jupiter-starter-gradle/build.gradle index abb7cc6d..c504b298 100644 --- a/junit-jupiter-starter-gradle/build.gradle +++ b/junit-jupiter-starter-gradle/build.gradle @@ -6,6 +6,13 @@ plugins { repositories { mavenCentral() + maven { + url = "https://central.sonatype.com/repository/maven-snapshots" + mavenContent { + snapshotsOnly() + includeGroupByRegex("org\\.junit.*") + } + } } dependencies { diff --git a/junit-jupiter-starter-maven-kotlin/pom.xml b/junit-jupiter-starter-maven-kotlin/pom.xml index 65e932e6..f9bb90af 100644 --- a/junit-jupiter-starter-maven-kotlin/pom.xml +++ b/junit-jupiter-starter-maven-kotlin/pom.xml @@ -82,4 +82,17 @@ + + + maven-central-snapshots + https://central.sonatype.com/repository/maven-snapshots + + true + + + false + + + + diff --git a/junit-jupiter-starter-maven/pom.xml b/junit-jupiter-starter-maven/pom.xml index e24a22d9..f287c1ea 100644 --- a/junit-jupiter-starter-maven/pom.xml +++ b/junit-jupiter-starter-maven/pom.xml @@ -42,4 +42,17 @@ + + + maven-central-snapshots + https://central.sonatype.com/repository/maven-snapshots + + true + + + false + + + + diff --git a/junit-jupiter-starter-sbt/build.sbt b/junit-jupiter-starter-sbt/build.sbt index 2d9fc61c..fa45f825 100644 --- a/junit-jupiter-starter-sbt/build.sbt +++ b/junit-jupiter-starter-sbt/build.sbt @@ -11,5 +11,6 @@ lazy val root = project "org.junit.jupiter" % "junit-jupiter" % "5.13.2" % Test, "org.junit.platform" % "junit-platform-launcher" % "1.13.2" % Test, ), - testOptions += Tests.Argument(jupiterTestFramework, "--display-mode=tree") + testOptions += Tests.Argument(jupiterTestFramework, "--display-mode=tree"), + resolvers += "Maven Central Snapshots" at "https://central.sonatype.com/repository/maven-snapshots" ) diff --git a/junit-migration-gradle/build.gradle b/junit-migration-gradle/build.gradle index 93834a7b..dfe050d8 100644 --- a/junit-migration-gradle/build.gradle +++ b/junit-migration-gradle/build.gradle @@ -7,6 +7,13 @@ plugins { repositories { mavenCentral() + maven { + url = "https://central.sonatype.com/repository/maven-snapshots" + mavenContent { + snapshotsOnly() + includeGroupByRegex("org\\.junit.*") + } + } } dependencies { diff --git a/junit-migration-maven/pom.xml b/junit-migration-maven/pom.xml index c98fc197..e31d8770 100644 --- a/junit-migration-maven/pom.xml +++ b/junit-migration-maven/pom.xml @@ -69,4 +69,17 @@ + + + + maven-central-snapshots + https://central.sonatype.com/repository/maven-snapshots + + true + + + false + + + diff --git a/junit-multiple-engines/build.gradle.kts b/junit-multiple-engines/build.gradle.kts index d1a077bb..48ea2c38 100644 --- a/junit-multiple-engines/build.gradle.kts +++ b/junit-multiple-engines/build.gradle.kts @@ -11,6 +11,13 @@ plugins { repositories { mavenCentral() + maven(url = "https://central.sonatype.com/repository/maven-snapshots") { + mavenContent { + snapshotsOnly() + includeGroupByRegex("org\\.junit.*") + } + } + } dependencies { From 78f975c74d4e9c5484f8d45c1260a0094337b94a Mon Sep 17 00:00:00 2001 From: Marc Philipp Date: Tue, 24 Jun 2025 13:06:24 +0200 Subject: [PATCH 02/10] Use 6.0.0-SNAPSHOT --- junit-jupiter-extensions/build.gradle | 2 +- junit-jupiter-starter-ant/build.sh | 2 +- junit-jupiter-starter-bazel/MODULE.bazel | 14 ++++++-------- junit-jupiter-starter-gradle-groovy/build.gradle | 2 +- .../build.gradle.kts | 2 +- junit-jupiter-starter-gradle/build.gradle | 2 +- junit-jupiter-starter-maven-kotlin/pom.xml | 2 +- junit-jupiter-starter-maven/pom.xml | 2 +- junit-jupiter-starter-sbt/build.sbt | 4 ++-- junit-migration-gradle/README.md | 4 ++-- junit-migration-gradle/build.gradle | 2 +- junit-migration-maven/pom.xml | 2 +- junit-multiple-engines/build.gradle.kts | 2 +- 13 files changed, 20 insertions(+), 22 deletions(-) diff --git a/junit-jupiter-extensions/build.gradle b/junit-jupiter-extensions/build.gradle index 37da8b0b..6bda9a3b 100644 --- a/junit-jupiter-extensions/build.gradle +++ b/junit-jupiter-extensions/build.gradle @@ -24,7 +24,7 @@ tasks.withType(JavaCompile).configureEach { } dependencies { - api(platform("org.junit:junit-bom:5.13.2")) + api(platform("org.junit:junit-bom:6.0.0-SNAPSHOT")) api("org.junit.jupiter:junit-jupiter-api") { because 'building extensions in "main" using JUnit Jupiter API' } diff --git a/junit-jupiter-starter-ant/build.sh b/junit-jupiter-starter-ant/build.sh index a394c018..5f4e7f86 100755 --- a/junit-jupiter-starter-ant/build.sh +++ b/junit-jupiter-starter-ant/build.sh @@ -4,7 +4,7 @@ set -e # # Set constants. # -junit_platform_version='1.13.2' +junit_platform_version='6.0.0-SNAPSHOT' ant_version='1.10.15' ant_folder="apache-ant-${ant_version}" ant_archive="${ant_folder}-bin.tar.gz" diff --git a/junit-jupiter-starter-bazel/MODULE.bazel b/junit-jupiter-starter-bazel/MODULE.bazel index 0cef70cf..085fb2d3 100644 --- a/junit-jupiter-starter-bazel/MODULE.bazel +++ b/junit-jupiter-starter-bazel/MODULE.bazel @@ -1,6 +1,4 @@ -JUNIT_JUPITER_VERSION = "5.13.2" - -JUNIT_PLATFORM_VERSION = "1.13.2" +JUNIT_VERSION = "6.0.0-SNAPSHOT" bazel_dep(name = "rules_jvm_external", version = "6.7") bazel_dep(name = "contrib_rules_jvm", version = "0.29.0") @@ -9,11 +7,11 @@ maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven") maven.install( artifacts = [ - "org.junit.platform:junit-platform-launcher:%s" % JUNIT_PLATFORM_VERSION, - "org.junit.platform:junit-platform-reporting:%s" % JUNIT_PLATFORM_VERSION, - "org.junit.jupiter:junit-jupiter-api:%s" % JUNIT_JUPITER_VERSION, - "org.junit.jupiter:junit-jupiter-params:%s" % JUNIT_JUPITER_VERSION, - "org.junit.jupiter:junit-jupiter-engine:%s" % JUNIT_JUPITER_VERSION, + "org.junit.platform:junit-platform-launcher:%s" % JUNIT_VERSION, + "org.junit.platform:junit-platform-reporting:%s" % JUNIT_VERSION, + "org.junit.jupiter:junit-jupiter-api:%s" % JUNIT_VERSION, + "org.junit.jupiter:junit-jupiter-params:%s" % JUNIT_VERSION, + "org.junit.jupiter:junit-jupiter-engine:%s" % JUNIT_VERSION, ], repositories = [ "https://repo1.maven.org/maven2", diff --git a/junit-jupiter-starter-gradle-groovy/build.gradle b/junit-jupiter-starter-gradle-groovy/build.gradle index 95774a88..3ea6d548 100644 --- a/junit-jupiter-starter-gradle-groovy/build.gradle +++ b/junit-jupiter-starter-gradle-groovy/build.gradle @@ -17,7 +17,7 @@ repositories { dependencies { implementation(localGroovy()) - testImplementation(platform('org.junit:junit-bom:5.13.2')) + testImplementation(platform('org.junit:junit-bom:6.0.0-SNAPSHOT')) testImplementation('org.junit.jupiter:junit-jupiter') testRuntimeOnly('org.junit.platform:junit-platform-launcher') } diff --git a/junit-jupiter-starter-gradle-kotlin/build.gradle.kts b/junit-jupiter-starter-gradle-kotlin/build.gradle.kts index 67b01c67..94db02fd 100644 --- a/junit-jupiter-starter-gradle-kotlin/build.gradle.kts +++ b/junit-jupiter-starter-gradle-kotlin/build.gradle.kts @@ -16,7 +16,7 @@ repositories { } dependencies { - testImplementation(platform("org.junit:junit-bom:5.13.2")) + testImplementation(platform("org.junit:junit-bom:6.0.0-SNAPSHOT")) testImplementation("org.junit.jupiter:junit-jupiter") testRuntimeOnly("org.junit.platform:junit-platform-launcher") } diff --git a/junit-jupiter-starter-gradle/build.gradle b/junit-jupiter-starter-gradle/build.gradle index c504b298..115e256a 100644 --- a/junit-jupiter-starter-gradle/build.gradle +++ b/junit-jupiter-starter-gradle/build.gradle @@ -16,7 +16,7 @@ repositories { } dependencies { - testImplementation(platform('org.junit:junit-bom:5.13.2')) + testImplementation(platform('org.junit:junit-bom:6.0.0-SNAPSHOT')) testImplementation('org.junit.jupiter:junit-jupiter') testRuntimeOnly('org.junit.platform:junit-platform-launcher') } diff --git a/junit-jupiter-starter-maven-kotlin/pom.xml b/junit-jupiter-starter-maven-kotlin/pom.xml index f9bb90af..978d7999 100644 --- a/junit-jupiter-starter-maven-kotlin/pom.xml +++ b/junit-jupiter-starter-maven-kotlin/pom.xml @@ -20,7 +20,7 @@ org.junit junit-bom - 5.13.2 + 6.0.0-SNAPSHOT pom import diff --git a/junit-jupiter-starter-maven/pom.xml b/junit-jupiter-starter-maven/pom.xml index f287c1ea..ee50d373 100644 --- a/junit-jupiter-starter-maven/pom.xml +++ b/junit-jupiter-starter-maven/pom.xml @@ -18,7 +18,7 @@ org.junit junit-bom - 5.13.2 + 6.0.0-SNAPSHOT pom import diff --git a/junit-jupiter-starter-sbt/build.sbt b/junit-jupiter-starter-sbt/build.sbt index fa45f825..faf1c227 100644 --- a/junit-jupiter-starter-sbt/build.sbt +++ b/junit-jupiter-starter-sbt/build.sbt @@ -8,8 +8,8 @@ lazy val root = project name := "junit-jupiter-starter-sbt", libraryDependencies ++= Seq( "net.aichler" % "jupiter-interface" % JupiterKeys.jupiterVersion.value % Test, - "org.junit.jupiter" % "junit-jupiter" % "5.13.2" % Test, - "org.junit.platform" % "junit-platform-launcher" % "1.13.2" % Test, + "org.junit.jupiter" % "junit-jupiter" % "6.0.0-SNAPSHOT" % Test, + "org.junit.platform" % "junit-platform-launcher" % "6.0.0-SNAPSHOT" % Test, ), testOptions += Tests.Argument(jupiterTestFramework, "--display-mode=tree"), resolvers += "Maven Central Snapshots" at "https://central.sonatype.com/repository/maven-snapshots" diff --git a/junit-migration-gradle/README.md b/junit-migration-gradle/README.md index 865031ef..c06c1bca 100644 --- a/junit-migration-gradle/README.md +++ b/junit-migration-gradle/README.md @@ -60,7 +60,7 @@ Jupiter TestEngine. ```groovy dependencies { - testImplementation("org.junit.jupiter:junit-jupiter:5.13.2") + testImplementation("org.junit.jupiter:junit-jupiter:6.0.0-SNAPSHOT") } ``` @@ -71,7 +71,7 @@ on the JUnit Vintage TestEngine implementation similar to the following. ```groovy dependencies { testImplementation("junit:junit:4.13.2") - testRuntimeOnly("org.junit.vintage:junit-vintage-engine:5.13.2") + testRuntimeOnly("org.junit.vintage:junit-vintage-engine:6.0.0-SNAPSHOT") } ``` diff --git a/junit-migration-gradle/build.gradle b/junit-migration-gradle/build.gradle index dfe050d8..e09df562 100644 --- a/junit-migration-gradle/build.gradle +++ b/junit-migration-gradle/build.gradle @@ -17,7 +17,7 @@ repositories { } dependencies { - testImplementation(platform("org.junit:junit-bom:5.13.2")) + testImplementation(platform("org.junit:junit-bom:6.0.0-SNAPSHOT")) testImplementation("org.junit.jupiter:junit-jupiter") { because 'allows to write and run Jupiter tests' diff --git a/junit-migration-maven/pom.xml b/junit-migration-maven/pom.xml index e31d8770..505ffa54 100644 --- a/junit-migration-maven/pom.xml +++ b/junit-migration-maven/pom.xml @@ -19,7 +19,7 @@ org.junit junit-bom - 5.13.2 + 6.0.0-SNAPSHOT pom import diff --git a/junit-multiple-engines/build.gradle.kts b/junit-multiple-engines/build.gradle.kts index 48ea2c38..8f246edc 100644 --- a/junit-multiple-engines/build.gradle.kts +++ b/junit-multiple-engines/build.gradle.kts @@ -22,7 +22,7 @@ repositories { dependencies { val junit4Version = "4.13.2" - val junitBomVersion = "5.13.2" + val junitBomVersion = "6.0.0-SNAPSHOT" // Use junit-bom to align versions // https://docs.gradle.org/current/userguide/managing_transitive_dependencies.html#sec:bom_import From 9d18a68fd21d5dc318b4510178174696144de710 Mon Sep 17 00:00:00 2001 From: Marc Philipp Date: Tue, 24 Jun 2025 13:24:12 +0200 Subject: [PATCH 03/10] Use `--release 17` --- junit-jupiter-extensions/build.gradle | 3 +-- junit-jupiter-starter-gradle-kotlin/build.gradle.kts | 6 +++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/junit-jupiter-extensions/build.gradle b/junit-jupiter-extensions/build.gradle index 6bda9a3b..ef73ff2e 100644 --- a/junit-jupiter-extensions/build.gradle +++ b/junit-jupiter-extensions/build.gradle @@ -18,8 +18,7 @@ repositories { version = '1.0.0-SNAPSHOT' tasks.withType(JavaCompile).configureEach { - sourceCompatibility = 1.8 - targetCompatibility = 1.8 + options.release = 17 options.compilerArgs += '-parameters' } diff --git a/junit-jupiter-starter-gradle-kotlin/build.gradle.kts b/junit-jupiter-starter-gradle-kotlin/build.gradle.kts index 94db02fd..12012bb8 100644 --- a/junit-jupiter-starter-gradle-kotlin/build.gradle.kts +++ b/junit-jupiter-starter-gradle-kotlin/build.gradle.kts @@ -1,4 +1,4 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8 +import org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17 import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { @@ -29,9 +29,9 @@ tasks.test { } tasks.withType().configureEach { - options.release.set(8) + options.release.set(17) } tasks.withType().configureEach { - compilerOptions.jvmTarget = JVM_1_8 + compilerOptions.jvmTarget = JVM_17 } From bb8d62a02690bd98e885f88da1ece2a36e8d1ebb Mon Sep 17 00:00:00 2001 From: Marc Philipp Date: Tue, 24 Jun 2025 13:24:44 +0200 Subject: [PATCH 04/10] Enable CI builds for `develop/*` branches --- .github/workflows/build-all-examples.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build-all-examples.yml b/.github/workflows/build-all-examples.yml index 2f7588da..7ff7f2ef 100644 --- a/.github/workflows/build-all-examples.yml +++ b/.github/workflows/build-all-examples.yml @@ -4,6 +4,7 @@ on: branches: - main - 'r5.*' + - 'develop/*' pull_request: branches: - '*' From 15896a9c5244c21218b71f9774ee55015a7d5a51 Mon Sep 17 00:00:00 2001 From: Marc Philipp Date: Tue, 24 Jun 2025 13:25:10 +0200 Subject: [PATCH 05/10] Temporarily exclude Ant, Bazel, and custom build --- .github/workflows/build-all-examples.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-all-examples.yml b/.github/workflows/build-all-examples.yml index 7ff7f2ef..a45d6e44 100644 --- a/.github/workflows/build-all-examples.yml +++ b/.github/workflows/build-all-examples.yml @@ -25,7 +25,7 @@ jobs: distribution: temurin - uses: sbt/setup-sbt@234370af1319038bf8dc432f8a7e4b83078a1781 # v1.1.11 - name: 'Build all examples' - run: java src/Builder.java + run: java src/Builder.java --exclude=junit-jupiter-starter-ant,junit-jupiter-starter-bazel,junit-modular-world - name: 'Check automation for updating versions' run: java src/Updater.java 42 if: github.repository == 'junit-team/junit-examples' && github.ref == 'refs/heads/main' From eb6990de7f29f686be3275b9298cd307983dfaf3 Mon Sep 17 00:00:00 2001 From: Marc Philipp Date: Tue, 24 Jun 2025 13:25:38 +0200 Subject: [PATCH 06/10] Simplify Updater for single version replacement --- junit-jupiter-starter-ant/build.sh | 8 +-- junit-modular-world/src/build/Project.java | 22 ++++--- src/Updater.java | 70 +++++++--------------- 3 files changed, 37 insertions(+), 63 deletions(-) diff --git a/junit-jupiter-starter-ant/build.sh b/junit-jupiter-starter-ant/build.sh index 5f4e7f86..122000c6 100755 --- a/junit-jupiter-starter-ant/build.sh +++ b/junit-jupiter-starter-ant/build.sh @@ -4,11 +4,11 @@ set -e # # Set constants. # -junit_platform_version='6.0.0-SNAPSHOT' +junit_version='6.0.0-SNAPSHOT' ant_version='1.10.15' ant_folder="apache-ant-${ant_version}" ant_archive="${ant_folder}-bin.tar.gz" -standalone_jar="${ant_folder}/lib/junit-platform-console-standalone-${junit_platform_version}.jar" +standalone_jar="${ant_folder}/lib/junit-platform-console-standalone-${junit_version}.jar" # # Load and extract Apache Ant. @@ -23,8 +23,8 @@ fi # Load and store junit-platform-console-standalone jar into ${ANT_HOME}/lib. # if [ ! -f "${standalone_jar}" ]; then - echo "Downloading junit-platform-console-standalone $junit_platform_version..." - curl --silent --show-error --fail "https://repo1.maven.org/maven2/org/junit/platform/junit-platform-console-standalone/${junit_platform_version}/junit-platform-console-standalone-${junit_platform_version}.jar" \ + echo "Downloading junit-platform-console-standalone $junit_version..." + curl --silent --show-error --fail "https://repo1.maven.org/maven2/org/junit/platform/junit-platform-console-standalone/${junit_version}/junit-platform-console-standalone-${junit_version}.jar" \ --output "${standalone_jar}" fi diff --git a/junit-modular-world/src/build/Project.java b/junit-modular-world/src/build/Project.java index 0dc03556..c669e3d0 100644 --- a/junit-modular-world/src/build/Project.java +++ b/junit-modular-world/src/build/Project.java @@ -43,18 +43,16 @@ void compile() throws Exception { // // download main and test dependencies // - String platformVersion = "1.13.1"; - String jupiterVersion = "5.13.1"; - String vintageVersion = "5.13.1"; - get("lib", "org.junit.platform", "junit-platform-commons", platformVersion); - get("lib", "org.junit.platform", "junit-platform-console", platformVersion); - get("lib", "org.junit.platform", "junit-platform-engine", platformVersion); - get("lib", "org.junit.platform", "junit-platform-launcher", platformVersion); - get("lib", "org.junit.platform", "junit-platform-reporting", platformVersion); - get("lib", "org.junit.jupiter", "junit-jupiter-api", jupiterVersion); - get("lib", "org.junit.jupiter", "junit-jupiter-params", jupiterVersion); - get("lib", "org.junit.jupiter", "junit-jupiter-engine", jupiterVersion); - get("lib", "org.junit.vintage", "junit-vintage-engine", vintageVersion); + String junitVersion = "6.0.0-SNAPSHOT"; + get("lib", "org.junit.platform", "junit-platform-commons", junitVersion); + get("lib", "org.junit.platform", "junit-platform-console", junitVersion); + get("lib", "org.junit.platform", "junit-platform-engine", junitVersion); + get("lib", "org.junit.platform", "junit-platform-launcher", junitVersion); + get("lib", "org.junit.platform", "junit-platform-reporting", junitVersion); + get("lib", "org.junit.jupiter", "junit-jupiter-api", junitVersion); + get("lib", "org.junit.jupiter", "junit-jupiter-params", junitVersion); + get("lib", "org.junit.jupiter", "junit-jupiter-engine", junitVersion); + get("lib", "org.junit.vintage", "junit-vintage-engine", junitVersion); get("lib", "junit", "junit", "4.13.2"); get("lib", "org.hamcrest", "hamcrest-core", "1.3"); get("lib", "org.apiguardian", "apiguardian-api", "1.1.2"); diff --git a/src/Updater.java b/src/Updater.java index 4fe32bbb..6742b402 100644 --- a/src/Updater.java +++ b/src/Updater.java @@ -22,36 +22,35 @@ @SuppressWarnings({"WeakerAccess", "SameParameterValue"}) class Updater { - private static final String VERSION_REGEX = "([0-9.]+)"; + private static final String VERSION_REGEX = "([0-9.]+(?:-[A-Z]+[0-9]*)?)"; public static void main(String[] args) throws Exception { new Updater(args[0]).update(); } - private final String jupiterVersion; + private final String newVersion; - public Updater(String jupiterVersion) { - this.jupiterVersion = jupiterVersion; + public Updater(String newVersion) { + this.newVersion = newVersion; } void update() throws IOException { - var gradleBomReplacement = new Replacement("org.junit:junit-bom:" + VERSION_REGEX, VersionType.BOM); - var mavenBomReplacement = new Replacement( - Pattern.compile(""" - \\s*org.junit - \\s*junit-bom - \\s*([0-9.]+) - """, Pattern.MULTILINE), - VersionType.BOM + var gradleBomReplacement = Pattern.compile("org.junit:junit-bom:" + VERSION_REGEX); + var mavenBomReplacement = Pattern.compile( + """ + \\s*org.junit + \\s*junit-bom + \\s*""" + VERSION_REGEX + "", + Pattern.MULTILINE ); + System.out.println(mavenBomReplacement); update(Path.of("junit-jupiter-extensions/build.gradle"), List.of(gradleBomReplacement)); update(Path.of("junit-jupiter-starter-ant/build.sh"), List.of( - new Replacement("junit_platform_version='" + VERSION_REGEX + "'", VersionType.PLATFORM) + Pattern.compile("junit_version='" + VERSION_REGEX + "'") )); update(Path.of("junit-jupiter-starter-bazel/MODULE.bazel"), List.of( - new Replacement("JUNIT_JUPITER_VERSION = \"" + VERSION_REGEX + '"', VersionType.JUPITER), - new Replacement("JUNIT_PLATFORM_VERSION = \"" + VERSION_REGEX + '"', VersionType.PLATFORM) + Pattern.compile("JUNIT_VERSION = \"" + VERSION_REGEX + '"') )); update(Path.of("junit-jupiter-starter-gradle/build.gradle"), List.of(gradleBomReplacement)); update(Path.of("junit-jupiter-starter-gradle-groovy/build.gradle"), List.of(gradleBomReplacement)); @@ -59,39 +58,36 @@ void update() throws IOException { update(Path.of("junit-jupiter-starter-maven/pom.xml"), List.of(mavenBomReplacement)); update(Path.of("junit-jupiter-starter-maven-kotlin/pom.xml"), List.of(mavenBomReplacement)); update(Path.of("junit-jupiter-starter-sbt/build.sbt"), List.of( - new Replacement("\"org.junit.jupiter\" % \"junit-jupiter\" % \"" + VERSION_REGEX + '"', VersionType.JUPITER), - new Replacement("\"org.junit.platform\" % \"junit-platform-launcher\" % \"" + VERSION_REGEX + '"', VersionType.PLATFORM) + Pattern.compile("\"org.junit.jupiter\" % \"junit-jupiter\" % \"" + VERSION_REGEX + '"'), + Pattern.compile("\"org.junit.platform\" % \"junit-platform-launcher\" % \"" + VERSION_REGEX + '"') )); update(Path.of("junit-migration-gradle/build.gradle"), List.of(gradleBomReplacement)); update(Path.of("junit-migration-gradle/README.md"), List.of( - new Replacement("org.junit.jupiter:junit-jupiter:" + VERSION_REGEX, VersionType.JUPITER), - new Replacement("org.junit.vintage:junit-vintage-engine:" + VERSION_REGEX, VersionType.VINTAGE) + Pattern.compile("org.junit.jupiter:junit-jupiter:" + VERSION_REGEX), + Pattern.compile("org.junit.vintage:junit-vintage-engine:" + VERSION_REGEX) )); update(Path.of("junit-migration-maven/pom.xml"), List.of(mavenBomReplacement)); update(Path.of("junit-modular-world/src/build/Project.java"), List.of( - new Replacement("platformVersion = \"" + VERSION_REGEX + '"', VersionType.PLATFORM), - new Replacement("jupiterVersion = \"" + VERSION_REGEX + '"', VersionType.JUPITER), - new Replacement("vintageVersion = \"" + VERSION_REGEX + '"', VersionType.VINTAGE) + Pattern.compile("junitVersion = \"" + VERSION_REGEX + '"') )); update(Path.of("junit-multiple-engines/build.gradle.kts"), List.of( - new Replacement("junitBomVersion = \"" + VERSION_REGEX + '"', VersionType.BOM) + Pattern.compile("junitBomVersion = \"" + VERSION_REGEX + '"') )); } - void update(Path path, List replacements) throws IOException { + void update(Path path, List patterns) throws IOException { System.out.printf("Updating %s...", path); System.out.flush(); int matches = 0; var content = new StringBuilder(Files.readString(path)); - for (var replacement : replacements) { + for (var pattern : patterns) { var minIndex = 0; - var matcher = replacement.regex.matcher(content); + var matcher = pattern.matcher(content); while (matcher.find(minIndex)) { matches++; int start = matcher.start(1); int end = matcher.end(1); int oldLength = end - start; - String newVersion = replacement.newVersion(jupiterVersion); content.replace(start, end, newVersion); minIndex = end + newVersion.length() - oldLength; } @@ -102,24 +98,4 @@ void update(Path path, List replacements) throws IOException { throw new IllegalStateException("No matches found in " + path); } } - - record Replacement(Pattern regex, VersionType versionType) { - Replacement(String regex, VersionType versionType) { - this(Pattern.compile(regex), versionType); - } - - String newVersion(String jupiterVersion) { - return switch (versionType) { - case BOM, JUPITER, VINTAGE -> jupiterVersion; - case PLATFORM -> jupiterVersion.replaceFirst("\\d+\\.", "1."); - }; - } - } - - enum VersionType { - BOM, - JUPITER, - PLATFORM, - VINTAGE - } } From dbf483c1b5011583e5d31a1813f878159bd3bd82 Mon Sep 17 00:00:00 2001 From: Marc Philipp Date: Fri, 27 Jun 2025 17:15:11 +0200 Subject: [PATCH 07/10] Add JSpecify --- junit-modular-world/src/build/Project.java | 1 + 1 file changed, 1 insertion(+) diff --git a/junit-modular-world/src/build/Project.java b/junit-modular-world/src/build/Project.java index c669e3d0..63f1fef0 100644 --- a/junit-modular-world/src/build/Project.java +++ b/junit-modular-world/src/build/Project.java @@ -56,6 +56,7 @@ void compile() throws Exception { get("lib", "junit", "junit", "4.13.2"); get("lib", "org.hamcrest", "hamcrest-core", "1.3"); get("lib", "org.apiguardian", "apiguardian-api", "1.1.2"); + get("lib", "org.jspecify", "jspecify", "1.0.0"); get("lib", "org.opentest4j", "opentest4j", "1.3.0"); get("lib", "org.opentest4j.reporting", "open-test-reporting-tooling-spi", "0.2.3"); get("lib", "net.jqwik", "jqwik-api", "1.9.3"); From 952600dd906dd14bab3db663bfba0dc78da7c8a5 Mon Sep 17 00:00:00 2001 From: Marc Philipp Date: Fri, 27 Jun 2025 17:15:22 +0200 Subject: [PATCH 08/10] Update open-test-reporting --- junit-modular-world/src/build/Project.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/junit-modular-world/src/build/Project.java b/junit-modular-world/src/build/Project.java index 63f1fef0..fbb23282 100644 --- a/junit-modular-world/src/build/Project.java +++ b/junit-modular-world/src/build/Project.java @@ -58,7 +58,7 @@ void compile() throws Exception { get("lib", "org.apiguardian", "apiguardian-api", "1.1.2"); get("lib", "org.jspecify", "jspecify", "1.0.0"); get("lib", "org.opentest4j", "opentest4j", "1.3.0"); - get("lib", "org.opentest4j.reporting", "open-test-reporting-tooling-spi", "0.2.3"); + get("lib", "org.opentest4j.reporting", "open-test-reporting-tooling-spi", "0.2.4"); get("lib", "net.jqwik", "jqwik-api", "1.9.3"); get("lib", "net.jqwik", "jqwik-engine", "1.9.3"); From e17cd6e39a867f9bfa737a06d13830b7d70af15e Mon Sep 17 00:00:00 2001 From: Marc Philipp Date: Fri, 27 Jun 2025 17:09:21 +0200 Subject: [PATCH 09/10] Fail build if external process returns non-zero exit code --- junit-modular-world/src/build/Project.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/junit-modular-world/src/build/Project.java b/junit-modular-world/src/build/Project.java index fbb23282..5a8411ed 100644 --- a/junit-modular-world/src/build/Project.java +++ b/junit-modular-world/src/build/Project.java @@ -309,19 +309,25 @@ String[] toArray() { } } - int run(String tool, String... args) { + void run(String tool, String... args) { printCommandDetails("run", tool, args); - return ToolProvider.findFirst(tool).get().run(System.out, System.err, args); + checkExitCode(ToolProvider.findFirst(tool).get().run(System.out, System.err, args)); } - int exe(String executable, String... args) throws Exception { + void exe(String executable, String... args) throws Exception { printCommandDetails("exe", executable, args); ProcessBuilder processBuilder = new ProcessBuilder(executable); Arrays.stream(args).forEach(processBuilder.command()::add); processBuilder.redirectErrorStream(true); Process process = processBuilder.start(); process.getInputStream().transferTo(System.out); - return process.waitFor(); + checkExitCode(process.waitFor()); + } + + private void checkExitCode(int exitCode) { + if (exitCode != 0) { + System.exit(exitCode); + } } void printCommandDetails(String context, String command, String... args) { From 2dca129d3e6484fe81e0807911a25df7a21de4a1 Mon Sep 17 00:00:00 2001 From: JUnit Team Date: Mon, 25 Aug 2025 15:56:29 +0000 Subject: [PATCH 10/10] Use 6.0.0-RC2 --- junit-jupiter-extensions/build.gradle | 2 +- junit-jupiter-starter-ant/build.sh | 2 +- junit-jupiter-starter-bazel/MODULE.bazel | 2 +- junit-jupiter-starter-gradle-groovy/build.gradle | 2 +- junit-jupiter-starter-gradle-kotlin/build.gradle.kts | 2 +- junit-jupiter-starter-gradle/build.gradle | 2 +- junit-jupiter-starter-maven-kotlin/pom.xml | 2 +- junit-jupiter-starter-maven/pom.xml | 2 +- junit-jupiter-starter-sbt/build.sbt | 4 ++-- junit-migration-gradle/README.md | 4 ++-- junit-migration-gradle/build.gradle | 2 +- junit-migration-maven/pom.xml | 2 +- junit-modular-world/src/build/Project.java | 2 +- junit-multiple-engines/build.gradle.kts | 2 +- 14 files changed, 16 insertions(+), 16 deletions(-) diff --git a/junit-jupiter-extensions/build.gradle b/junit-jupiter-extensions/build.gradle index ef73ff2e..d4c23093 100644 --- a/junit-jupiter-extensions/build.gradle +++ b/junit-jupiter-extensions/build.gradle @@ -23,7 +23,7 @@ tasks.withType(JavaCompile).configureEach { } dependencies { - api(platform("org.junit:junit-bom:6.0.0-SNAPSHOT")) + api(platform("org.junit:junit-bom:6.0.0-RC2")) api("org.junit.jupiter:junit-jupiter-api") { because 'building extensions in "main" using JUnit Jupiter API' } diff --git a/junit-jupiter-starter-ant/build.sh b/junit-jupiter-starter-ant/build.sh index 122000c6..28e7fbba 100755 --- a/junit-jupiter-starter-ant/build.sh +++ b/junit-jupiter-starter-ant/build.sh @@ -4,7 +4,7 @@ set -e # # Set constants. # -junit_version='6.0.0-SNAPSHOT' +junit_version='6.0.0-RC2' ant_version='1.10.15' ant_folder="apache-ant-${ant_version}" ant_archive="${ant_folder}-bin.tar.gz" diff --git a/junit-jupiter-starter-bazel/MODULE.bazel b/junit-jupiter-starter-bazel/MODULE.bazel index 085fb2d3..2ef3fb7d 100644 --- a/junit-jupiter-starter-bazel/MODULE.bazel +++ b/junit-jupiter-starter-bazel/MODULE.bazel @@ -1,4 +1,4 @@ -JUNIT_VERSION = "6.0.0-SNAPSHOT" +JUNIT_VERSION = "6.0.0-RC2" bazel_dep(name = "rules_jvm_external", version = "6.7") bazel_dep(name = "contrib_rules_jvm", version = "0.29.0") diff --git a/junit-jupiter-starter-gradle-groovy/build.gradle b/junit-jupiter-starter-gradle-groovy/build.gradle index 3ea6d548..15e1a2bf 100644 --- a/junit-jupiter-starter-gradle-groovy/build.gradle +++ b/junit-jupiter-starter-gradle-groovy/build.gradle @@ -17,7 +17,7 @@ repositories { dependencies { implementation(localGroovy()) - testImplementation(platform('org.junit:junit-bom:6.0.0-SNAPSHOT')) + testImplementation(platform('org.junit:junit-bom:6.0.0-RC2')) testImplementation('org.junit.jupiter:junit-jupiter') testRuntimeOnly('org.junit.platform:junit-platform-launcher') } diff --git a/junit-jupiter-starter-gradle-kotlin/build.gradle.kts b/junit-jupiter-starter-gradle-kotlin/build.gradle.kts index 12012bb8..1558585e 100644 --- a/junit-jupiter-starter-gradle-kotlin/build.gradle.kts +++ b/junit-jupiter-starter-gradle-kotlin/build.gradle.kts @@ -16,7 +16,7 @@ repositories { } dependencies { - testImplementation(platform("org.junit:junit-bom:6.0.0-SNAPSHOT")) + testImplementation(platform("org.junit:junit-bom:6.0.0-RC2")) testImplementation("org.junit.jupiter:junit-jupiter") testRuntimeOnly("org.junit.platform:junit-platform-launcher") } diff --git a/junit-jupiter-starter-gradle/build.gradle b/junit-jupiter-starter-gradle/build.gradle index 115e256a..b561e47e 100644 --- a/junit-jupiter-starter-gradle/build.gradle +++ b/junit-jupiter-starter-gradle/build.gradle @@ -16,7 +16,7 @@ repositories { } dependencies { - testImplementation(platform('org.junit:junit-bom:6.0.0-SNAPSHOT')) + testImplementation(platform('org.junit:junit-bom:6.0.0-RC2')) testImplementation('org.junit.jupiter:junit-jupiter') testRuntimeOnly('org.junit.platform:junit-platform-launcher') } diff --git a/junit-jupiter-starter-maven-kotlin/pom.xml b/junit-jupiter-starter-maven-kotlin/pom.xml index 978d7999..46e17831 100644 --- a/junit-jupiter-starter-maven-kotlin/pom.xml +++ b/junit-jupiter-starter-maven-kotlin/pom.xml @@ -20,7 +20,7 @@ org.junit junit-bom - 6.0.0-SNAPSHOT + 6.0.0-RC2 pom import diff --git a/junit-jupiter-starter-maven/pom.xml b/junit-jupiter-starter-maven/pom.xml index ee50d373..c36038af 100644 --- a/junit-jupiter-starter-maven/pom.xml +++ b/junit-jupiter-starter-maven/pom.xml @@ -18,7 +18,7 @@ org.junit junit-bom - 6.0.0-SNAPSHOT + 6.0.0-RC2 pom import diff --git a/junit-jupiter-starter-sbt/build.sbt b/junit-jupiter-starter-sbt/build.sbt index faf1c227..8b3c90e1 100644 --- a/junit-jupiter-starter-sbt/build.sbt +++ b/junit-jupiter-starter-sbt/build.sbt @@ -8,8 +8,8 @@ lazy val root = project name := "junit-jupiter-starter-sbt", libraryDependencies ++= Seq( "net.aichler" % "jupiter-interface" % JupiterKeys.jupiterVersion.value % Test, - "org.junit.jupiter" % "junit-jupiter" % "6.0.0-SNAPSHOT" % Test, - "org.junit.platform" % "junit-platform-launcher" % "6.0.0-SNAPSHOT" % Test, + "org.junit.jupiter" % "junit-jupiter" % "6.0.0-RC2" % Test, + "org.junit.platform" % "junit-platform-launcher" % "6.0.0-RC2" % Test, ), testOptions += Tests.Argument(jupiterTestFramework, "--display-mode=tree"), resolvers += "Maven Central Snapshots" at "https://central.sonatype.com/repository/maven-snapshots" diff --git a/junit-migration-gradle/README.md b/junit-migration-gradle/README.md index c06c1bca..251b8857 100644 --- a/junit-migration-gradle/README.md +++ b/junit-migration-gradle/README.md @@ -60,7 +60,7 @@ Jupiter TestEngine. ```groovy dependencies { - testImplementation("org.junit.jupiter:junit-jupiter:6.0.0-SNAPSHOT") + testImplementation("org.junit.jupiter:junit-jupiter:6.0.0-RC2") } ``` @@ -71,7 +71,7 @@ on the JUnit Vintage TestEngine implementation similar to the following. ```groovy dependencies { testImplementation("junit:junit:4.13.2") - testRuntimeOnly("org.junit.vintage:junit-vintage-engine:6.0.0-SNAPSHOT") + testRuntimeOnly("org.junit.vintage:junit-vintage-engine:6.0.0-RC2") } ``` diff --git a/junit-migration-gradle/build.gradle b/junit-migration-gradle/build.gradle index e09df562..f5e25d50 100644 --- a/junit-migration-gradle/build.gradle +++ b/junit-migration-gradle/build.gradle @@ -17,7 +17,7 @@ repositories { } dependencies { - testImplementation(platform("org.junit:junit-bom:6.0.0-SNAPSHOT")) + testImplementation(platform("org.junit:junit-bom:6.0.0-RC2")) testImplementation("org.junit.jupiter:junit-jupiter") { because 'allows to write and run Jupiter tests' diff --git a/junit-migration-maven/pom.xml b/junit-migration-maven/pom.xml index 505ffa54..74e640bb 100644 --- a/junit-migration-maven/pom.xml +++ b/junit-migration-maven/pom.xml @@ -19,7 +19,7 @@ org.junit junit-bom - 6.0.0-SNAPSHOT + 6.0.0-RC2 pom import diff --git a/junit-modular-world/src/build/Project.java b/junit-modular-world/src/build/Project.java index 5a8411ed..fdbf8b71 100644 --- a/junit-modular-world/src/build/Project.java +++ b/junit-modular-world/src/build/Project.java @@ -43,7 +43,7 @@ void compile() throws Exception { // // download main and test dependencies // - String junitVersion = "6.0.0-SNAPSHOT"; + String junitVersion = "6.0.0-RC2"; get("lib", "org.junit.platform", "junit-platform-commons", junitVersion); get("lib", "org.junit.platform", "junit-platform-console", junitVersion); get("lib", "org.junit.platform", "junit-platform-engine", junitVersion); diff --git a/junit-multiple-engines/build.gradle.kts b/junit-multiple-engines/build.gradle.kts index 8f246edc..510360e3 100644 --- a/junit-multiple-engines/build.gradle.kts +++ b/junit-multiple-engines/build.gradle.kts @@ -22,7 +22,7 @@ repositories { dependencies { val junit4Version = "4.13.2" - val junitBomVersion = "6.0.0-SNAPSHOT" + val junitBomVersion = "6.0.0-RC2" // Use junit-bom to align versions // https://docs.gradle.org/current/userguide/managing_transitive_dependencies.html#sec:bom_import