From 1ff2ffdf30eb7305450d1cbf16f7db585c73e0db Mon Sep 17 00:00:00 2001 From: Lukas Holecek Date: Aug 27 2019 11:18:59 +0000 Subject: Fix exception if a Brew build task_id is None Avoid following XMLRPC exception. TypeError: cannot marshal None unless allow_none is enabled Signed-off-by: Lukas Holecek --- diff --git a/greenwave/consumers/resultsdb.py b/greenwave/consumers/resultsdb.py index 1b0375d..489ca30 100644 --- a/greenwave/consumers/resultsdb.py +++ b/greenwave/consumers/resultsdb.py @@ -69,7 +69,7 @@ def _subject_product_version(subject_identifier, subject_type, koji_proxy=None): if build: target = koji_proxy.getTaskRequest(build['task_id'])[1] return _guess_product_version(target, koji_build=True) - except KeyError: + except (KeyError, ValueError): pass except xmlrpc.client.Fault: pass diff --git a/greenwave/tests/test_resultsdb_consumer.py b/greenwave/tests/test_resultsdb_consumer.py index fe7fdf7..c667afe 100644 --- a/greenwave/tests/test_resultsdb_consumer.py +++ b/greenwave/tests/test_resultsdb_consumer.py @@ -347,6 +347,21 @@ def test_guess_product_version_with_koji(): assert product_version == 'fedora-rawhide' +def test_guess_product_version_with_koji_without_task_id(): + koji_proxy = mock.MagicMock() + koji_proxy.getBuild.return_value = {'task_id': None} + koji_proxy.getTaskRequest.side_effect = ValueError( + 'cannot marshal None unless allow_none is enabled') + + # pylint: disable=protected-access + product_version = greenwave.consumers.resultsdb._subject_product_version( + 'fake_koji_build', 'container-build', koji_proxy) + + koji_proxy.getBuild.assert_called_once_with('fake_koji_build') + koji_proxy.getTaskRequest.assert_called_once_with(None) + assert product_version is None + + @pytest.mark.parametrize('nvr', ( 'badnvr.elastic-1-228', 'badnvr-1.2-1.elastic8',