From a1150363788f59e6a33f9f5323e34798fa7437f0 Mon Sep 17 00:00:00 2001 From: bitloi Date: Sun, 15 Feb 2026 12:05:25 +0100 Subject: [PATCH] Fix sbtw integration tests on Windows: pass full test classpath When useSbtw=true, LauncherTestHelper runs 'java -cp ... sbtw.Main' using java.class.path, which is incomplete in the test JVM. Pass the full test classpath via -Dsbt.test.classpath in launcherPackageIntegrationTest (fork=true, javaOptions) and use it in LauncherTestHelper when set. --- build.sbt | 5 +++++ .../src/test/scala/LauncherTestHelper.scala | 7 ++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/build.sbt b/build.sbt index f99ce0ba2..2a32db69d 100644 --- a/build.sbt +++ b/build.sbt @@ -1391,6 +1391,11 @@ lazy val launcherPackageIntegrationTest = ), testFrameworks += TestFramework("hedgehog.sbt.Framework"), testFrameworks += TestFramework("verify.runner.Framework"), + Test / fork := true, + Test / javaOptions += { + val cp = (Test / fullClasspath).value.map(_.data.getAbsolutePath).mkString(java.io.File.pathSeparator) + s"-Dsbt.test.classpath=$cp" + }, Test / test := { (Test / test) .dependsOn(launcherPackage / Universal / packageBin) diff --git a/launcher-package/integration-test/src/test/scala/LauncherTestHelper.scala b/launcher-package/integration-test/src/test/scala/LauncherTestHelper.scala index 711c18817..31da6d5d8 100644 --- a/launcher-package/integration-test/src/test/scala/LauncherTestHelper.scala +++ b/launcher-package/integration-test/src/test/scala/LauncherTestHelper.scala @@ -15,8 +15,9 @@ object LauncherTestHelper { /** Command prefix to run the launcher: either script path or java -cp sbtw.Main */ def launcherCommand(scriptPath: String): Seq[String] = - if (useSbtw) - Seq("java", "-cp", System.getProperty("java.class.path"), "sbtw.Main") - else + if (useSbtw) { + val cp = sys.props.get("sbt.test.classpath").getOrElse(System.getProperty("java.class.path")) + Seq("java", "-cp", cp, "sbtw.Main") + } else Seq(scriptPath) }