def test_pound_no_prefix(self): pound_log = test_data_path('test_pound_no_prefix.log') with open(pound_log) as file: result = kunit_parser.parse_run_tests(file.readlines()) self.assertEqual(kunit_parser.TestStatus.SUCCESS, result.status) self.assertEqual('kunit-resource-test', result.test.subtests[0].name)
def test_parse_successful_test_log(self): all_passed_log = test_data_path('test_is_test_passed-all_passed.log') with open(all_passed_log) as file: result = kunit_parser.parse_run_tests(file.readlines()) self.assertEqual( kunit_parser.TestStatus.SUCCESS, result.status)
def test_skipped_test(self): skipped_log = test_data_path('test_skip_tests.log') with open(skipped_log) as file: result = kunit_parser.parse_run_tests(file.readlines()) # A skipped test does not fail the whole suite. self.assertEqual(kunit_parser.TestStatus.SUCCESS, result.status)
def test_parse_failed_test_log(self): failed_log = test_data_path('test_is_test_passed-failure.log') with open(failed_log) as file: result = kunit_parser.parse_run_tests(file.readlines()) self.assertEqual( kunit_parser.TestStatus.FAILURE, result.status)
def test_parse_successful_test_log(self): all_passed_log = get_absolute_path( 'test_data/test_is_test_passed-all_passed.log') file = open(all_passed_log) result = kunit_parser.parse_run_tests(file.readlines()) self.assertEqual(kunit_parser.TestStatus.SUCCESS, result.status) file.close()
def test_ignores_prefix_printk_time(self): prefix_log = test_data_path('test_config_printk_time.log') with open(prefix_log) as file: result = kunit_parser.parse_run_tests(file.readlines()) self.assertEqual(kunit_parser.TestStatus.SUCCESS, result.status) self.assertEqual('kunit-resource-test', result.test.subtests[0].name)
def parse_tests(request: KunitParseRequest) -> KunitResult: parse_start = time.time() test_result = kunit_parser.TestResult(kunit_parser.TestStatus.SUCCESS, [], 'Tests not Parsed.') if request.raw_output: kunit_parser.raw_output(request.input_data) else: test_result = kunit_parser.parse_run_tests(request.input_data) parse_end = time.time() if request.json: json_obj = kunit_json.get_json_result(test_result=test_result, def_config='kunit_defconfig', build_dir=request.build_dir, json_path=request.json) if request.json == 'stdout': print(json_obj) if test_result.status != kunit_parser.TestStatus.SUCCESS: return KunitResult(KunitStatus.TEST_FAILURE, test_result, parse_end - parse_start) return KunitResult(KunitStatus.SUCCESS, test_result, parse_end - parse_start)
def test_parse_failed_test_log(self): failed_log = get_absolute_path( 'test_data/test_is_test_passed-failure.log') file = open(failed_log) result = kunit_parser.parse_run_tests(file.readlines()) self.assertEqual(kunit_parser.TestStatus.FAILURE, result.status) file.close()
def test_crashed_test(self): crashed_log = test_data_path('test_is_test_passed-crash.log') with open(crashed_log) as file: result = kunit_parser.parse_run_tests(file.readlines()) self.assertEqual( kunit_parser.TestStatus.TEST_CRASHED, result.status)
def test_kernel_panic_end(self): panic_log = test_data_path('test_kernel_panic_interrupt.log') with open(panic_log) as file: result = kunit_parser.parse_run_tests(file.readlines()) self.assertEqual(kunit_parser.TestStatus.TEST_CRASHED, result.status) self.assertEqual('kunit-resource-test', result.suites[0].name)
def test_skipped_all_tests(self): skipped_log = test_data_path('test_skip_all_tests.log') file = open(skipped_log) result = kunit_parser.parse_run_tests(file.readlines()) self.assertEqual(kunit_parser.TestStatus.SKIPPED, result.status) file.close()
def test_crashed_test(self): crashed_log = get_absolute_path( 'test_data/test_is_test_passed-crash.log') file = open(crashed_log) result = kunit_parser.parse_run_tests(file.readlines()) self.assertEqual(kunit_parser.TestStatus.TEST_CRASHED, result.status) file.close()
def test_kselftest_nested(self): kselftest_log = test_data_path('test_is_test_passed-kselftest.log') with open(kselftest_log) as file: result = kunit_parser.parse_run_tests(file.readlines()) self.assertEqual( kunit_parser.TestStatus.SUCCESS, result.status)
def test_no_tests(self): empty_log = test_data_path('test_is_test_passed-no_tests_run.log') with open(empty_log) as file: result = kunit_parser.parse_run_tests( kunit_parser.isolate_kunit_output(file.readlines())) self.assertEqual(0, len(result.suites)) self.assertEqual(kunit_parser.TestStatus.NO_TESTS, result.status)
def test_prefix_mixed_kernel_output(self): mixed_prefix_log = get_absolute_path( 'test_data/test_interrupted_tap_output.log') with open(mixed_prefix_log) as file: result = kunit_parser.parse_run_tests(file.readlines()) self.assertEqual(kunit_parser.TestStatus.SUCCESS, result.status) self.assertEqual('kunit-resource-test', result.suites[0].name)
def test_ignores_multiple_prefixes(self): prefix_log = test_data_path('test_multiple_prefixes.log') with open(prefix_log) as file: result = kunit_parser.parse_run_tests(file.readlines()) self.assertEqual( kunit_parser.TestStatus.SUCCESS, result.status) self.assertEqual('kunit-resource-test', result.suites[0].name)
def test_prefix_poundsign(self): pound_log = get_absolute_path('test_data/test_pound_sign.log') with open(pound_log) as file: result = kunit_parser.parse_run_tests(file.readlines()) self.assertEqual( kunit_parser.TestStatus.SUCCESS, result.status) self.assertEqual('kunit-resource-test', result.suites[0].name)
def test_no_tests(self): empty_log = test_data_path( 'test_is_test_passed-no_tests_run_with_header.log') with open(empty_log) as file: result = kunit_parser.parse_run_tests( kunit_parser.extract_tap_lines(file.readlines())) self.assertEqual(0, len(result.suites)) self.assertEqual(kunit_parser.TestStatus.NO_TESTS, result.status)
def _json_for(self, log_file): with (open(get_absolute_path(log_file))) as file: test_result = kunit_parser.parse_run_tests(file) json_obj = kunit_json.get_json_result(test_result=test_result, def_config='kunit_defconfig', build_dir=None, json_path='stdout') return json.loads(json_obj)
def test_missing_test_plan(self): missing_plan_log = test_data_path('test_is_test_passed-' 'missing_plan.log') with open(missing_plan_log) as file: result = kunit_parser.parse_run_tests( kunit_parser.extract_tap_lines(file.readlines())) self.assertEqual(2, result.test.counts.errors) self.assertEqual(kunit_parser.TestStatus.SUCCESS, result.status)
def test_no_kunit_output(self): crash_log = test_data_path('test_insufficient_memory.log') print_mock = mock.patch('builtins.print').start() with open(crash_log) as file: result = kunit_parser.parse_run_tests( kunit_parser.extract_tap_lines(file.readlines())) print_mock.assert_any_call(StrContains('invalid KTAP input!')) print_mock.stop() self.assertEqual(0, len(result.subtests))
def test_no_tests(self): empty_log = get_absolute_path( 'test_data/test_is_test_passed-no_tests_run.log') file = open(empty_log) result = kunit_parser.parse_run_tests( kunit_parser.isolate_kunit_output(file.readlines())) self.assertEqual(0, len(result.suites)) self.assertEqual(kunit_parser.TestStatus.NO_TESTS, result.status) file.close()
def test_no_kunit_output(self): crash_log = test_data_path('test_insufficient_memory.log') print_mock = mock.patch('builtins.print').start() with open(crash_log) as file: result = kunit_parser.parse_run_tests( kunit_parser.extract_tap_lines(file.readlines())) print_mock.assert_any_call(StrContains('no tests run!')) print_mock.stop() file.close()
def test_no_kunit_output(self): crash_log = get_absolute_path('test_data/test_insufficient_memory.log') file = open(crash_log) print_mock = mock.patch('builtins.print').start() result = kunit_parser.parse_run_tests( kunit_parser.isolate_kunit_output(file.readlines())) print_mock.assert_any_call(StrContains('no tests run!')) print_mock.stop() file.close()
def test_timed_out_test(self): timed_out_log = get_absolute_path( 'test_data/test_is_test_passed-timed_out.log') file = open(timed_out_log) result = kunit_parser.parse_run_tests(file.readlines()) self.assertEqual( kunit_parser.TestStatus.TIMED_OUT, result.status) file.close()
def test_no_tests_no_plan(self): no_plan_log = test_data_path( 'test_is_test_passed-no_tests_no_plan.log') with open(no_plan_log) as file: result = kunit_parser.parse_run_tests( kunit_parser.extract_tap_lines(file.readlines())) self.assertEqual(0, len(result.subtests[0].subtests[0].subtests)) self.assertEqual(kunit_parser.TestStatus.NO_TESTS, result.subtests[0].subtests[0].status) self.assertEqual(1, result.counts.errors)
def test_broken_test(self): broken_log = get_absolute_path( 'test_data/test_is_test_passed-broken_test.log') file = open(broken_log) result = kunit_parser.parse_run_tests( kunit_parser.isolate_kunit_output(file.readlines())) self.assertEqual( kunit_parser.TestStatus.KERNEL_CRASHED, result.status) file.close()
def test_ignores_hyphen(self): hyphen_log = test_data_path('test_strip_hyphen.log') file = open(hyphen_log) result = kunit_parser.parse_run_tests(file.readlines()) # A skipped test does not fail the whole suite. self.assertEqual(kunit_parser.TestStatus.SUCCESS, result.status) self.assertEqual("sysctl_test", result.subtests[0].name) self.assertEqual("example", result.subtests[1].name) file.close()
def test_missing_test_plan(self): missing_plan_log = test_data_path('test_is_test_passed-' 'missing_plan.log') with open(missing_plan_log) as file: result = kunit_parser.parse_run_tests( kunit_parser.extract_tap_lines(file.readlines())) # A missing test plan is not an error. self.assertEqual(0, result.counts.errors) # All tests should be accounted for. self.assertEqual(10, result.counts.total()) self.assertEqual(kunit_parser.TestStatus.SUCCESS, result.status)
def parse_tests(request: KunitParseRequest) -> KunitResult: parse_start = time.time() test_result = kunit_parser.TestResult(kunit_parser.TestStatus.SUCCESS, [], 'Tests not Parsed.') if request.raw_output: kunit_parser.raw_output(request.input_data) else: test_result = kunit_parser.parse_run_tests(request.input_data) parse_end = time.time() if test_result.status != kunit_parser.TestStatus.SUCCESS: return KunitResult(KunitStatus.TEST_FAILURE, test_result, parse_end - parse_start) return KunitResult(KunitStatus.SUCCESS, test_result, parse_end - parse_start)