tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_mozilla_structured.py (2650B)


      1 import unittest
      2 
      3 import mozunit
      4 from mozharness.base.log import INFO, WARNING
      5 from mozharness.mozilla.automation import TBPL_SUCCESS, TBPL_WARNING
      6 from mozharness.mozilla.mozbase import MozbaseMixin
      7 from mozharness.mozilla.structuredlog import StructuredOutputParser
      8 from mozlog.handlers.statushandler import RunSummary
      9 
     10 success_summary = RunSummary(
     11    unexpected_statuses={},
     12    expected_statuses={"PASS": 3, "OK": 1, "FAIL": 1},
     13    known_intermittent_statuses={"FAIL": 1},
     14    log_level_counts={"info": 5},
     15    action_counts={"test_status": 4, "test_end": 1, "suite_end": 1},
     16 )
     17 
     18 failure_summary = RunSummary(
     19    unexpected_statuses={"FAIL": 2},
     20    expected_statuses={"PASS": 2, "OK": 1},
     21    known_intermittent_statuses={},
     22    log_level_counts={"warning": 2, "info": 3},
     23    action_counts={"test_status": 3, "test_end": 2, "suite_end": 1},
     24 )
     25 
     26 
     27 class TestParser(MozbaseMixin, StructuredOutputParser):
     28    def __init__(self, *args, **kwargs):
     29        super().__init__(*args, **kwargs)
     30        self.config = {}
     31 
     32 
     33 class TestStructuredOutputParser(unittest.TestCase):
     34    def setUp(self):
     35        self.parser = TestParser()
     36 
     37    def test_evaluate_parser_success(self):
     38        self.parser.handler.expected_statuses = {"PASS": 3, "OK": 1, "FAIL": 1}
     39        self.parser.handler.log_level_counts = {"info": 5}
     40        self.parser.handler.action_counts = {
     41            "test_status": 4,
     42            "test_end": 1,
     43            "suite_end": 1,
     44        }
     45        self.parser.handler.known_intermittent_statuses = {"FAIL": 1}
     46        result = self.parser.evaluate_parser(
     47            return_code=TBPL_SUCCESS, success_codes=[TBPL_SUCCESS]
     48        )
     49        tbpl_status, worst_log_level, joined_summary = result
     50        self.assertEqual(tbpl_status, TBPL_SUCCESS)
     51        self.assertEqual(worst_log_level, INFO)
     52        self.assertEqual(joined_summary, success_summary)
     53 
     54    def test_evaluate_parser_failure(self):
     55        self.parser.handler.unexpected_statuses = {"FAIL": 2}
     56        self.parser.handler.expected_statuses = {"PASS": 2, "OK": 1}
     57        self.parser.handler.log_level_counts = {"warning": 2, "info": 3}
     58        self.parser.handler.action_counts = {
     59            "test_status": 3,
     60            "test_end": 2,
     61            "suite_end": 1,
     62        }
     63        result = self.parser.evaluate_parser(
     64            return_code=TBPL_SUCCESS, success_codes=[TBPL_SUCCESS]
     65        )
     66        tbpl_status, worst_log_level, joined_summary = result
     67        self.assertEqual(tbpl_status, TBPL_WARNING)
     68        self.assertEqual(worst_log_level, WARNING)
     69        self.assertEqual(joined_summary, failure_summary)
     70 
     71 
     72 if __name__ == "__main__":
     73    mozunit.main()