#573 Make waived requirements more consistent
Merged 3 years ago by lholecek. Opened 3 years ago by lholecek.
lholecek/greenwave consistent-requirement-types  into  master

@@ -130,11 +130,12 @@ 

  .. code-block:: json

  

      {

-         "type": "test-result-passed",

+         "type": "test-result-failed-waived",

          "testcase": "example.test.case",

          "subject_type": "koji-build",

          "subject_identifier": "nethack-1.2.3-1.rawhide",

-         "result_id": 1002

+         "result_id": 1002,

+         "scenario": null

      }

  

  Waived missing test result

@@ -113,7 +113,8 @@ 

                  'subject_identifier': nvr,

                  'result_id': result['id'],

                  'testcase': failing_test,

-                 'type': 'test-result-passed'

+                 'type': 'test-result-failed-waived',

+                 'scenario': None

              },

              {

                  'subject_type': 'koji_build',

file modified
+22 -25
@@ -123,29 +123,32 @@ 

          }

  

      def to_waived(self):

-         return TestResultMissingWaived(

-             self.subject,

-             self.test_case_name,

-             self.scenario)

+         return TestResultWaived(self)

  

  

- class TestResultMissingWaived(RuleSatisfied):

+ class TestResultWaived(RuleSatisfied):

      """

-     Same as TestResultMissing but the result was waived.

+     A waived unsatisfied rule.

+ 

+     Contains same data as unsatisfied rule except the type has "-waived"

+     suffix. Also, the deprecated "item" field is dropped.

      """

-     def __init__(self, subject, test_case_name, scenario):

-         self.subject = subject

-         self.test_case_name = test_case_name

-         self.scenario = scenario

+     def __init__(self, unsatisfied_rule):

+         self.unsatisfied_rule = unsatisfied_rule

  

      def to_json(self):

-         return {

-             'type': 'test-result-missing-waived',

-             'testcase': self.test_case_name,

-             'subject_type': self.subject.type,

-             'subject_identifier': self.subject.identifier,

-             'scenario': self.scenario,

-         }

+         satisfied_rule = self.unsatisfied_rule.to_json()

+         satisfied_rule['type'] += '-waived'

+ 

+         item = satisfied_rule.get('item')

+         if isinstance(item, dict) and 'item' in item and 'type' in item:

+             if 'subject_identifier' not in satisfied_rule:

+                 satisfied_rule['subject_identifier'] = item['item']

+             if 'subject_type' not in satisfied_rule:

+                 satisfied_rule['subject_type'] = item['type']

+             del satisfied_rule['item']

+ 

+         return satisfied_rule

  

  

  class TestResultFailed(RuleNotSatisfied):
@@ -173,10 +176,7 @@ 

          }

  

      def to_waived(self):

-         return TestResultPassed(

-             self.subject,

-             self.test_case_name,

-             self.result_id)

+         return TestResultWaived(self)

  

  

  class TestResultErrored(RuleNotSatisfied):
@@ -213,10 +213,7 @@ 

          }

  

      def to_waived(self):

-         return TestResultPassed(

-             self.subject,

-             self.test_case_name,

-             self.result_id)

+         return TestResultWaived(self)

  

  

  class InvalidRemoteRuleYaml(RuleNotSatisfied):

@@ -5,7 +5,7 @@ 

      TestResultErrored,

      TestResultFailed,

      TestResultMissing,

-     TestResultMissingWaived,

+     TestResultWaived,

      InvalidRemoteRuleYaml,

  )

  
@@ -21,8 +21,6 @@ 

      testSubject, 'test', None, 1)

  testResultMissing = TestResultMissing(

      testSubject, 'test', None)

- testResultMissingWaived = TestResultMissingWaived(

-     testSubject, 'test', None)

  testInvalidGatingYaml = InvalidRemoteRuleYaml(

      testSubject, 'test', 'Missing !Policy tag')

  
@@ -55,7 +53,7 @@ 

  

  def test_summary_missing_waived():

      answers = [

-         testResultMissingWaived,

+         TestResultWaived(testResultMissing),

      ]

      assert summarize_answers(answers) == 'All required tests passed'

  
@@ -86,7 +84,7 @@ 

  def test_summary_one_passed_one_missing_waived():

      answers = [

          testResultPassed,

-         testResultMissingWaived,

+         TestResultWaived(testResultMissing),

      ]

      assert summarize_answers(answers) == 'All required tests passed'

  

@@ -37,11 +37,12 @@ 

      ]

      waived = waive_answers(answers, waivers)

      expected_json = dict(

-         type='test-result-passed',

+         type='test-result-failed-waived',

          testcase='test1',

          subject_type='koji_build',

          subject_identifier='nethack-1.2.3-1.rawhide',

          result_id=99,

+         scenario='scenario1',

      )

      assert 1 == len(waived)

      assert expected_json == waived[0].to_json()

JIRA: RHELWF-656
Signed-off-by: Lukas Holecek hluk@email.cz

rebased onto d896a0bbcd0095056f199dc6d6febd7de7e4636e

3 years ago

Change docstring

Fixed.

rebased onto 236826b1644376f1b8e374fb3e296ad37b3370ed

3 years ago

rebased onto 834a4f2cb9fb3d98b596fde08852ee1310edad2c

3 years ago

rebased onto dce981a

3 years ago

1 new commit added

  • docs: Update test-result-failed-waived requirement example
3 years ago

I've updated the docs and fixed TestResultWaived.to_json().

Pull-Request has been merged by lholecek

3 years ago