[2.x] test: Fix MatchError in RunFromSourceMain if RC version (#9684)

This commit is contained in:
kenji yoshida
2026-08-26 18:35:12 -04:00
committed by GitHub
parent a1c67621ef
commit 9595cd4204
2 changed files with 24 additions and 5 deletions
@@ -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]
}
@@ -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")
}
}