diff --git a/avocado/core/result.py b/avocado/core/result.py index 252868ad07de573f9684da47436e893c97cdf0ad..638bb1a116b4f860e3114f5e0c33b7519820839c 100644 --- a/avocado/core/result.py +++ b/avocado/core/result.py @@ -137,7 +137,10 @@ class TestResult(object): self.failed + self.warned + self.skipped + self.interrupted) other_skipped_count = self.tests_total - valid_results_count - self.skipped += other_skipped_count + if other_skipped_count > 0: + self.skipped += other_skipped_count + else: + self.tests_total -= other_skipped_count def start_tests(self): """ diff --git a/selftests/unit/test_jsonresult.py b/selftests/unit/test_jsonresult.py index 07aab48cc1d67859ccd51d8d3d676b8e6f1a8ac2..93ae79887aee03c08069985bedd33a8a4f5fdade 100644 --- a/selftests/unit/test_jsonresult.py +++ b/selftests/unit/test_jsonresult.py @@ -85,5 +85,20 @@ class JSONResultTest(unittest.TestCase): check_item("[skip]", res["skip"], 4) check_item("[total]", res["total"], 13) + def testNegativeStatus(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() + res = json.loads(self.test_result.json) + check_item("[total]", res["total"], 1) + check_item("[skip]", res["skip"], 0) + check_item("[pass]", res["pass"], 1) + + if __name__ == '__main__': unittest.main()