diff options
author | Till Maas <opensource@till.name> | 2013-03-03 18:00:23 +0100 |
---|---|---|
committer | Till Maas <opensource@till.name> | 2013-03-03 18:02:11 +0100 |
commit | 7cbba103420740edffcc9e8d050e3266d8106e03 (patch) | |
tree | 15b5fcb724486ab953522003de717cf2c7875776 | |
parent | ff3386b4ae87faacbe90ea7103a1d744eaee9589 (diff) | |
download | cnucnu-7cbba103420740edffcc9e8d050e3266d8106e03.tar.gz cnucnu-7cbba103420740edffcc9e8d050e3266d8106e03.tar.xz cnucnu-7cbba103420740edffcc9e8d050e3266d8106e03.zip |
Package: Support multiple groups in regex
Idea from Jaroslav Škarvada <jskarvad@redhat.com> in Red Hat bug report
759467 (https://bugzilla.redhat.com/show_bug.cgi?id=759467).
-rwxr-xr-x | cnucnu/package_list.py | 5 | ||||
-rwxr-xr-x | cnucnu/tests/package_list_test.py | 18 |
2 files changed, 22 insertions, 1 deletions
diff --git a/cnucnu/package_list.py b/cnucnu/package_list.py index e821fad..d5d6e88 100755 --- a/cnucnu/package_list.py +++ b/cnucnu/package_list.py @@ -269,7 +269,10 @@ class Package(object): upstream_versions = re.findall(self.regex, self.html) except sre_constants.error, e: raise cc_errors.UpstreamVersionRetrievalError("%s: invalid regular expression" % self.name) - for version in upstream_versions: + for index, version in enumerate(upstream_versions): + if type(version) == tuple: + version = ".".join([v for v in version if not v == ""]) + upstream_versions[index] = version if " " in version: raise cc_errors.UpstreamVersionRetrievalError("%s: invalid upstream version:>%s< - %s - %s " % (self.name, version, self.url, self.regex)) if len(upstream_versions) == 0: diff --git a/cnucnu/tests/package_list_test.py b/cnucnu/tests/package_list_test.py index 246ef53..2f95e98 100755 --- a/cnucnu/tests/package_list_test.py +++ b/cnucnu/tests/package_list_test.py @@ -52,6 +52,24 @@ class PackageTest(unittest.TestCase): self.assertEqual(p._latest_upstream, None) self.assertEqual(p._rpm_diff, None) + def testUpstreamVersions(self): + """ Test finding upstream versions + """ + # default matching + p = Package("cnucnu_test", "DEFAULT", "test_url", Repository()) + p._html = "cnucnu_test-1.23.tar.gz" + self.assertEqual(p.upstream_versions, ["1.23"]) + + # multiple groups + p = Package("cnucnu_test", "cnucnu_test-([1-9]+\.[1-9]+\.[1-9]+)-p([0-9]+)\.tar\.gz", "test_url", Repository()) + p._html = "cnucnu_test-1.2.3-p4.tar.gz" + self.assertEqual(p.upstream_versions, ["1.2.3.4"]) + + # empty group + p = Package("cnucnu_test", "cnucnu_test-([1-9]+\.[1-9]+\.[1-9]+)(-p([0-9]+))?\.tar\.gz", "test_url", Repository()) + p._html = "cnucnu_test-1.2.3.tar.gz" + self.assertEqual(p.upstream_versions, ["1.2.3"]) + if __name__ == "__main__": suite = unittest.TestLoader().loadTestsFromTestCase(PackageTest) unittest.TextTestRunner(verbosity=2).run(suite) |