Commit c68077b1 authored by David Gow's avatar David Gow Committed by Shuah Khan
Browse files

kunit: tool: Do not error on tests without test plans



The (K)TAP spec encourages test output to begin with a 'test plan': a
count of the number of tests being run of the form:
1..n

However, some test suites might not know the number of subtests in
advance (for example, KUnit's parameterised tests use a generator
function). In this case, it's not possible to print the test plan in
advance.

kunit_tool already parses test output which doesn't contain a plan, but
reports an error. Since we want to use nested subtests with KUnit
paramterised tests, remove this error.

Signed-off-by: default avatarDavid Gow <davidgow@google.com>
Reviewed-by: default avatarDaniel Latypov <dlatypov@google.com>
Reviewed-by: default avatarBrendan Higgins <brendanhiggins@google.com>
Signed-off-by: default avatarShuah Khan <skhan@linuxfoundation.org>
parent ee92ed38
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -340,8 +340,8 @@ def parse_test_plan(lines: LineStream, test: Test) -> bool:
	"""
	Parses test plan line and stores the expected number of subtests in
	test object. Reports an error if expected count is 0.
	Returns False and reports missing test plan error if fails to parse
	test plan.
	Returns False and sets expected_count to None if there is no valid test
	plan.

	Accepted format:
	- '1..[number of subtests]'
@@ -356,7 +356,6 @@ def parse_test_plan(lines: LineStream, test: Test) -> bool:
	match = TEST_PLAN.match(lines.peek())
	if not match:
		test.expected_count = None
		test.add_error('missing plan line!')
		return False
	test.log.append(lines.pop())
	expected_count = int(match.group(1))
+4 −1
Original line number Diff line number Diff line
@@ -191,7 +191,10 @@ class KUnitParserTest(unittest.TestCase):
			result = kunit_parser.parse_run_tests(
				kunit_parser.extract_tap_lines(
				file.readlines()))
		self.assertEqual(2, result.test.counts.errors)
		# A missing test plan is not an error.
		self.assertEqual(0, result.test.counts.errors)
		# All tests should be accounted for.
		self.assertEqual(10, result.test.counts.total())
		self.assertEqual(
			kunit_parser.TestStatus.SUCCESS,
			result.status)