summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTill Maas <opensource@till.name>2013-03-03 18:00:23 +0100
committerTill Maas <opensource@till.name>2013-03-03 18:02:11 +0100
commit7cbba103420740edffcc9e8d050e3266d8106e03 (patch)
tree15b5fcb724486ab953522003de717cf2c7875776
parentff3386b4ae87faacbe90ea7103a1d744eaee9589 (diff)
downloadcnucnu-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-xcnucnu/package_list.py5
-rwxr-xr-xcnucnu/tests/package_list_test.py18
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)