diff options
author | Som Snytt <som.snytt@gmail.com> | 2016-07-21 06:22:48 -0700 |
---|---|---|
committer | Som Snytt <som.snytt@gmail.com> | 2016-07-21 06:40:27 -0700 |
commit | 06f8b6244ae8e80152f25a81cc2b92afd14c62f4 (patch) | |
tree | 388d99564016fa2ccac28c6bf9f689ee897e061b /test/junit/scala/util/SpecVersionTest.scala | |
parent | 656162bb48fbbd703790a2c94d4563e40ddfdfc2 (diff) | |
download | scala-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.scala | 52 |
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")) } } |