diff --git a/sbt-app/src/sbt-test/tests/javaagent/agent/src/main/scala/JavaAgentMain.java b/sbt-app/src/sbt-test/tests/javaagent/agent/src/main/scala/JavaAgentMain.java new file mode 100644 index 000000000..f518f38e0 --- /dev/null +++ b/sbt-app/src/sbt-test/tests/javaagent/agent/src/main/scala/JavaAgentMain.java @@ -0,0 +1,9 @@ +package example; + +import java.lang.instrument.Instrumentation; + +public class JavaAgentMain { + public static void premain(String agentArgs, Instrumentation instrumentation) { + new example.A(); + } +} diff --git a/sbt-app/src/sbt-test/tests/javaagent/build.sbt b/sbt-app/src/sbt-test/tests/javaagent/build.sbt new file mode 100644 index 000000000..8d953142a --- /dev/null +++ b/sbt-app/src/sbt-test/tests/javaagent/build.sbt @@ -0,0 +1,29 @@ +scalaVersion := "2.13.18" + +lazy val core = project + .settings( + libraryDependencies += "org.scalatest" %% "scalatest-funspec" % "3.2.20" % Test, + Test / fork := true, + Test / classLoaderLayeringStrategy := ClassLoaderLayeringStrategy.Raw, + Test / javaOptions += { + val agentJar = fileConverter.value.toPath( + (agent / Compile / packageBin).value + ).toFile.getCanonicalPath + s"-javaagent:${agentJar}" + } + ) + .dependsOn(agent) + +lazy val agent = project + .settings( + autoScalaLibrary := false, + packageOptions += Package.ManifestAttributes( + "Premain-Class" -> "example.JavaAgentMain" + ) + ) + .dependsOn(lib) + +lazy val lib = project + .settings( + autoScalaLibrary := false + ) diff --git a/sbt-app/src/sbt-test/tests/javaagent/core/src/test/scala/Test.scala b/sbt-app/src/sbt-test/tests/javaagent/core/src/test/scala/Test.scala new file mode 100644 index 000000000..526ec2df2 --- /dev/null +++ b/sbt-app/src/sbt-test/tests/javaagent/core/src/test/scala/Test.scala @@ -0,0 +1,5 @@ +package example + +import org.scalatest.funspec.AnyFunSpec + +class Test extends AnyFunSpec diff --git a/sbt-app/src/sbt-test/tests/javaagent/lib/src/main/scala/A.java b/sbt-app/src/sbt-test/tests/javaagent/lib/src/main/scala/A.java new file mode 100644 index 000000000..1af73b5ed --- /dev/null +++ b/sbt-app/src/sbt-test/tests/javaagent/lib/src/main/scala/A.java @@ -0,0 +1,3 @@ +package example; + +public class A {} diff --git a/sbt-app/src/sbt-test/tests/javaagent/test b/sbt-app/src/sbt-test/tests/javaagent/test new file mode 100644 index 000000000..a22aa9361 --- /dev/null +++ b/sbt-app/src/sbt-test/tests/javaagent/test @@ -0,0 +1 @@ +> testFull