diff options
author | Raphaël Barrois <raphael.barrois@polytechnique.org> | 2022-05-26 15:28:23 +0200 |
---|---|---|
committer | Raphaël Barrois <raphael.barrois@polytechnique.org> | 2022-05-26 15:34:45 +0200 |
commit | 57c78e7307792879dce33734c11e7774383b9d36 (patch) | |
tree | cef730ce8d6f5af904b0a4ad261cc937ea78e69d /tests | |
parent | 7dcc42d2a828adbbeb6f8a23cdca40a3c61782bc (diff) | |
download | semantic-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-x | tests/test_base.py | 14 |
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. |