From 8efe6b7139bfbe14689bd4fd90205ccfb590dbc3 Mon Sep 17 00:00:00 2001 From: Anton Sviridov Date: Mon, 25 Sep 2023 13:00:10 +0100 Subject: [PATCH 1/3] Set semanticdb-javac on older SBT versions as well --- .../sbtsourcegraph/SourcegraphEnable.scala | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/scala/com/sourcegraph/sbtsourcegraph/SourcegraphEnable.scala b/src/main/scala/com/sourcegraph/sbtsourcegraph/SourcegraphEnable.scala index 96843a7..c4b35f5 100644 --- a/src/main/scala/com/sourcegraph/sbtsourcegraph/SourcegraphEnable.scala +++ b/src/main/scala/com/sourcegraph/sbtsourcegraph/SourcegraphEnable.scala @@ -17,6 +17,8 @@ object SourcegraphEnable { if (SemanticdbPlugin.isAvailable()) withSemanticdbPlugin else withSemanticdbScalac + private lazy val semanticdbJavacVersion = Versions.semanticdbJavacVersion() + private lazy val withSemanticdbPlugin = Command.command( "sourcegraphEnable", briefHelp = "Configure SemanticdbPlugin for Sourcegraph.", @@ -30,8 +32,6 @@ object SourcegraphEnable { inConfig(_)(SourcegraphPlugin.relaxScalacOptionsConfigSettings) ) - val semanticdbJavacVersion = Versions.semanticdbJavacVersion() - val settings = for { (p, semanticdbVersion, overriddenScalaVersion) <- collectProjects( extracted @@ -120,6 +120,16 @@ object SourcegraphEnable { if (Versions.isJavaAtLeast(17)) javacModuleOptions else Nil } ), + Option( + allDependencies.in(p) += + "com.sourcegraph" % "semanticdb-javac" % semanticdbJavacVersion + ), + Option( + javacOptions.in(p) += s"-Xplugin:semanticdb " + + s"-build-tool:sbt " + + s"-sourceroot:${baseDirectory.in(ThisBuild).value} " + + s"-targetroot:${classDirectory.in(p, Compile).value.toPath().resolveSibling("semanticdb-classes")}" + ), Option( javaHome.in(p) := javaHome.in(p).value orElse calculateJavaHome ) From df0f843f7cd96e0b8b3231a8c4df37213b9fdd54 Mon Sep 17 00:00:00 2001 From: Anton Sviridov Date: Mon, 25 Sep 2023 13:57:16 +0100 Subject: [PATCH 2/3] Add a sbt 0.13 scripted test --- .../basic-sbt0.13/a/src/main/java/aj/A.java | 8 +++ .../basic-sbt0.13/a/src/main/scala/a/A.scala | 8 +++ .../basic-sbt0.13/b/src/test/java/bj/B.java | 5 ++ .../sbt-sourcegraph/basic-sbt0.13/build.sbt | 63 +++++++++++++++++++ .../basic-sbt0.13/project/build.properties | 1 + .../basic-sbt0.13/project/plugins.sbt | 6 ++ .../sbt-sourcegraph/basic-sbt0.13/test | 3 + 7 files changed, 94 insertions(+) create mode 100644 src/sbt-test/sbt-sourcegraph/basic-sbt0.13/a/src/main/java/aj/A.java create mode 100644 src/sbt-test/sbt-sourcegraph/basic-sbt0.13/a/src/main/scala/a/A.scala create mode 100644 src/sbt-test/sbt-sourcegraph/basic-sbt0.13/b/src/test/java/bj/B.java create mode 100644 src/sbt-test/sbt-sourcegraph/basic-sbt0.13/build.sbt create mode 100644 src/sbt-test/sbt-sourcegraph/basic-sbt0.13/project/build.properties create mode 100644 src/sbt-test/sbt-sourcegraph/basic-sbt0.13/project/plugins.sbt create mode 100644 src/sbt-test/sbt-sourcegraph/basic-sbt0.13/test diff --git a/src/sbt-test/sbt-sourcegraph/basic-sbt0.13/a/src/main/java/aj/A.java b/src/sbt-test/sbt-sourcegraph/basic-sbt0.13/a/src/main/java/aj/A.java new file mode 100644 index 0000000..1cf22a4 --- /dev/null +++ b/src/sbt-test/sbt-sourcegraph/basic-sbt0.13/a/src/main/java/aj/A.java @@ -0,0 +1,8 @@ +package aj; + +import geny.Generator; +import org.junit.Assert; + +public class A { + public geny.Generator x = a.A.generator(); +} diff --git a/src/sbt-test/sbt-sourcegraph/basic-sbt0.13/a/src/main/scala/a/A.scala b/src/sbt-test/sbt-sourcegraph/basic-sbt0.13/a/src/main/scala/a/A.scala new file mode 100644 index 0000000..ceb4ff3 --- /dev/null +++ b/src/sbt-test/sbt-sourcegraph/basic-sbt0.13/a/src/main/scala/a/A.scala @@ -0,0 +1,8 @@ +package a + +import org.junit.Assert + +object A extends App { + def generator = geny.Generator(1) + Assert.assertEquals(generator, "") +} diff --git a/src/sbt-test/sbt-sourcegraph/basic-sbt0.13/b/src/test/java/bj/B.java b/src/sbt-test/sbt-sourcegraph/basic-sbt0.13/b/src/test/java/bj/B.java new file mode 100644 index 0000000..9f143ae --- /dev/null +++ b/src/sbt-test/sbt-sourcegraph/basic-sbt0.13/b/src/test/java/bj/B.java @@ -0,0 +1,5 @@ +package bj; + +public class B { + public geny.Generator generator = a.A.generator(); +} diff --git a/src/sbt-test/sbt-sourcegraph/basic-sbt0.13/build.sbt b/src/sbt-test/sbt-sourcegraph/basic-sbt0.13/build.sbt new file mode 100644 index 0000000..a3e1761 --- /dev/null +++ b/src/sbt-test/sbt-sourcegraph/basic-sbt0.13/build.sbt @@ -0,0 +1,63 @@ +import scala.collection.JavaConverters._ +import java.nio.file.Paths +import java.nio.file.Files + +inThisBuild( + List( + scalaVersion := "2.12.15", + organization := "com.example" + ) +) + +lazy val a = project + .settings( + libraryDependencies += "com.lihaoyi" %% "geny" % "0.6.10", + libraryDependencies += "junit" % "junit" % "4.13.2" + ) + +lazy val b = project + .dependsOn(a) + .settings( + // Test to ensure the plugin works with explicitly set java home + // On Java 8 the java.home property returns JRE path, not JDK path. + // so we try and work around it hoping that JAVA_HOME is set by executing + // environment + javaHome := { + println(sys.env.get("JAVA_HOME")) + Some( + new File( + sys.env.getOrElse("JAVA_HOME", System.getProperty("java.home")) + ) + ) + } + ) + +commands += Command.command("checkLsif") { s => + val dumpPath = + baseDirectory.in(ThisBuild).value / "target" / "sbt-sourcegraph" / "index.scip" + val index = + lib.codeintel.scip.Scip.Index.parseFrom(Files.readAllBytes(dumpPath.toPath)) + + println(index) + val packageNames = index.getDocumentsList.asScala + .flatMap(_.getOccurrencesList.asScala) + .map(_.getSymbol) + .filterNot(_.startsWith("local")) + .map(_.split(" ").toList) + .collect { case _ :: _ :: name :: _ => name } + .filterNot(_ == ".") + .distinct + .sorted + .toList + if ( + packageNames != List( + "jdk", + "maven/com.lihaoyi/geny_2.12", + "maven/junit/junit", + "maven/org.scala-lang/scala-library" + ) + ) { + sys.error(packageNames.toString) + } + s +} diff --git a/src/sbt-test/sbt-sourcegraph/basic-sbt0.13/project/build.properties b/src/sbt-test/sbt-sourcegraph/basic-sbt0.13/project/build.properties new file mode 100644 index 0000000..133a8f1 --- /dev/null +++ b/src/sbt-test/sbt-sourcegraph/basic-sbt0.13/project/build.properties @@ -0,0 +1 @@ +sbt.version=0.13.17 diff --git a/src/sbt-test/sbt-sourcegraph/basic-sbt0.13/project/plugins.sbt b/src/sbt-test/sbt-sourcegraph/basic-sbt0.13/project/plugins.sbt new file mode 100644 index 0000000..d386fbf --- /dev/null +++ b/src/sbt-test/sbt-sourcegraph/basic-sbt0.13/project/plugins.sbt @@ -0,0 +1,6 @@ +addSbtPlugin( + "com.sourcegraph" % "sbt-sourcegraph" % sys.props("plugin.version") +) + +libraryDependencies += "com.sourcegraph" % "scip-semanticdb" % + sys.props("scip-java.version") diff --git a/src/sbt-test/sbt-sourcegraph/basic-sbt0.13/test b/src/sbt-test/sbt-sourcegraph/basic-sbt0.13/test new file mode 100644 index 0000000..cd39a2d --- /dev/null +++ b/src/sbt-test/sbt-sourcegraph/basic-sbt0.13/test @@ -0,0 +1,3 @@ +> sourcegraphEnable +> sourcegraphCompile +> checkLsif From b5123640f6a8b3b688f4322953e414e991d2097f Mon Sep 17 00:00:00 2001 From: Anton Sviridov Date: Mon, 25 Sep 2023 14:50:19 +0100 Subject: [PATCH 3/3] Run 0.13 tests explicitly --- .github/workflows/ci.yml | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a99513f..8bc7f5a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,10 +19,13 @@ jobs: distribution: "temurin" cache: "sbt" java-version: ${{ matrix.java }} - - run: | - ls $JAVA_HOME - sbt scripted +test - shell: bash + + - name: SBT 1.x tests + run: sbt scripted +test + + - name: SBT 0.13.x tests + run: sbt +publishLocal 'scripted sbt-sourcegraph/basic-sbt0.13' + check: runs-on: ubuntu-latest