summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorRaphaël Barrois <raphael.barrois@polytechnique.org>2022-05-26 15:28:23 +0200
committerRaphaël Barrois <raphael.barrois@polytechnique.org>2022-05-26 15:34:45 +0200
commit57c78e7307792879dce33734c11e7774383b9d36 (patch)
treecef730ce8d6f5af904b0a4ad261cc937ea78e69d /tests
parent7dcc42d2a828adbbeb6f8a23cdca40a3c61782bc (diff)
downloadsemantic-version-57c78e7307792879dce33734c11e7774383b9d36.tar.gz
Guarantee a stable ordering with build metadata
Sorting any permutation of Version objects should always yield the same result, even if those hold some build metadata. To that end, the "precedence_key" is now used exclusively for sorting; direct comparisons between Version objects still ignores the "build" metadata, using a different precedence key. For performance improvements, both precedence keys are cached. Closes: #132
Diffstat (limited to 'tests')
-rwxr-xr-xtests/test_base.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/tests/test_base.py b/tests/test_base.py
index 4a844c3..e6a3733 100755
--- a/tests/test_base.py
+++ b/tests/test_base.py
@@ -229,6 +229,20 @@ class VersionTestCase(unittest.TestCase):
self.assertTrue(v != '0.1.0')
self.assertFalse(v == '0.1.0')
+ def test_stable_ordering(self):
+ a = [
+ base.Version('0.1.0'),
+ base.Version('0.1.0+a'),
+ base.Version('0.1.0+a.1'),
+ base.Version('0.1.1-a1'),
+ ]
+ b = [a[1], a[3], a[0], a[2]]
+
+ self.assertEqual(
+ sorted(a, key=lambda v: v.precedence_key),
+ sorted(b, key=lambda v: v.precedence_key),
+ )
+
def test_bump_clean_versions(self):
# We Test each property explicitly as the == comparator for versions
# does not distinguish between prerelease or builds for equality.