Skip to content

Commit eb6ef47

Browse files
authored
Merge pull request #60 from querqy/fix/versionInfo_backend
Fix version parsing in backend for version patterns missing minor or build versions
2 parents b66d013 + 1e308bb commit eb6ef47

File tree

2 files changed

+12
-15
lines changed

2 files changed

+12
-15
lines changed

app/models/config/SmuiVersion.scala

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -35,19 +35,12 @@ case class SmuiVersion(
3535
object SmuiVersion extends Logging {
3636

3737
def parse(rawVersionString: String): Option[SmuiVersion] = {
38-
val regExPattern = "([\\d]+).([\\d]+).([\\d]+)".r
39-
Try({
40-
val regExPattern(majorStr, minorStr, buildStr) = rawVersionString
41-
// convert strings to Ints
42-
SmuiVersion(
43-
majorStr.toInt, minorStr.toInt, buildStr.toInt
44-
)
45-
}).toOption match {
46-
case None => {
47-
logger.error(s":: parse :: failed to parse rawVersionString = $rawVersionString")
48-
None
49-
}
50-
case Some(version) => Some(version)
38+
val Pattern = """^(\d+)(.\d+)?(.\d+)?$""".r
39+
rawVersionString match {
40+
case Pattern(major, null, null) => Some(SmuiVersion(major.toInt, 0, 0))
41+
case Pattern(major, minor, null) => Some(SmuiVersion(major.toInt, minor.tail.toInt, 0))
42+
case Pattern(major, minor, build) => Some(SmuiVersion(major.toInt, minor.tail.toInt, build.tail.toInt))
43+
case _ => None
5144
}
5245
}
5346

@@ -85,6 +78,7 @@ object SmuiVersion extends Logging {
8578
} else {
8679
rawVer1.get
8780
})
81+
8882
parse(rawVer) match {
8983
case None => {
9084
logger.error(s":: unable to parse latest DockerHub version string for SMUI (rawVer = $rawVer)")

test/models/config/SmuiVersionSpec.scala

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,15 @@ class SmuiVersionSpec extends FlatSpec with Matchers {
2323

2424
"SmuiVersion version parsing" should "return None for invalid strings" in {
2525
SmuiVersion.parse("invalid") shouldEqual None
26-
SmuiVersion.parse("1.0") shouldEqual None
2726
SmuiVersion.parse("1.0.") shouldEqual None
28-
SmuiVersion.parse("1") shouldEqual None
2927
SmuiVersion.parse("1.") shouldEqual None
3028
}
3129

30+
"SmuiVersion version parsing" should "fill missing values for minor or build versions" in {
31+
SmuiVersion.parse("1") shouldEqual Some(SmuiVersion(1, 0, 0))
32+
SmuiVersion.parse("1.0") shouldEqual Some(SmuiVersion(1, 0, 0))
33+
}
34+
3235
"SmuiVersion for next deployment" should "be greater than latest version provided on DockerHub" in {
3336

3437
// TODO deal with local deployments, that do not necessarily come with an incremented version number

0 commit comments

Comments
 (0)