don't fail on missing field in base policy tests
Fixes: https://pagure.io/koji/issue/1038
This commit is contained in:
parent
a05478e22c
commit
8370a8e0ad
3 changed files with 15 additions and 3 deletions
|
|
@ -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)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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']))
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue