Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -133,11 +133,10 @@ final case class ScalafmtDynamic(
): FormatEval[ScalafmtReflectConfig] = {
for {
version <- readVersion(configPath)
current = ScalafmtReflect.current
fmtReflect <-
if (version == ScalafmtVersion.current)
Right(ScalafmtReflect.current)
else
resolveFormatter(configPath, version)
if (version == current.version) Right(current)
else resolveFormatter(configPath, version)
config <- fmtReflect.parseConfig(configPath).toEither.left.map {
case ex: ScalafmtDynamicError => ex
case ex => new UnknownConfigError(configPath, ex)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,11 @@ case class ScalafmtReflect(
}

object ScalafmtReflect {
val current =
ScalafmtReflect(getClass.getClassLoader, ScalafmtVersion.current, false)

lazy val current = ScalafmtReflect(
getClass.getClassLoader,
ScalafmtVersion.parse(BuildInfo.stable).get,
false
)

}
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,10 @@ case class ScalafmtVersion(

object ScalafmtVersion {

val current = ScalafmtVersion(Int.MaxValue / 100, 0, 0)

private val versionRegex = """(\d)\.(\d)\.(\d)(?:-RC(\d))?(-SNAPSHOT)?""".r

def parse(version: String): Option[ScalafmtVersion] =
version match {
case "current" => Some(current)
case versionRegex(major, minor, patch, rc, snapshot) =>
Try {
ScalafmtVersion(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -449,7 +449,7 @@ class DynamicSuite extends FunSuite {

check("invalid config in current") { f =>
f.setConfig(
s"""|version=current
s"""|version=${BuildInfo.stable}
|align=does-not-exist
|""".stripMargin
)
Expand Down Expand Up @@ -484,4 +484,24 @@ class DynamicSuite extends FunSuite {
assert(thrown.getMessage.startsWith("Invalid config: Type mismatch;"))
}

check("invalid version - current") { f =>
f.setConfig(
s"""|version=current
|""".stripMargin
)
val error =
f.assertThrows[ScalafmtDynamicError.ConfigInvalidVersion]().getMessage
assertEquals(error, "Invalid version: current")
}

check("invalid version - missing") { f =>
f.setConfig(
s"""|maxColumn = 40
|""".stripMargin
)
val error =
f.assertThrows[ScalafmtDynamicError.ConfigMissingVersion]().getMessage
assertEquals(error, "Missing version")
}

}