diff --git a/kojihub/kojihub.py b/kojihub/kojihub.py index d8361d33..17b2a83c 100644 --- a/kojihub/kojihub.py +++ b/kojihub/kojihub.py @@ -4823,7 +4823,10 @@ def get_maven_build(buildInfo, strict=False): columns=['build_id', 'group_id', 'artifact_id', 'version'], clauses=['build_id = %(build_id)i'], values={'build_id': build_id}) - return query.executeOne(strict=strict) + result = query.executeOne() + if strict and not result: + raise koji.GenericError('no such maven build: %s' % buildInfo) + return result def get_win_build(buildInfo, strict=False): diff --git a/tests/test_hub/test_get_maven_build.py b/tests/test_hub/test_get_maven_build.py new file mode 100644 index 00000000..63558771 --- /dev/null +++ b/tests/test_hub/test_get_maven_build.py @@ -0,0 +1,64 @@ +import mock +import koji +import kojihub +from .utils import DBQueryTestCase + + +class TestGetMavenBuild(DBQueryTestCase): + + def setUp(self): + super(TestGetMavenBuild, self).setUp() + self.maxDiff = None + self.find_build_id = mock.patch('kojihub.kojihub.find_build_id').start() + + def test_build_id_not_found(self): + self.find_build_id.return_value = None + result = kojihub.get_maven_build('test-build.1-23.1') + self.assertEqual(result, None) + self.assertEqual(len(self.queries), 0) + self.find_build_id.assert_called_once_with('test-build.1-23.1', strict=False) + + def test_valid(self): + self.find_build_id.return_value = 123 + self.qp_execute_one_return_value = {'build_id': 123} + kojihub.get_maven_build('test-build.1-23.1') + self.assertEqual(len(self.queries), 1) + query = self.queries[0] + self.assertEqual(query.tables, ['maven_builds']) + self.assertEqual(query.joins, None) + self.assertEqual(query.clauses, ['build_id = %(build_id)i']) + self.assertEqual(query.values, {'build_id': 123}) + self.assertEqual(query.columns, ['artifact_id', 'build_id', 'group_id', 'version']) + + self.find_build_id.assert_called_once_with('test-build.1-23.1', strict=False) + + def test_without_result_without_strict(self): + self.find_build_id.return_value = 123 + self.qp_execute_one_return_value = {} + result = kojihub.get_maven_build('test-build.1-23.1') + self.assertEqual(result, {}) + self.assertEqual(len(self.queries), 1) + query = self.queries[0] + self.assertEqual(query.tables, ['maven_builds']) + self.assertEqual(query.joins, None) + self.assertEqual(query.clauses, ['build_id = %(build_id)i']) + self.assertEqual(query.values, {'build_id': 123}) + self.assertEqual(query.columns, ['artifact_id', 'build_id', 'group_id', 'version']) + + self.find_build_id.assert_called_once_with('test-build.1-23.1', strict=False) + + def test_without_result_with_strict(self): + self.find_build_id.return_value = 123 + self.qp_execute_one_return_value = {} + with self.assertRaises(koji.GenericError) as ex: + kojihub.get_maven_build('test-build.1-23.1', strict=True) + self.assertEqual('no such maven build: test-build.1-23.1', str(ex.exception)) + self.assertEqual(len(self.queries), 1) + query = self.queries[0] + self.assertEqual(query.tables, ['maven_builds']) + self.assertEqual(query.joins, None) + self.assertEqual(query.clauses, ['build_id = %(build_id)i']) + self.assertEqual(query.values, {'build_id': 123}) + self.assertEqual(query.columns, ['artifact_id', 'build_id', 'group_id', 'version']) + + self.find_build_id.assert_called_once_with('test-build.1-23.1', strict=True)