don't fail on missing field in base policy tests

Fixes: https://pagure.io/koji/issue/1038
This commit is contained in:
Tomas Kopecek 2018-08-21 13:47:56 +02:00
parent a05478e22c
commit 8370a8e0ad
3 changed files with 15 additions and 3 deletions

View file

@ -103,6 +103,8 @@ class BoolTest(BaseSimpleTest):
else:
# expected when we are subclassed
field = self.field
if field not in data:
return False
return bool(data[field])
@ -126,6 +128,8 @@ class MatchTest(BaseSimpleTest):
else:
# expected when we are subclassed
field = self.field
if field not in data:
return False
for pattern in args:
if fnmatch.fnmatch(data[field], pattern):
return True
@ -176,6 +180,8 @@ class CompareTest(BaseSimpleTest):
self.value = float(value)
def run(self, data):
if self.field not in data:
return False
return self.func(data[self.field], self.value)

View file

@ -49,7 +49,7 @@ class TestCheckVolumePolicy(unittest.TestCase):
ret = kojihub.check_volume_policy({})
self.assertEqual(ret, None)
with self.assertRaises(KeyError):
with self.assertRaises(koji.GenericError):
kojihub.check_volume_policy({}, strict=True)
self.lookup_name.assert_not_called()

View file

@ -59,6 +59,7 @@ class TestBasicTests(unittest.TestCase):
obj = koji.policy.BoolTest('some thing')
self.assertFalse(obj.run({'thing': None}))
self.assertFalse(obj.run({'thing': []}))
self.assertFalse(obj.run({}))
self.assertTrue(obj.run({'thing': 'yes'}))
def test_match_test(self):
@ -66,34 +67,41 @@ class TestBasicTests(unittest.TestCase):
self.assertFalse(obj.run({'thing': 'elseplus'}))
obj = koji.policy.MatchTest('some thing else*')
self.assertTrue(obj.run({'thing': 'elseplus'}))
self.assertFalse(obj.run({}))
def test_compare_test(self):
obj = koji.policy.CompareTest('compare thing > 2')
self.assertFalse(obj.run({'thing': 1}))
self.assertFalse(obj.run({'thing': 2}))
self.assertTrue(obj.run({'thing': 3}))
self.assertFalse(obj.run({}))
obj = koji.policy.CompareTest('compare thing < 1.5')
self.assertFalse(obj.run({'thing': 3.2}))
self.assertTrue(obj.run({'thing': 1.0}))
self.assertFalse(obj.run({}))
obj = koji.policy.CompareTest('compare thing = 42')
self.assertFalse(obj.run({'thing': 54}))
self.assertTrue(obj.run({'thing': 42}))
self.assertFalse(obj.run({}))
obj = koji.policy.CompareTest('compare thing != 99')
self.assertFalse(obj.run({'thing': 99}))
self.assertTrue(obj.run({'thing': 100}))
self.assertFalse(obj.run({}))
obj = koji.policy.CompareTest('compare thing >= 2')
self.assertFalse(obj.run({'thing': 1}))
self.assertTrue(obj.run({'thing': 2}))
self.assertTrue(obj.run({'thing': 3}))
self.assertFalse(obj.run({}))
obj = koji.policy.CompareTest('compare thing <= 5')
self.assertFalse(obj.run({'thing': 23}))
self.assertTrue(obj.run({'thing': 5}))
self.assertTrue(obj.run({'thing': 0}))
self.assertFalse(obj.run({}))
@raises(koji.GenericError)
def test_invalid_compare_test(self):
@ -298,5 +306,3 @@ has DEPTH :: {
actions = set(obj.all_actions())
self.assertEquals(actions, set(['1', '2', '3', '4', 'ERROR', 'END']))