diff options
author | Dan McGregor <dan.mcgregor@usask.ca> | 2024-09-09 09:41:51 -0600 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2024-09-12 16:17:20 +0100 |
commit | de29354e8410c07905a8d129d260cd52536aaa30 (patch) | |
tree | 401eff7efe36e32af2348a26e32280464b72577f | |
parent | d016d18a9f14871c444a13305f4040f28000a21f (diff) | |
download | poky-de29354e8410c07905a8d129d260cd52536aaa30.tar.gz |
bitbake: prserv: increment 9 to 10 correctly
Previously, incrementing "0.9" would result in "0.1.0", which
generally gets recognised as a lower version number. Even more
surprising, incrementing "0.99" returned "0.1.0.0".
This is due to the behaviour of the list function on a string
object; it adds each character as an element in a new list,
causing the new string '10' to become the list [ '1', '0' ].
Instead of converting a string to a list, add the string to a
new list, and concatenate it with the existing list slice. And
provide test cases for "0.9" -> "0.10" and related edge cases.
(Bitbake rev: 96ddeefa88ff4c37e9ea096726a7cdca5b5b4572)
Signed-off-by: Dan McGregor <dan.mcgregor@usask.ca>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | bitbake/lib/prserv/__init__.py | 2 | ||||
-rw-r--r-- | bitbake/lib/prserv/tests.py | 2 |
2 files changed, 3 insertions, 1 deletions
diff --git a/bitbake/lib/prserv/__init__.py b/bitbake/lib/prserv/__init__.py index a817b03c1e..ffc5a40a28 100644 --- a/bitbake/lib/prserv/__init__.py +++ b/bitbake/lib/prserv/__init__.py | |||
@@ -34,7 +34,7 @@ def increase_revision(ver): | |||
34 | logger.critical("Unable to increase revision value %s: %s" % (ver, e)) | 34 | logger.critical("Unable to increase revision value %s: %s" % (ver, e)) |
35 | raise e | 35 | raise e |
36 | 36 | ||
37 | return ".".join(fields[0:-1] + list(str(val + 1))) | 37 | return ".".join(fields[0:-1] + [ str(val + 1) ]) |
38 | 38 | ||
39 | def _revision_greater_or_equal(rev1, rev2): | 39 | def _revision_greater_or_equal(rev1, rev2): |
40 | """Compares x.y.z revision numbers, using integer comparison | 40 | """Compares x.y.z revision numbers, using integer comparison |
diff --git a/bitbake/lib/prserv/tests.py b/bitbake/lib/prserv/tests.py index 8765b129f2..df0c003003 100644 --- a/bitbake/lib/prserv/tests.py +++ b/bitbake/lib/prserv/tests.py | |||
@@ -84,6 +84,8 @@ class FunctionTests(unittest.TestCase): | |||
84 | self.assertEqual(increase_revision("1.0"), "1.1") | 84 | self.assertEqual(increase_revision("1.0"), "1.1") |
85 | self.assertEqual(increase_revision("1.1.1"), "1.1.2") | 85 | self.assertEqual(increase_revision("1.1.1"), "1.1.2") |
86 | self.assertEqual(increase_revision("1.1.1.3"), "1.1.1.4") | 86 | self.assertEqual(increase_revision("1.1.1.3"), "1.1.1.4") |
87 | self.assertEqual(increase_revision("9"), "10") | ||
88 | self.assertEqual(increase_revision("1.9"), "1.10") | ||
87 | self.assertRaises(ValueError, increase_revision, "1.a") | 89 | self.assertRaises(ValueError, increase_revision, "1.a") |
88 | self.assertRaises(ValueError, increase_revision, "1.") | 90 | self.assertRaises(ValueError, increase_revision, "1.") |
89 | self.assertRaises(ValueError, increase_revision, "") | 91 | self.assertRaises(ValueError, increase_revision, "") |