diff --git a/sbt-app/src/test/scala/sbt/RunFromSourceMain.scala b/sbt-app/src/test/scala/sbt/RunFromSourceMain.scala index c8040d65d..4111cc73f 100644 --- a/sbt-app/src/test/scala/sbt/RunFromSourceMain.scala +++ b/sbt-app/src/test/scala/sbt/RunFromSourceMain.scala @@ -150,23 +150,30 @@ object RunFromSourceMain { import lmcoursier.{ CoursierConfiguration, CoursierDependencyResolution } CoursierDependencyResolution(CoursierConfiguration()) } - val Name = """(.*)(?:\-[\d.]+)\.jar""".r - val BinPre = """(.*)(?:\-[\d.]+)-(?:bin|pre)-.*\.jar""".r val module = "org.scala-lang" % "scala3-compiler_3" % scalaVersion lm.retrieve(module, scalaModuleInfo = None, scalaHome1Temp, log) match case Left(w) => throw w.resolveException case Right(jars) => assert(jars.nonEmpty, s"no jars for scala $scalaVersion") jars.foreach: f => - val name = f.getName match - case Name(name) => name - case BinPre(name) => name + val name = jarName(f.getName) IO.copyFile(f, scalaHome1Lib / s"$name.jar") } scalaHome1 } } + private val Name = """(.*)(?:\-[\d.]+)\.jar""".r + private val BinPre = """(.*)(?:\-[\d.]+)-(?:bin|pre)-.*\.jar""".r + private val RC = """(.*)(?:\-[\d.]+)-(?:RC\d+)\.jar""".r + + private[sbt] def jarName(value: String): String = + value match { + case Name(name) => name + case BinPre(name) => name + case RC(name) => name + } + private def errorAndExit(msg: String): Nothing = { System.err.println(msg); exit(1) } private def exit(code: Int): Nothing = System.exit(code).asInstanceOf[Nothing] } diff --git a/sbt-app/src/test/scala/sbt/RunFromSourceMainSpec.scala b/sbt-app/src/test/scala/sbt/RunFromSourceMainSpec.scala new file mode 100644 index 000000000..c7d5186d7 --- /dev/null +++ b/sbt-app/src/test/scala/sbt/RunFromSourceMainSpec.scala @@ -0,0 +1,12 @@ +package sbt + +import verify.BasicTestSuite + +object RunFromSourceMainSpec extends BasicTestSuite { + test("jarName") { + assert(RunFromSourceMain.jarName("scala3-compiler_3-3.8.4.jar") == "scala3-compiler_3") + assert(RunFromSourceMain.jarName("scala3-library_3-3.8.4.jar") == "scala3-library_3") + assert(RunFromSourceMain.jarName("scala3-library_3-3.9.0-RC6.jar") == "scala3-library_3") + assert(RunFromSourceMain.jarName("scala3-library_3-3.9.0-RC123.jar") == "scala3-library_3") + } +}