#1081 hub: [getPackageID] add strict behavior
Merged 5 years ago by mikem. Opened 5 years ago by julian8628.
julian8628/koji issue/1076  into  master

file modified
+12 -6
@@ -10200,14 +10200,20 @@ 

      getTagID = staticmethod(get_tag_id)

      getTag = staticmethod(get_tag)

  

-     def getPackageID(self, name):

-         c = context.cnx.cursor()

-         q = """SELECT id FROM package WHERE name=%(name)s"""

-         c.execute(q, locals())

-         r = c.fetchone()

+     def getPackageID(self, name, strict=False):

+         """Get package ID by name.

+         If package doesn't exist, return None, unless strict is True in which

+         case an exception is raised."""

+         query = QueryProcessor(tables=['package'],

+                                columns=['id'],

+                                clauses=['name=%(name)s'],

+                                values=locals())

+         r = query.executeOne()

          if not r:

+             if strict:

+                 raise koji.GenericError('Invalid package name: %s' % name)

              return None

-         return r[0]

+         return r['id']

  

      getPackage = staticmethod(lookup_package)

  

@@ -0,0 +1,47 @@ 

+ from __future__ import absolute_import

+ 

+ import mock

+ 

+ from .utils import DBQueryTestCase

+ 

+ import koji

+ import kojihub

+ 

+ 

+ class TestGetPackageID(DBQueryTestCase):

+     maxDiff = None

+ 

+     def test_getPackageID(self):

+         self.qp_execute_return_value = [{'id': 1}]

+         rv = kojihub.RootExports().getPackageID('koji')

+         self.assertEqual(len(self.queries), 1)

+         self.assertLastQueryEqual(tables=['package'],

+                                   columns=['id'],

+                                   clauses=['name=%(name)s'],

+                                   values={'name': 'koji',

+                                           'strict': False,

+                                           'self': mock.ANY})

+         self.assertEqual(rv, 1)

+ 

+     def test_getPackageID_strict(self):

+         with self.assertRaises(koji.GenericError) as cm:

+             kojihub.RootExports().getPackageID('invalidpkg', strict=True)

+         self.assertLastQueryEqual(tables=['package'],

+                                   columns=['id'],

+                                   clauses=['name=%(name)s'],

+                                   values={'name': 'invalidpkg',

+                                           'strict': True,

+                                           'self': mock.ANY})

+         self.assertEqual(cm.exception.args[0],

+                          'Invalid package name: invalidpkg')

+ 

+     def test_getPackageID_None(self):

+         rv = kojihub.RootExports().getPackageID('invalidpkg')

+         self.assertEqual(len(self.queries), 1)

+         self.assertLastQueryEqual(tables=['package'],

+                                   columns=['id'],

+                                   clauses=['name=%(name)s'],

+                                   values={'name': 'invalidpkg',

+                                           'strict': False,

+                                           'self': mock.ANY})

+         self.assertIsNone(rv)

Metadata Update from @tkopecek:
- Pull-request tagged with: testing-ready

5 years ago

Commit 5d3f39c fixes this pull-request

Pull-Request has been merged by mikem

5 years ago