diff options
author | Jon Turney <jon.turney@dronecode.org.uk> | 2018-08-13 16:57:09 +0100 |
---|---|---|
committer | Jon Turney <jon.turney@dronecode.org.uk> | 2018-09-12 15:38:00 +0100 |
commit | 8d3881a0425a73d9deb22044dd68a895aa749b45 (patch) | |
tree | 0df95fd4998fbcbff25efbf03c618e4206253ddf | |
parent | da2c4ad3a892780cea8058ad170d27b3a7e74a82 (diff) | |
download | meson-8d3881a0425a73d9deb22044dd68a895aa749b45.zip meson-8d3881a0425a73d9deb22044dd68a895aa749b45.tar.gz meson-8d3881a0425a73d9deb22044dd68a895aa749b45.tar.bz2 |
Add more tests of version comparison
-rwxr-xr-x | run_unittests.py | 103 |
1 files changed, 102 insertions, 1 deletions
diff --git a/run_unittests.py b/run_unittests.py index 95784d2..09d1c5e 100755 --- a/run_unittests.py +++ b/run_unittests.py @@ -39,7 +39,7 @@ from mesonbuild.interpreter import Interpreter, ObjectHolder from mesonbuild.mesonlib import ( is_windows, is_osx, is_cygwin, is_dragonflybsd, is_openbsd, windows_proof_rmtree, python_command, version_compare, - BuildDirLock + BuildDirLock, Version ) from mesonbuild.environment import detect_ninja from mesonbuild.mesonlib import MesonException, EnvironmentException @@ -698,6 +698,107 @@ class InternalTests(unittest.TestCase): ]: self.assertEqual(comparefunc(a, b)[0], result) + for (a, b, result) in [ + # examples from https://fedoraproject.org/wiki/Archive:Tools/RPM/VersionComparison + ("1.0010", "1.9", 1), + ("1.05", "1.5", 0), + ("1.0", "1", 1), + ("2.50", "2.5", 1), + ("fc4", "fc.4", 0), + ("FC5", "fc4", -1), + ("2a", "2.0", -1), + ("1.0", "1.fc4", 1), + ("3.0.0_fc", "3.0.0.fc", 0), + # from RPM tests + ("1.0", "1.0", 0), + ("1.0", "2.0", -1), + ("2.0", "1.0", 1), + ("2.0.1", "2.0.1", 0), + ("2.0", "2.0.1", -1), + ("2.0.1", "2.0", 1), + ("2.0.1a", "2.0.1a", 0), + ("2.0.1a", "2.0.1", 1), + ("2.0.1", "2.0.1a", -1), + ("5.5p1", "5.5p1", 0), + ("5.5p1", "5.5p2", -1), + ("5.5p2", "5.5p1", 1), + ("5.5p10", "5.5p10", 0), + ("5.5p1", "5.5p10", -1), + ("5.5p10", "5.5p1", 1), + ("10xyz", "10.1xyz", -1), + ("10.1xyz", "10xyz", 1), + ("xyz10", "xyz10", 0), + ("xyz10", "xyz10.1", -1), + ("xyz10.1", "xyz10", 1), + ("xyz.4", "xyz.4", 0), + ("xyz.4", "8", -1), + ("8", "xyz.4", 1), + ("xyz.4", "2", -1), + ("2", "xyz.4", 1), + ("5.5p2", "5.6p1", -1), + ("5.6p1", "5.5p2", 1), + ("5.6p1", "6.5p1", -1), + ("6.5p1", "5.6p1", 1), + ("6.0.rc1", "6.0", 1), + ("6.0", "6.0.rc1", -1), + ("10b2", "10a1", 1), + ("10a2", "10b2", -1), + ("1.0aa", "1.0aa", 0), + ("1.0a", "1.0aa", -1), + ("1.0aa", "1.0a", 1), + ("10.0001", "10.0001", 0), + ("10.0001", "10.1", 0), + ("10.1", "10.0001", 0), + ("10.0001", "10.0039", -1), + ("10.0039", "10.0001", 1), + ("4.999.9", "5.0", -1), + ("5.0", "4.999.9", 1), + ("20101121", "20101121", 0), + ("20101121", "20101122", -1), + ("20101122", "20101121", 1), + ("2_0", "2_0", 0), + ("2.0", "2_0", 0), + ("2_0", "2.0", 0), + ("a", "a", 0), + ("a+", "a+", 0), + ("a+", "a_", 0), + ("a_", "a+", 0), + ("+a", "+a", 0), + ("+a", "_a", 0), + ("_a", "+a", 0), + ("+_", "+_", 0), + ("_+", "+_", 0), + ("_+", "_+", 0), + ("+", "_", 0), + ("_", "+", 0), + # other tests + ('0.99.beta19', '0.99.beta14', 1), + ("1.0.0", "2.0.0", -1), + (".0.0", "2.0.0", -1), + ("alpha", "beta", -1), + ("1.0", "1.0.0", -1), + ("2.456", "2.1000", -1), + ("2.1000", "3.111", -1), + ("2.001", "2.1", 0), + ("2.34", "2.34", 0), + ("6.1.2", "6.3.8", -1), + ("1.7.3.0", "2.0.0", -1), + ("2.24.51", "2.25", -1), + ("2.1.5+20120813+gitdcbe778", "2.1.5", 1), + ("3.4.1", "3.4b1", 1), + ("041206", "200090325", -1), + ("0.6.2+git20130413", "0.6.2", 1), + ("2.6.0+bzr6602", "2.6.0", 1), + ("2.6.0", "2.6b2", 1), + ("2.6.0+bzr6602", "2.6b2x", 1), + ("0.6.7+20150214+git3a710f9", "0.6.7", 1), + ("15.8b", "15.8.0.1", -1), + ("1.2rc1", "1.2.0", -1), + ]: + ver_a = Version(a) + ver_b = Version(b) + self.assertEqual(ver_a.__cmp__(ver_b), result) + self.assertEqual(ver_b.__cmp__(ver_a), -result) @unittest.skipIf(is_tarball(), 'Skipping because this is a tarball release') class DataTests(unittest.TestCase): |