Commit e173b8b8 authored by Uriel Guajardo's avatar Uriel Guajardo Committed by Shuah Khan
Browse files

kunit: show error if kunit results are not present



Currently, if the kernel is configured incorrectly or if it crashes before any
kunit tests are run, kunit finishes without error, reporting
that 0 test cases were run.

To fix this, an error is shown when the tap header is not found, which
indicates that kunit was not able to run at all.

Signed-off-by: default avatarUriel Guajardo <urielguajardo@google.com>
Reviewed-by: default avatarBrendan Higgins <brendanhiggins@google.com>
Signed-off-by: default avatarShuah Khan <skhan@linuxfoundation.org>
parent 3f37d14b
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -265,11 +265,9 @@ def bubble_up_suite_errors(test_suite_list: List[TestSuite]) -> TestStatus:
	return bubble_up_errors(lambda x: x.status, test_suite_list)

def parse_test_result(lines: List[str]) -> TestResult:
	if not lines:
		return TestResult(TestStatus.NO_TESTS, [], lines)
	consume_non_diagnositic(lines)
	if not parse_tap_header(lines):
		return None
	if not lines or not parse_tap_header(lines):
		return TestResult(TestStatus.NO_TESTS, [], lines)
	test_suites = []
	test_suite = parse_test_suite(lines)
	while test_suite:
@@ -282,6 +280,8 @@ def parse_run_tests(kernel_output) -> TestResult:
	failed_tests = 0
	crashed_tests = 0
	test_result = parse_test_result(list(isolate_kunit_output(kernel_output)))
	if test_result.status == TestStatus.NO_TESTS:
		print_with_timestamp(red('[ERROR] ') + 'no kunit output detected')
	for test_suite in test_result.suites:
		if test_suite.status == TestStatus.SUCCESS:
			print_suite_divider(green('[PASSED] ') + test_suite.name)
+11 −0
Original line number Diff line number Diff line
@@ -170,6 +170,17 @@ class KUnitParserTest(unittest.TestCase):
			result.status)
		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 kunit output detected"))
		print_mock.stop()
		file.close()

	def test_crashed_test(self):
		crashed_log = get_absolute_path(
			'test_data/test_is_test_passed-crash.log')
+0 −0

Empty file added.