deb: split Debian revision at the last hyphen

Per Debian Policy, the version is split at the last hyphen:
https://www.debian.org/doc/debian-policy/ch-controlfields.html#version

Add tests for the ordering of '+', which is a regular non-letter sorted by its ASCII value (see Comparing version numbers on the same page).
This commit is contained in:
Twaik Yont authored and André Roth committed 2026-11-02 14:48:41 +01:00
1 parent eaf9453897
commit 242a0d4010
1 file changed
+20
+20
View File
@@ -78,6 +78,12 @@ func (s *VersionSuite) TestIsValidVersion(c *C) {
// valid upstream_version, but debian_revision contains a disallowed character
valid = isValidVersion("1.2.3-abc!")
c.Check(valid, Equals, false)
e, u, d = parseVersion("1.3-pre4-1")
c.Check([]string{e, u, d}, DeepEquals, []string{"", "1.3-pre4", "1"})
e, u, d = parseVersion("4:1.3-pre4-1")
c.Check([]string{e, u, d}, DeepEquals, []string{"4", "1.3-pre4", "1"})
}
func (s *VersionSuite) TestCompareLexicographic(c *C) {
@@ -169,6 +175,20 @@ func (s *VersionSuite) TestCompareVersions(c *C) {
check("1:abc~1.2.3-", "1:1.2.3~abc-good", 0, LeftInvalid)
check("1:1.2.3~abc-good", "1:abc~1.2.3-", 0, RightInvalid)
check("1:abc~1.2.3-", "2:def~4.5.6-", 0, BothInvalid)
c.Check(CompareVersions("5.2.0.3", "5.2.0.283"), Equals, -1)
c.Check(CompareVersions("4.3.5a", "4.3.5-rc3-1"), Equals, -1)
c.Check(CompareVersions("1.6.0-rc1+really1.6.0-0", "1.6.0-rc1-0"), Equals, 1)
c.Check(CompareVersions("1.2-3-4", "1.2-3-5"), Equals, -1)
c.Check(CompareVersions("1.0-1-1", "1.0-1"), Equals, 1)
c.Check(CompareVersions("1.0+1", "1.0"), Equals, 1)
c.Check(CompareVersions("1.0+a-1", "1.0-a-1"), Equals, -1)
c.Check(CompareVersions("1.0+1-1", "1.0-1"), Equals, 1)
c.Check(CompareVersions("1.0-1+b1", "1.0-1"), Equals, 1)
c.Check(CompareVersions("1.0-1+b1", "1.0-1~bpo1"), Equals, 1)
c.Check(CompareVersions("1.0-1+b2", "1.0-1+b10"), Equals, -1)
c.Check(CompareVersions("1.0.1+dfsg-1", "1.0.1-1"), Equals, 1)
c.Check(CompareVersions("1.0-1+b1", "1.0-2"), Equals, -1)
}
func (s *VersionSuite) TestParseDependency(c *C) {