diff --git a/sbt-app/src/sbt-test/tests/i8340-serviceloader-fork/build.sbt b/sbt-app/src/sbt-test/tests/i8340-serviceloader-fork/build.sbt new file mode 100644 index 000000000..714b1707a --- /dev/null +++ b/sbt-app/src/sbt-test/tests/i8340-serviceloader-fork/build.sbt @@ -0,0 +1,6 @@ +val scalatest = "org.scalatest" %% "scalatest" % "3.2.19" + +scalaVersion := "3.3.4" +Test / fork := true +libraryDependencies += scalatest % Test + diff --git a/sbt-app/src/sbt-test/tests/i8340-serviceloader-fork/src/main/resources/META-INF/services/example.Service b/sbt-app/src/sbt-test/tests/i8340-serviceloader-fork/src/main/resources/META-INF/services/example.Service new file mode 100644 index 000000000..44ad94896 --- /dev/null +++ b/sbt-app/src/sbt-test/tests/i8340-serviceloader-fork/src/main/resources/META-INF/services/example.Service @@ -0,0 +1,2 @@ +example.ServiceImpl + diff --git a/sbt-app/src/sbt-test/tests/i8340-serviceloader-fork/src/main/scala/example/Service.scala b/sbt-app/src/sbt-test/tests/i8340-serviceloader-fork/src/main/scala/example/Service.scala new file mode 100644 index 000000000..965cf2772 --- /dev/null +++ b/sbt-app/src/sbt-test/tests/i8340-serviceloader-fork/src/main/scala/example/Service.scala @@ -0,0 +1,6 @@ +package example + +trait Service { + def name: String +} + diff --git a/sbt-app/src/sbt-test/tests/i8340-serviceloader-fork/src/main/scala/example/ServiceImpl.scala b/sbt-app/src/sbt-test/tests/i8340-serviceloader-fork/src/main/scala/example/ServiceImpl.scala new file mode 100644 index 000000000..4ada369ff --- /dev/null +++ b/sbt-app/src/sbt-test/tests/i8340-serviceloader-fork/src/main/scala/example/ServiceImpl.scala @@ -0,0 +1,6 @@ +package example + +class ServiceImpl extends Service { + override def name: String = "MyServiceImpl" +} + diff --git a/sbt-app/src/sbt-test/tests/i8340-serviceloader-fork/src/test/scala/example/ServiceTest.scala b/sbt-app/src/sbt-test/tests/i8340-serviceloader-fork/src/test/scala/example/ServiceTest.scala new file mode 100644 index 000000000..ac009e8e7 --- /dev/null +++ b/sbt-app/src/sbt-test/tests/i8340-serviceloader-fork/src/test/scala/example/ServiceTest.scala @@ -0,0 +1,16 @@ +package example + +import org.scalatest.funsuite.AnyFunSuite +import java.util.ServiceLoader +import scala.jdk.CollectionConverters._ + +class ServiceTest extends AnyFunSuite { + test("ServiceLoader should find service implementation when Test / fork := true") { + val services = ServiceLoader.load(classOf[Service]) + val iterator = services.iterator() + assert(iterator.hasNext, "ServiceLoader should find at least one service") + val service = iterator.next() + assert(service.name == "MyServiceImpl", s"Expected service name 'MyServiceImpl', got '${service.name}'") + } +} + diff --git a/sbt-app/src/sbt-test/tests/i8340-serviceloader-fork/test b/sbt-app/src/sbt-test/tests/i8340-serviceloader-fork/test new file mode 100644 index 000000000..dfffb838b --- /dev/null +++ b/sbt-app/src/sbt-test/tests/i8340-serviceloader-fork/test @@ -0,0 +1 @@ +> test