diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c8f172272..b4b183e67 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -140,6 +140,7 @@ jobs: ./sbt -v --client doc ./sbt -v --client publishLocal ./sbt -v --client test + ./sbt -v --client lmCoursierShaded/test ./sbt -v --client "serverTestProj/test" ./sbt -v --client "all $UTIL_TESTS" - name: Build and test (2) diff --git a/build.sbt b/build.sbt index 5722eacdd..222c68977 100644 --- a/build.sbt +++ b/build.sbt @@ -1316,6 +1316,8 @@ lazy val lmCoursier = project ) .dependsOn(lmCore) +lazy val checkLmcoursierPackage = taskKey[Unit]("") + lazy val lmCoursierShaded = project .in(file("lm-coursier/target/shaded-module")) .settings( @@ -1332,6 +1334,20 @@ lazy val lmCoursierShaded = project ), assembly / assemblyOption ~= { _.withIncludeScala(false) }, conflictWarning := ConflictWarning.disable, + checkLmcoursierPackage := { + val jarFile = assembly.value + IO.withTemporaryDirectory { tmp => + val notLmcoursierPackageClasses = IO + .unzip(jarFile, tmp, _.endsWith(".class")) + .toSeq + .map(f => IO.relativize(tmp, f).getOrElse(sys.error(s"invalid path ${f}"))) + .filterNot(f => f.startsWith("lmcoursier") || f.startsWith("META-INF")) + .sorted + notLmcoursierPackageClasses.foreach(println) + assert(notLmcoursierPackageClasses.isEmpty) + } + }, + Test / test := (Test / test).dependsOn(checkLmcoursierPackage).value, Utils.noPublish, assemblyShadeRules := { val namespacesToShade = Seq(