7mind / izumi

Productivity-oriented collection of lightweight fancy stuff for Scala toolchain
https://izumi.7mind.io
BSD 2-Clause "Simplified" License
613 stars 66 forks source link

sbt-1.3.0-RC2 classpath bugs #545

Closed neko-kai closed 4 years ago

neko-kai commented 5 years ago

Certain classpath-based tests started failing after upgrade from 1.3.0-RC1 to 1.3.0-RC2. These tests seem to pass with fork in Test := true, BUT NOT with classLoaderLayeringStrategy in Test := ClassLoaderLayeringStrategy.Flat Specifically:

LoaderTest.scala (no fastparse found on classpath):

[info] FS enumerator
[info] - should be able to find files in jars *** FAILED *** (40 milliseconds)
[info]   Map() had size 0 instead of expected size 1 (LoaderTest.scala:24)
[info]   org.scalatest.exceptions.TestFailedException:
[info]   at org.scalatest.Assertions.newAssertionFailedException(Assertions.scala:530)
[info]   at org.scalatest.Assertions.newAssertionFailedException$(Assertions.scala:529)
[info]   at org.scalatest.WordSpec.newAssertionFailedException(WordSpec.scala:1881)
[info]   at org.scalatest.Assertions$AssertionsHelper.macroAssert(Assertions.scala:503)
[info]   at com.github.pshirshov.izumi.idealingua.LoaderTest.$anonfun$new$4(LoaderTest.scala:24)

CompilerTest.scala - the classpath passed down to scalac is assembled from the current classpath, but on new sbt RC it's barren, jdk8 and no libraries:

-classpath /Users/kai/.sbt/boot/scala-2.12.8/lib/scala-reflect.jar:/Users/kai/.sbt/boot/scala-2.12.8/lib/scala-library.jar:/Users/kai/.sbt/boot/scala-2.12.8/lib/scala-library.jar:/Users/kai/.sbt/boot/scala-2.12.8/org.scala-sbt/sbt/1.3.0-RC2/test-interface-1.0.jar:/usr/local/Cellar/sbt/1.1.6/libexec/bin/sbt-launch.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/sunec.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/nashorn.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/cldrdata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/jfxrt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/dnsns.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/localedata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/jaccess.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/zipfs.jar:/System/Library/Java/Extensions/MRJToolkit.jar:/usr/local/Cellar/sbt/1.1.6/libexec/bin/sbt-launch.jar

scala-reflect misbehaves also, TypeTag creation fails in shutdown hook after running test Task and exiting sbt:

[info] shutting down server
Exception in thread "termination-hook-memoizer" java.lang.NoClassDefFoundError: com/github/pshirshov/izumi/distage/testkit/services/ExternalResourceProvider$Singleton$$typecreator1$3
        at com.github.pshirshov.izumi.distage.testkit.services.ExternalResourceProvider$Singleton$.$anonfun$stop$1(ExternalResourceProvider.scala:150)
        at com.github.pshirshov.izumi.distage.testkit.services.ExternalResourceProvider$Singleton$.$anonfun$stop$1$adapted(ExternalResourceProvider.scala:131)
        at scala.collection.mutable.ResizableArray.foreach(ResizableArray.scala:62)
        at scala.collection.mutable.ResizableArray.foreach$(ResizableArray.scala:55)
        at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:49)
        at com.github.pshirshov.izumi.distage.testkit.services.ExternalResourceProvider$Singleton$.stop(ExternalResourceProvider.scala:131)
        at com.github.pshirshov.izumi.distage.testkit.services.ExternalResourceProvider$Singleton$.$anonfun$shutdownHook$1(ExternalResourceProvider.scala:105)
        at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassNotFoundException: com.github.pshirshov.izumi.distage.testkit.services.ExternalResourceProvider$Singleton$$typecreator1$3
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 8 more
neko-kai commented 4 years ago

This is unlikely to be revisited