diff --git a/sbt-app/src/sbt-test/tests/fork-main-resources/build.sbt b/sbt-app/src/sbt-test/tests/fork-main-resources/build.sbt new file mode 100644 index 000000000..08d15322b --- /dev/null +++ b/sbt-app/src/sbt-test/tests/fork-main-resources/build.sbt @@ -0,0 +1,6 @@ +val scalatest = "org.scalatest" %% "scalatest" % "3.2.19" + +scalaVersion := "3.7.3" +Test / fork := true +libraryDependencies += scalatest % Test + diff --git a/sbt-app/src/sbt-test/tests/fork-main-resources/src/main/resources/foo b/sbt-app/src/sbt-test/tests/fork-main-resources/src/main/resources/foo new file mode 100644 index 000000000..c6fe2dcd9 --- /dev/null +++ b/sbt-app/src/sbt-test/tests/fork-main-resources/src/main/resources/foo @@ -0,0 +1,2 @@ +test resource content + diff --git a/sbt-app/src/sbt-test/tests/fork-main-resources/src/test/scala/ResourceTest.scala b/sbt-app/src/sbt-test/tests/fork-main-resources/src/test/scala/ResourceTest.scala new file mode 100644 index 000000000..78bce7d8c --- /dev/null +++ b/sbt-app/src/sbt-test/tests/fork-main-resources/src/test/scala/ResourceTest.scala @@ -0,0 +1,10 @@ +import org.scalatest.funsuite.AnyFunSuite + +class ResourceTest extends AnyFunSuite { + test("access main resource from forked test") { + val loader = Thread.currentThread().getContextClassLoader() + val resource = loader.getResource("foo") + assert(resource != null, "Resource 'foo' from src/main/resources should be accessible in forked test execution") + } +} + diff --git a/sbt-app/src/sbt-test/tests/fork-main-resources/test b/sbt-app/src/sbt-test/tests/fork-main-resources/test new file mode 100644 index 000000000..c8987ae90 --- /dev/null +++ b/sbt-app/src/sbt-test/tests/fork-main-resources/test @@ -0,0 +1,2 @@ +> test + diff --git a/worker/src/main/java/sbt/internal/worker1/ForkTestMain.java b/worker/src/main/java/sbt/internal/worker1/ForkTestMain.java index 1a63d1312..a362d3a66 100644 --- a/worker/src/main/java/sbt/internal/worker1/ForkTestMain.java +++ b/worker/src/main/java/sbt/internal/worker1/ForkTestMain.java @@ -325,6 +325,7 @@ public class ForkTestMain { } private void runTests(TestInfo info, ClassLoader classLoader) throws Exception { + Thread.currentThread().setContextClassLoader(classLoader); final ExecutorService executor = executorService(info.parallel); final TaskDef[] tests = info.taskDefs.toArray(new TaskDef[] {}); final int nFrameworks = info.testRunners.size();