Exemplo n.º 1
0
class JSONResultTest(unittest.TestCase):

    def setUp(self):

        class SimpleTest(Test):

            def test(self):
                pass

        self.tmpfile = tempfile.mkstemp()
        self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
        args = argparse.Namespace(json_output=self.tmpfile[1],
                                  base_logdir=self.tmpdir)
        self.job = job.Job(args)
        self.test_result = Result(FakeJob(args))
        self.test_result.filename = self.tmpfile[1]
        self.test_result.tests_total = 1
        self.test1 = SimpleTest(job=self.job, base_logdir=self.tmpdir)
        self.test1._Test__status = 'PASS'
        self.test1.time_elapsed = 1.23

    def tearDown(self):
        os.close(self.tmpfile[0])
        os.remove(self.tmpfile[1])
        shutil.rmtree(self.tmpdir)

    def test_add_success(self):
        self.test_result.start_test(self.test1)
        self.test_result.end_test(self.test1.get_state())
        self.test_result.end_tests()
        json_result = jsonresult.JSONResult()
        json_result.render(self.test_result, self.job)
        with open(self.job.args.json_output) as fp:
            j = fp.read()
        obj = json.loads(j)
        self.assertTrue(obj)
        self.assertEqual(len(obj['tests']), 1)

    def test_add_several_statuses(self):
        def run_fake_status(status):
            self.test_result.start_test(self.test1)
            self.test_result.check_test(status)

        def check_item(name, value, exp):
            self.assertEqual(value, exp, "Result%s is %s and not %s\n%s"
                             % (name, value, exp, res))

        # Set the number of tests to all tests + 3
        self.test_result.tests_total = 13
        # Full PASS status
        self.test_result.start_test(self.test1)
        self.test_result.check_test(self.test1.get_state())
        # Only status - valid statuses
        run_fake_status({"status": "PASS"})
        run_fake_status({"status": "SKIP"})
        run_fake_status({"status": "FAIL"})
        run_fake_status({"status": "ERROR"})
        run_fake_status({"status": "WARN"})
        run_fake_status({"status": "INTERRUPTED"})
        # Only status - invalid statuses
        run_fake_status({"status": "INVALID"})
        run_fake_status({"status": None})
        run_fake_status({"status": ""})
        # Postprocess
        self.test_result.end_tests()
        json_result = jsonresult.JSONResult()
        json_result.render(self.test_result, self.job)
        res = json.loads(open(self.job.args.json_output).read())
        check_item("[pass]", res["pass"], 2)
        check_item("[errors]", res["errors"], 4)
        check_item("[failures]", res["failures"], 1)
        check_item("[skip]", res["skip"], 4)
        check_item("[total]", res["total"], 13)

    def test_negative_status(self):
        def check_item(name, value, exp):
            self.assertEqual(value, exp, "Result%s is %s and not %s\n%s"
                             % (name, value, exp, res))

        self.test_result.tests_total = 0
        self.test_result.start_test(self.test1)
        self.test_result.check_test(self.test1.get_state())
        self.test_result.end_tests()
        json_result = jsonresult.JSONResult()
        json_result.render(self.test_result, self.job)
        res = json.loads(open(self.job.args.json_output).read())
        check_item("[total]", res["total"], 1)
        check_item("[skip]", res["skip"], 0)
        check_item("[pass]", res["pass"], 1)
Exemplo n.º 2
0
class JSONResultTest(unittest.TestCase):
    def setUp(self):
        class SimpleTest(Test):
            def test(self):
                pass

        self.tmpfile = tempfile.mkstemp()
        prefix = temp_dir_prefix(__name__, self, 'setUp')
        self.tmpdir = tempfile.TemporaryDirectory(prefix=prefix)
        args = argparse.Namespace(json_output=self.tmpfile[1],
                                  base_logdir=self.tmpdir.name)
        self.job = job.Job(args)
        self.test_result = Result(FakeJob(args))
        self.test_result.filename = self.tmpfile[1]
        self.test_result.tests_total = 1
        self.test1 = SimpleTest(job=self.job, base_logdir=self.tmpdir.name)
        self.test1._Test__status = 'PASS'
        self.test1.time_elapsed = 1.23

    def tearDown(self):
        os.close(self.tmpfile[0])
        os.remove(self.tmpfile[1])
        self.tmpdir.cleanup()

    def test_add_success(self):
        self.test_result.start_test(self.test1)
        self.test_result.end_test(self.test1.get_state())
        self.test_result.end_tests()
        json_result = jsonresult.JSONResult()
        json_result.render(self.test_result, self.job)
        with open(self.job.args.json_output) as fp:
            j = fp.read()
        obj = json.loads(j)
        self.assertTrue(obj)
        self.assertEqual(len(obj['tests']), 1)

    def test_add_several_statuses(self):
        def run_fake_status(status):
            self.test_result.start_test(self.test1)
            self.test_result.check_test(status)

        def check_item(name, value, exp):
            self.assertEqual(
                value, exp,
                "Result%s is %s and not %s\n%s" % (name, value, exp, res))

        # Set the number of tests to all tests + 3
        self.test_result.tests_total = 13
        # Full PASS status
        self.test_result.start_test(self.test1)
        self.test_result.check_test(self.test1.get_state())
        # Only status - valid statuses
        run_fake_status({"status": "PASS"})
        run_fake_status({"status": "SKIP"})
        run_fake_status({"status": "FAIL"})
        run_fake_status({"status": "ERROR"})
        run_fake_status({"status": "WARN"})
        run_fake_status({"status": "INTERRUPTED"})
        # Only status - invalid statuses
        run_fake_status({"status": "INVALID"})
        run_fake_status({"status": None})
        run_fake_status({"status": ""})
        # Postprocess
        self.test_result.end_tests()
        json_result = jsonresult.JSONResult()
        json_result.render(self.test_result, self.job)
        res = json.loads(open(self.job.args.json_output).read())
        check_item("[pass]", res["pass"], 2)
        check_item("[errors]", res["errors"], 4)
        check_item("[failures]", res["failures"], 1)
        check_item("[skip]", res["skip"], 4)
        check_item("[total]", res["total"], 13)

    def test_negative_status(self):
        def check_item(name, value, exp):
            self.assertEqual(
                value, exp,
                "Result%s is %s and not %s\n%s" % (name, value, exp, res))

        self.test_result.tests_total = 0
        self.test_result.start_test(self.test1)
        self.test_result.check_test(self.test1.get_state())
        self.test_result.end_tests()
        json_result = jsonresult.JSONResult()
        json_result.render(self.test_result, self.job)
        res = json.loads(open(self.job.args.json_output).read())
        check_item("[total]", res["total"], 1)
        check_item("[skip]", res["skip"], 0)
        check_item("[pass]", res["pass"], 1)
Exemplo n.º 3
0
 def test_result_rate_all_succeeded_with_cancelled(self):
     result = Result(UNIQUE_ID, LOGFILE)
     result.check_test({'status': 'PASS'})
     result.check_test({'status': 'CANCEL'})
     result.end_tests()
     self.assertEqual(result.rate, 100.0)
Exemplo n.º 4
0
 def test_result_rate_none_succeeded(self):
     result = Result(UNIQUE_ID, LOGFILE)
     result.check_test({'status': 'FAIL'})
     result.end_tests()
     self.assertEqual(result.rate, 0.0)
Exemplo n.º 5
0
 def test_result_rate_all_succeeded_with_cancelled(self):
     result = Result(FakeJob([]))
     result.check_test({'status': 'PASS'})
     result.check_test({'status': 'CANCEL'})
     result.end_tests()
     self.assertEquals(result.rate, 100.0)
Exemplo n.º 6
0
 def test_result_rate_none_succeeded(self):
     result = Result(FakeJob([]))
     result.check_test({'status': 'FAIL'})
     result.end_tests()
     self.assertEquals(result.rate, 0.0)
Exemplo n.º 7
0
 def test_result_rate_none_succeeded(self):
     result = Result(FakeJob([]))
     result.check_test({'status': 'FAIL'})
     result.end_tests()
     self.assertEquals(result.rate, 0.0)
Exemplo n.º 8
0
 def test_result_rate_all_succeeded_with_skips(self):
     result = Result(FakeJob([]))
     result.check_test({'status': 'PASS'})
     result.check_test({'status': 'SKIP'})
     result.end_tests()
     self.assertEquals(result.rate, 100.0)
Exemplo n.º 9
0
 def test_result_rate_all_succeeded_with_cancelled(self):
     result = Result(FakeJob([]))
     result.check_test({'status': 'PASS'})
     result.check_test({'status': 'CANCEL'})
     result.end_tests()
     self.assertEquals(result.rate, 100.0)
Exemplo n.º 10
0
 def test_result_rate_all_succeeded_with_skips(self):
     result = Result(FakeJob([]))
     result.check_test({'status': 'PASS'})
     result.check_test({'status': 'SKIP'})
     result.end_tests()
     self.assertEquals(result.rate, 100.0)
Exemplo n.º 11
0
class JSONResultTest(TestCaseTmpDir):
    def setUp(self):
        super().setUp()

        class SimpleTest(Test):
            def test(self):
                pass

        json_output_path = os.path.join(self.tmpdir.name, 'results.json')
        config = {
            'run.results_dir': self.tmpdir.name,
            'job.run.result.json.output': json_output_path
        }
        self.job = job.Job(config)
        self.job.setup()
        self.test_result = Result(UNIQUE_ID, LOGFILE)
        self.test_result.filename = json_output_path
        self.test_result.tests_total = 1
        self.test1 = SimpleTest(config=self.job.config,
                                base_logdir=self.tmpdir.name)
        self.test1._Test__status = 'PASS'
        self.test1.time_elapsed = 1.23

    def test_add_success(self):
        self.test_result.start_test(self.test1)
        self.test_result.end_test(self.test1.get_state())
        self.test_result.end_tests()
        json_result = jsonresult.JSONResult()
        json_result.render(self.test_result, self.job)
        with open(self.job.config.get('job.run.result.json.output'),
                  encoding='utf-8') as fp:
            j = fp.read()
        obj = json.loads(j)
        self.assertTrue(obj)
        self.assertEqual(len(obj['tests']), 1)

    def test_add_several_statuses(self):
        def run_fake_status(status):
            self.test_result.start_test(self.test1)
            self.test_result.check_test(status)

        def check_item(name, value, exp):
            self.assertEqual(value, exp,
                             f"Result{name} is {value} and not {exp}\n{res}")

        # Set the number of tests to all tests + 3
        self.test_result.tests_total = 13
        # Full PASS status
        self.test_result.start_test(self.test1)
        self.test_result.check_test(self.test1.get_state())
        # Only status - valid statuses
        run_fake_status({"status": "PASS"})
        run_fake_status({"status": "SKIP"})
        run_fake_status({"status": "FAIL"})
        run_fake_status({"status": "ERROR"})
        run_fake_status({"status": "WARN"})
        run_fake_status({"status": "INTERRUPTED"})
        # Only status - invalid statuses
        run_fake_status({"status": "INVALID"})
        run_fake_status({"status": None})
        run_fake_status({"status": ""})
        # Postprocess
        self.test_result.end_tests()
        json_result = jsonresult.JSONResult()
        json_result.render(self.test_result, self.job)
        output = self.job.config.get('job.run.result.json.output')
        with open(output, encoding='utf-8') as json_output:
            res = json.loads(json_output.read())
        check_item("[pass]", res["pass"], 2)
        check_item("[errors]", res["errors"], 4)
        check_item("[failures]", res["failures"], 1)
        check_item("[skip]", res["skip"], 4)
        check_item("[total]", res["total"], 13)

    def test_negative_status(self):
        def check_item(name, value, exp):
            self.assertEqual(value, exp,
                             f"Result{name} is {value} and not {exp}\n{res}")

        self.test_result.tests_total = 0
        self.test_result.start_test(self.test1)
        self.test_result.check_test(self.test1.get_state())
        self.test_result.end_tests()
        json_result = jsonresult.JSONResult()
        json_result.render(self.test_result, self.job)
        output = self.job.config.get('job.run.result.json.output')
        with open(output, encoding='utf-8') as json_output:
            res = json.loads(json_output.read())
        check_item("[total]", res["total"], 1)
        check_item("[skip]", res["skip"], 0)
        check_item("[pass]", res["pass"], 1)

    def tearDown(self):
        self.job.cleanup()
        super().tearDown()
Exemplo n.º 12
0
 def test_result_rate_half_succeeded(self):
     result = Result(UNIQUE_ID, LOGFILE)
     result.check_test({"status": "PASS"})
     result.check_test({"status": "FAIL"})
     result.end_tests()
     self.assertEqual(result.rate, 50.0)
Exemplo n.º 13
0
 def test_result_rate_all_succeeded_with_skips(self):
     result = Result(UNIQUE_ID, LOGFILE)
     result.check_test({"status": "PASS"})
     result.check_test({"status": "SKIP"})
     result.end_tests()
     self.assertEqual(result.rate, 100.0)