#1042 don't fail on missing field in base policy tests
Merged 5 years ago by mikem. Opened 5 years ago by tkopecek.
tkopecek/koji issue1038  into  master

file modified
+6
@@ -103,6 +103,8 @@ 

          else:

              # expected when we are subclassed

              field = self.field

+         if field not in data:

+             return False

          return bool(data[field])

  

  
@@ -126,6 +128,8 @@ 

          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 @@ 

              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 @@ 

          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()

tests/test_lib/test_policy.py tests/test_lib_py2only/test_policy.py
file renamed
+8 -2
@@ -59,6 +59,7 @@ 

          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 @@ 

          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 @@ 

  

          actions = set(obj.all_actions())

          self.assertEquals(actions, set(['1', '2', '3', '4', 'ERROR', 'END']))

- 

- 

Unit test fails

Traceback (most recent call last):
  File "/tmp/tmpHqqW4k/tests/test_hub/test_check_volume_policy.py", line 53, in test_volume_policy_bad
    kojihub.check_volume_policy({}, strict=True)
  File "/tmp/tmpHqqW4k/hub/kojihub.py", line 5023, in check_volume_policy
    raise koji.GenericError('No volume policy match')
GenericError: No volume policy match

rebased onto 8370a8e

5 years ago

Commit 47912f0 fixes this pull-request

Pull-Request has been merged by mikem

5 years ago