From 9595cd4204b375ce4ae708ad28eeaec49b34b5a5 Mon Sep 17 00:00:00 2001 From: kenji yoshida <6b656e6a69@gmail.com> Date: Thu, 27 Aug 2026 07:35:12 +0900 Subject: [PATCH] [2.x] test: Fix MatchError in RunFromSourceMain if RC version (#9684) --- .../src/test/scala/sbt/RunFromSourceMain.scala | 17 ++++++++++++----- .../test/scala/sbt/RunFromSourceMainSpec.scala | 12 ++++++++++++ 2 files changed, 24 insertions(+), 5 deletions(-) create mode 100644 sbt-app/src/test/scala/sbt/RunFromSourceMainSpec.scala 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") + } +}