コード例 #1
0
ファイル: test_resource.py プロジェクト: nkaul/ocp-checkbox
 def test_evaluate_normal(self):
     # NOTE: the actual expr.resource_name is irrelevant for this test
     expr = ResourceExpression("obj.a == 2")
     self.assertTrue(expr.evaluate([Resource({'a': 1}),
                                    Resource({'a': 2})]))
     self.assertTrue(expr.evaluate([Resource({'a': 2}),
                                    Resource({'a': 1})]))
     self.assertFalse(
         expr.evaluate([Resource({'a': 1}),
                        Resource({'a': 3})]))
コード例 #2
0
 def test_compound_expression_or_passing(self):
     resource_map = {
         'a': [Resource({'foo': 1})],
         'b': [Resource({'bar': 3})]
     }
     expr = ResourceExpression("a.foo == 1 or b.bar == 2")
     self.assertTrue(
         expr.evaluate(resource_map['a'],
                       resource_map['b'],
                       resource_map=resource_map))
コード例 #3
0
 def test_compound_expression_or_failing(self):
     resource_map = {
         'a': [Resource({'foo': 2})],
         'b': [Resource({'bar': 3})]
     }
     expr = ResourceExpression("a.foo == 1 and b.bar == 2")
     self.assertFalse(
         expr.evaluate(resource_map['a'],
                       resource_map['b'],
                       resource_map=resource_map))
コード例 #4
0
ファイル: test_resource.py プロジェクト: yphus/plainbox
 def test_evaluate_normal(self):
     # NOTE: the actual expr.resource_name is irrelevant for this test
     expr = ResourceExpression("obj.a == 2")
     self.assertTrue(
         expr.evaluate([
             Resource({'a': 1}), Resource({'a': 2})]))
     self.assertTrue(
         expr.evaluate([
             Resource({'a': 2}), Resource({'a': 1})]))
     self.assertFalse(
         expr.evaluate([
             Resource({'a': 1}), Resource({'a': 3})]))
コード例 #5
0
 def test_compound_many_subexpressions_failing(self):
     resource_map = {
         'a': [Resource({'foo': 1}),
               Resource({'foo': 2})],
         'b': [Resource({'bar': 3}),
               Resource({'bar': 4})]
     }
     expr = ResourceExpression(
         "a.foo == 3 or b.bar == 3 and a.foo == 2 and b.bar == 1")
     self.assertFalse(
         expr.evaluate(resource_map['a'],
                       resource_map['b'],
                       resource_map=resource_map))
コード例 #6
0
 def test_namespace_support(self):
     text = "package.name == 'fwts'"
     expr = ResourceExpression(text, "2014.com.canonical")
     self.assertEqual(expr.text, text)
     self.assertEqual(expr.resource_id_list,
                      ["2014.com.canonical::package"])
     self.assertEqual(expr.implicit_namespace, "2014.com.canonical")
コード例 #7
0
 def test_imports_support(self):
     text = "package.name == 'fwts'"
     expr1 = ResourceExpression(text, "com.example")
     self.assertEqual(expr1.text, text)
     self.assertEqual(expr1.resource_id_list, ["com.example::package"])
     self.assertEqual(expr1.implicit_namespace, "com.example")
     expr2 = ResourceExpression(text, "com.example", imports=())
     self.assertEqual(expr2.text, text)
     self.assertEqual(expr2.resource_id_list, ["com.example::package"])
     self.assertEqual(expr2.implicit_namespace, "com.example")
     expr3 = ResourceExpression(text,
                                "com.example",
                                imports=[('com.canonical::package',
                                          'package')])
     self.assertEqual(expr3.text, text)
     self.assertEqual(expr3.resource_id_list, ["com.canonical::package"])
     self.assertEqual(expr3.implicit_namespace, "com.example")
コード例 #8
0
 def test_get_filter_program__bare(self):
     # Programs are properly represented
     prog = TemplateUnit({
         'template-filter': 'resource.attr == "value"'
     }).get_filter_program()
     # The program wraps the right expressions
     self.assertEqual(prog.expression_list,
                      [ResourceExpression('resource.attr == "value"')])
     # The program references the right resources
     self.assertEqual(prog.required_resources, set(['resource']))
コード例 #9
0
ファイル: test_resource.py プロジェクト: nkaul/ocp-checkbox
 def test_smoke(self):
     expression = ResourceExpression('resource.attr == "value"')
     exc = ExpressionFailedError(expression)
     self.assertIs(exc.expression, expression)
     self.assertEqual(
         str(exc),
         ("expression 'resource.attr == \"value\"' evaluated to a non-true"
          " result"))
     self.assertEqual(
         repr(exc), ("<ExpressionFailedError expression:<ResourceExpression"
                     " text:'resource.attr == \"value\"'>>"))
コード例 #10
0
ファイル: test_resource.py プロジェクト: nkaul/ocp-checkbox
 def test_smoke(self):
     expression = ResourceExpression('resource.attr == "value"')
     exc = ExpressionCannotEvaluateError(expression)
     self.assertIs(exc.expression, expression)
     self.assertEqual(
         str(exc),
         ("expression 'resource.attr == \"value\"' needs unavailable"
          " resource 'resource'"))
     self.assertEqual(
         repr(exc),
         ("<ExpressionCannotEvaluateError expression:<ResourceExpression"
          " text:'resource.attr == \"value\"'>>"))
コード例 #11
0
ファイル: test_ctrl.py プロジェクト: Roadmaster/checkbox
 def test_get_inhibitor_list_PENDING_RESOURCE(self):
     # verify that jobs that require a resource that hasn't been
     # invoked yet produce the PENDING_RESOURCE inhibitor
     j1 = JobDefinition({'id': 'j1', 'requires': 'j2.attr == "ok"'})
     j2 = JobDefinition({'id': 'j2'})
     session_state = mock.MagicMock(spec=SessionState)
     session_state.job_state_map['j2'].job = j2
     session_state.resource_map = {}
     self.assertEqual(self.ctrl.get_inhibitor_list(session_state, j1), [
         JobReadinessInhibitor(JobReadinessInhibitor.PENDING_RESOURCE, j2,
                               ResourceExpression('j2.attr == "ok"'))
     ])
コード例 #12
0
ファイル: test_ctrl.py プロジェクト: Roadmaster/checkbox
 def test_get_inhibitor_list_FAILED_RESOURCE(self):
     # verify that jobs that require a resource that has been
     # invoked and produced resources but the expression dones't
     # evaluate to True produce the FAILED_RESOURCE inhibitor
     j1 = JobDefinition({'id': 'j1', 'requires': 'j2.attr == "ok"'})
     j2 = JobDefinition({'id': 'j2'})
     session_state = mock.MagicMock(spec=SessionState)
     session_state.job_state_map['j2'].job = j2
     session_state.resource_map = {'j2': [Resource({'attr': 'not-ok'})]}
     self.assertEqual(self.ctrl.get_inhibitor_list(session_state, j1), [
         JobReadinessInhibitor(JobReadinessInhibitor.FAILED_RESOURCE, j2,
                               ResourceExpression('j2.attr == "ok"'))
     ])
コード例 #13
0
ファイル: test_template.py プロジェクト: kissiel/checkbox-ng
 def test_get_filter_program__inherited(self):
     provider = mock.Mock(spec=IProvider1)
     provider.namespace = 'inherited'
     # Programs are properly represented
     prog = TemplateUnit({
         'template-resource': 'resource',
         'template-filter': 'resource.attr == "value"'
     }, provider=provider).get_filter_program()
     # The program wraps the right expressions
     self.assertEqual(
         prog.expression_list,
         [ResourceExpression('resource.attr == "value"')])
     # The program references the right resources
     self.assertEqual(prog.required_resources, set(['inherited::resource']))
コード例 #14
0
ファイル: test_resource.py プロジェクト: nkaul/ocp-checkbox
 def test_evaluate_checks_resource_type(self):
     expr = ResourceExpression("obj.a == 2")
     self.assertRaises(TypeError, expr.evaluate, [{'a': 2}])
コード例 #15
0
ファイル: test_resource.py プロジェクト: nkaul/ocp-checkbox
 def test_evaluate_exception(self):
     # NOTE: the actual expr.resource_name is irrelevant for this test
     expr = ResourceExpression("obj.a == 2")
     self.assertFalse(expr.evaluate([Resource()]))
コード例 #16
0
ファイル: test_resource.py プロジェクト: yphus/plainbox
 def test_evaluate_exception(self):
     # NOTE: the actual expr.resource_name is irrelevant for this test
     expr = ResourceExpression("obj.a == 2")
     self.assertFalse(expr.evaluate([Resource()]))
コード例 #17
0
ファイル: test_resource.py プロジェクト: nkaul/ocp-checkbox
 def test_evaluate_no_namespaces(self):
     self.assertFalse(ResourceExpression("whatever").evaluate([]))
コード例 #18
0
ファイル: test_resource.py プロジェクト: nkaul/ocp-checkbox
 def test_smoke_good(self):
     text = "package.name == 'fwts'"
     expr = ResourceExpression(text)
     self.assertEqual(expr.text, text)
     self.assertEqual(expr.resource_name, "package")
コード例 #19
0
 def test_smoke_good(self):
     text = "package.name == 'fwts'"
     expr = ResourceExpression(text)
     self.assertEqual(expr.text, text)
     self.assertEqual(expr.resource_id_list, ["package"])
     self.assertEqual(expr.implicit_namespace, None)
コード例 #20
0
 def test_multiple_resources(self):
     expr = ResourceExpression("a.foo == 1 and b.bar == 2")
     self.assertEqual(expr.resource_id_list, ["a", "b"])