From a6fb855ca3ba7355a2cf915b817d93e0f32e4810 Mon Sep 17 00:00:00 2001 From: Lukas Holecek Date: Jul 10 2019 14:14:34 +0000 Subject: Fix matching some wrong product versions Signed-off-by: Lukas Holecek --- diff --git a/greenwave/consumers/resultsdb.py b/greenwave/consumers/resultsdb.py index ae45baf..81ccd8c 100644 --- a/greenwave/consumers/resultsdb.py +++ b/greenwave/consumers/resultsdb.py @@ -46,7 +46,7 @@ def _guess_product_version(toparse, koji_build=False): product_version = 'fedora-' elif toparse.startswith('epel'): product_version = 'epel-' - elif toparse.startswith('el'): + elif toparse.startswith('el') and len(toparse) > 2 and toparse[2].isdigit(): product_version = 'rhel-' elif toparse.startswith('fc') or toparse.startswith('Fedora'): product_version = 'fedora-' @@ -69,9 +69,10 @@ def _guess_product_version(toparse, koji_build=False): def _subject_product_version(subject_identifier, subject_type, koji_proxy=None): if subject_type == 'koji_build': try: - short_prod_version = subject_identifier.split('.')[-1] + _, _, release = subject_identifier.rsplit('-', 2) + _, short_prod_version = release.rsplit('.', 1) return _guess_product_version(short_prod_version, koji_build=True) - except KeyError: + except (KeyError, ValueError): pass if subject_type == "compose": diff --git a/greenwave/tests/test_resultsdb_consumer.py b/greenwave/tests/test_resultsdb_consumer.py index 9ac48b1..e66c235 100644 --- a/greenwave/tests/test_resultsdb_consumer.py +++ b/greenwave/tests/test_resultsdb_consumer.py @@ -346,6 +346,17 @@ def test_guess_product_version_with_koji(): assert product_version == 'fedora-rawhide' +@pytest.mark.parametrize('nvr', ( + 'badnvr.elastic-1-228', + 'badnvr-1.2-1.elastic8', + 'el99', + 'badnvr-1.2.f30', +)) +def test_guess_product_version_failure(nvr): + product_version = greenwave.consumers.resultsdb._subject_product_version(nvr, 'koji_build') + assert product_version is None + + @pytest.mark.parametrize("config,publish", parameters) @mock.patch('greenwave.resources.ResultsRetriever.retrieve') @mock.patch('greenwave.resources.retrieve_decision')