summaryrefslogtreecommitdiff
path: root/test/junit/scala/util/SpecVersionTest.scala
diff options
context:
space:
mode:
authorSom Snytt <som.snytt@gmail.com>2016-07-21 06:22:48 -0700
committerSom Snytt <som.snytt@gmail.com>2016-07-21 06:40:27 -0700
commit06f8b6244ae8e80152f25a81cc2b92afd14c62f4 (patch)
tree388d99564016fa2ccac28c6bf9f689ee897e061b /test/junit/scala/util/SpecVersionTest.scala
parent656162bb48fbbd703790a2c94d4563e40ddfdfc2 (diff)
downloadscala-06f8b6244ae8e80152f25a81cc2b92afd14c62f4.tar.gz
scala-06f8b6244ae8e80152f25a81cc2b92afd14c62f4.tar.bz2
scala-06f8b6244ae8e80152f25a81cc2b92afd14c62f4.zip
SI-9750 Spec check major.minor.security
Don't assume spec is just major, but allow arbitrary version number for both spec value and user value to check. Only the first three dot-separated fields are considered, after skipping optional leading value "1" in legacy format. Minimal validity checks of user arg are applied. Leading three fields, if present, must be number values, but subsequent fields are ignored. Note that a version number is not a version string, which optionally includes pre and build info, `9-ea+109`.
Diffstat (limited to 'test/junit/scala/util/SpecVersionTest.scala')
-rw-r--r--test/junit/scala/util/SpecVersionTest.scala52
1 files changed, 44 insertions, 8 deletions
diff --git a/test/junit/scala/util/SpecVersionTest.scala b/test/junit/scala/util/SpecVersionTest.scala
index 9232c4721b..4639389dd9 100644
--- a/test/junit/scala/util/SpecVersionTest.scala
+++ b/test/junit/scala/util/SpecVersionTest.scala
@@ -34,6 +34,8 @@ class SpecVersionTest {
assert(sut9 isJavaAtLeast "8")
assert(sut9 isJavaAtLeast "9")
assert(sut9.isJavaAtLeast(9))
+ assertFalse(sut9.isJavaAtLeast(10))
+ assertFalse(sut9.isJavaAtLeast("10"))
}
// SI-7265
@@ -53,15 +55,49 @@ class SpecVersionTest {
}
@Test def variousBadVersionStrings(): Unit = {
- val sut7 = new TestProperties("1.7")
- val sut9 = new TestProperties("9")
- assertThrows[NumberFormatException](sut7.isJavaAtLeast("1.9"), _ == "Not a version: 1.9")
- assertThrows[NumberFormatException] { sut9 isJavaAtLeast "1.9" }
- assertThrows[NumberFormatException] { sut7 isJavaAtLeast "9.1" }
- assertThrows[NumberFormatException] { sut9 isJavaAtLeast "9.1" }
+ val sut = new TestProperties("9")
+ assertThrows[NumberFormatException](sut.isJavaAtLeast("1.9"), _ == "Not a version: 1.9")
+ assertThrows[NumberFormatException](sut.isJavaAtLeast("1."))
+ assertThrows[NumberFormatException](sut.isJavaAtLeast("1.8."))
+ assertThrows[NumberFormatException](sut.isJavaAtLeast("1.a"))
+ assertThrows[NumberFormatException](sut.isJavaAtLeast(""))
+ assertThrows[NumberFormatException](sut.isJavaAtLeast("."))
+ assertThrows[NumberFormatException](sut.isJavaAtLeast(".."))
+ assertThrows[NumberFormatException](sut.isJavaAtLeast(".5"))
+ assertThrows[NumberFormatException](sut.isJavaAtLeast("9-ea")) //version number, not version string
+ }
- val badvs = List("1.1.8", "1.", "1.a", "", ".", ".5", "1.7.1")
+ @Test def `spec has minor or more`(): Unit = {
+ val sut = new TestProperties("9.2.5")
+ assert(sut.isJavaAtLeast(9))
+ assert(sut.isJavaAtLeast("9"))
+ assert(sut.isJavaAtLeast("9.0.1"))
+ assert(sut.isJavaAtLeast("9.2.1"))
+ assert(sut.isJavaAtLeast("8.3.1"))
+ assert(sut.isJavaAtLeast("8.3.1.1.1"))
+ assertFalse(sut.isJavaAtLeast("9.3.1"))
+ assertFalse(sut.isJavaAtLeast("10.3.1"))
+ }
+
+ @Test def `compares only major minor security`(): Unit = {
+ val sut = new TestProperties("9.2.5.1.2.3")
+ assert(sut.isJavaAtLeast(9))
+ assert(sut.isJavaAtLeast("9"))
+ assert(sut.isJavaAtLeast("9.0.1"))
+ assert(sut.isJavaAtLeast("9.2.5.9.9.9"))
+ assertFalse(sut.isJavaAtLeast("9.2.6"))
+ }
- for (v <- badvs) assertThrows[NumberFormatException](sut7.isJavaAtLeast(v))
+ @Test def `futurely proofed`(): Unit = {
+ val sut = new TestProperties("10.2.5")
+ assert(sut.isJavaAtLeast(9))
+ assert(sut.isJavaAtLeast(10))
+ assert(sut.isJavaAtLeast("9"))
+ assert(sut.isJavaAtLeast("9.0.1"))
+ assert(sut.isJavaAtLeast("9.2.1"))
+ assert(sut.isJavaAtLeast("8.3.1"))
+ assert(sut.isJavaAtLeast("8.3.1.1.1"))
+ assert(sut.isJavaAtLeast("9.3.1"))
+ assertFalse(sut.isJavaAtLeast("10.3.1"))
}
}