From 2405a89e92ff2172f18eefbd5dc8d612e0259a64 Mon Sep 17 00:00:00 2001 From: Omkar Phansopkar Date: Sun, 24 Sep 2023 15:41:11 +0530 Subject: [PATCH] Fixed epoch parser failing for numeric values Signed-off-by: Omkar Phansopkar --- src/packagedcode/rpm.py | 3 +++ .../apache-commons-io-2.4-12.el7.noarch.rpm | Bin 0 -> 8957 bytes ...ons-io-2.4-12.el7.noarch.rpm-expected.json | 19 ++++++++++++++++++ tests/packagedcode/test_rpm.py | 4 ++++ 4 files changed, 26 insertions(+) create mode 100644 tests/packagedcode/data/rpm/header/apache-commons-io-2.4-12.el7.noarch.rpm create mode 100644 tests/packagedcode/data/rpm/header/apache-commons-io-2.4-12.el7.noarch.rpm-expected.json diff --git a/src/packagedcode/rpm.py b/src/packagedcode/rpm.py index 01ae1ab850e..7fb1d95763c 100644 --- a/src/packagedcode/rpm.py +++ b/src/packagedcode/rpm.py @@ -96,6 +96,9 @@ def __new__(self, version, release=None, epoch=None): note: the sort order of the named tuple is the sort order. But for creation we put the rarely used epoch last with a default to None. """ + + epoch = str(epoch) if epoch else "" + if epoch and epoch.strip() and not epoch.isdigit(): raise ValueError('Invalid epoch: must be a number or empty.') if not version: diff --git a/tests/packagedcode/data/rpm/header/apache-commons-io-2.4-12.el7.noarch.rpm b/tests/packagedcode/data/rpm/header/apache-commons-io-2.4-12.el7.noarch.rpm new file mode 100644 index 0000000000000000000000000000000000000000..6fcf7c754b2a13ae67512c73b70eeba2b2133444 GIT binary patch literal 8957 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 literal 0 HcmV?d00001 diff --git a/tests/packagedcode/data/rpm/header/apache-commons-io-2.4-12.el7.noarch.rpm-expected.json b/tests/packagedcode/data/rpm/header/apache-commons-io-2.4-12.el7.noarch.rpm-expected.json new file mode 100644 index 00000000000..9d1e87ee975 --- /dev/null +++ b/tests/packagedcode/data/rpm/header/apache-commons-io-2.4-12.el7.noarch.rpm-expected.json @@ -0,0 +1,19 @@ +{ + "name": "apache-commons-io", + "epoch": "1", + "version": "2.4", + "release": "12.el7", + "arch": "noarch", + "os": "linux", + "summary": "Utilities to assist with developing IO functionality", + "description": null, + "distribution": null, + "vendor": "CentOS", + "license": "ASL 2.0", + "packager": "CentOS BuildSystem ", + "group": "Unspecified", + "url": "http://commons.apache.org/io", + "source_rpm": "apache-commons-io-2.4-12.el7.src.rpm", + "dist_url": null, + "is_binary": true +} diff --git a/tests/packagedcode/test_rpm.py b/tests/packagedcode/test_rpm.py index 0a726969384..56f4bfc5022 100644 --- a/tests/packagedcode/test_rpm.py +++ b/tests/packagedcode/test_rpm.py @@ -391,3 +391,7 @@ def test_rpm_tags_xsetup_0_28_b1_src_rpm(self): def test_rpm_tags_zziplib_0_11_15_3sf_i586_rpm(self): test_file = self.get_test_loc('rpm/header/zziplib-0.11.15-3sf.i586.rpm') self.check_rpm_tags(test_file) + + def test_rpm_tags_apache_commons_io_2_4_12_el7_noarch_rpm(self): + test_file = self.get_test_loc('rpm/header/apache-commons-io-2.4-12.el7.noarch.rpm') + self.check_rpm_tags(test_file) \ No newline at end of file