diff options
Diffstat (limited to 'tools/testing/kunit/kunit_tool_test.py')
| -rwxr-xr-x | tools/testing/kunit/kunit_tool_test.py | 108 | 
1 files changed, 90 insertions, 18 deletions
diff --git a/tools/testing/kunit/kunit_tool_test.py b/tools/testing/kunit/kunit_tool_test.py index cba97756ac4a..984588d6ba95 100755 --- a/tools/testing/kunit/kunit_tool_test.py +++ b/tools/testing/kunit/kunit_tool_test.py @@ -37,7 +37,7 @@ class KconfigTest(unittest.TestCase):  		self.assertTrue(kconfig0.is_subset_of(kconfig0))  		kconfig1 = kunit_config.Kconfig() -		kconfig1.add_entry(kunit_config.KconfigEntry('CONFIG_TEST=y')) +		kconfig1.add_entry(kunit_config.KconfigEntry('TEST', 'y'))  		self.assertTrue(kconfig1.is_subset_of(kconfig1))  		self.assertTrue(kconfig0.is_subset_of(kconfig1))  		self.assertFalse(kconfig1.is_subset_of(kconfig0)) @@ -51,15 +51,15 @@ class KconfigTest(unittest.TestCase):  		expected_kconfig = kunit_config.Kconfig()  		expected_kconfig.add_entry( -			kunit_config.KconfigEntry('CONFIG_UML=y')) +			kunit_config.KconfigEntry('UML', 'y'))  		expected_kconfig.add_entry( -			kunit_config.KconfigEntry('CONFIG_MMU=y')) +			kunit_config.KconfigEntry('MMU', 'y'))  		expected_kconfig.add_entry( -			kunit_config.KconfigEntry('CONFIG_TEST=y')) +			kunit_config.KconfigEntry('TEST', 'y'))  		expected_kconfig.add_entry( -			kunit_config.KconfigEntry('CONFIG_EXAMPLE_TEST=y')) +			kunit_config.KconfigEntry('EXAMPLE_TEST', 'y'))  		expected_kconfig.add_entry( -			kunit_config.KconfigEntry('# CONFIG_MK8 is not set')) +			kunit_config.KconfigEntry('MK8', 'n'))  		self.assertEqual(kconfig.entries(), expected_kconfig.entries()) @@ -68,15 +68,15 @@ class KconfigTest(unittest.TestCase):  		expected_kconfig = kunit_config.Kconfig()  		expected_kconfig.add_entry( -			kunit_config.KconfigEntry('CONFIG_UML=y')) +			kunit_config.KconfigEntry('UML', 'y'))  		expected_kconfig.add_entry( -			kunit_config.KconfigEntry('CONFIG_MMU=y')) +			kunit_config.KconfigEntry('MMU', 'y'))  		expected_kconfig.add_entry( -			kunit_config.KconfigEntry('CONFIG_TEST=y')) +			kunit_config.KconfigEntry('TEST', 'y'))  		expected_kconfig.add_entry( -			kunit_config.KconfigEntry('CONFIG_EXAMPLE_TEST=y')) +			kunit_config.KconfigEntry('EXAMPLE_TEST', 'y'))  		expected_kconfig.add_entry( -			kunit_config.KconfigEntry('# CONFIG_MK8 is not set')) +			kunit_config.KconfigEntry('MK8', 'n'))  		expected_kconfig.write_to_file(kconfig_path) @@ -108,6 +108,36 @@ class KUnitParserTest(unittest.TestCase):  		self.assertContains('ok 1 - example', result)  		file.close() +	def test_output_with_prefix_isolated_correctly(self): +		log_path = get_absolute_path( +			'test_data/test_pound_sign.log') +		with open(log_path) as file: +			result = kunit_parser.isolate_kunit_output(file.readlines()) +		self.assertContains('TAP version 14\n', result) +		self.assertContains('	# Subtest: kunit-resource-test', result) +		self.assertContains('	1..5', result) +		self.assertContains('	ok 1 - kunit_resource_test_init_resources', result) +		self.assertContains('	ok 2 - kunit_resource_test_alloc_resource', result) +		self.assertContains('	ok 3 - kunit_resource_test_destroy_resource', result) +		self.assertContains(' foo bar 	#', result) +		self.assertContains('	ok 4 - kunit_resource_test_cleanup_resources', result) +		self.assertContains('	ok 5 - kunit_resource_test_proper_free_ordering', result) +		self.assertContains('ok 1 - kunit-resource-test', result) +		self.assertContains(' foo bar 	# non-kunit output', result) +		self.assertContains('	# Subtest: kunit-try-catch-test', result) +		self.assertContains('	1..2', result) +		self.assertContains('	ok 1 - kunit_test_try_catch_successful_try_no_catch', +				    result) +		self.assertContains('	ok 2 - kunit_test_try_catch_unsuccessful_try_does_catch', +				    result) +		self.assertContains('ok 2 - kunit-try-catch-test', result) +		self.assertContains('	# Subtest: string-stream-test', result) +		self.assertContains('	1..3', result) +		self.assertContains('	ok 1 - string_stream_test_empty_on_creation', result) +		self.assertContains('	ok 2 - string_stream_test_not_empty_after_add', result) +		self.assertContains('	ok 3 - string_stream_test_get_string', result) +		self.assertContains('ok 3 - string-stream-test', result) +  	def test_parse_successful_test_log(self):  		all_passed_log = get_absolute_path(  			'test_data/test_is_test_passed-all_passed.log') @@ -150,6 +180,45 @@ class KUnitParserTest(unittest.TestCase):  			result.status)  		file.close() +	def test_ignores_prefix_printk_time(self): +		prefix_log = get_absolute_path( +			'test_data/test_config_printk_time.log') +		with open(prefix_log) as file: +			result = kunit_parser.parse_run_tests(file.readlines()) +		self.assertEqual('kunit-resource-test', result.suites[0].name) + +	def test_ignores_multiple_prefixes(self): +		prefix_log = get_absolute_path( +			'test_data/test_multiple_prefixes.log') +		with open(prefix_log) as file: +			result = kunit_parser.parse_run_tests(file.readlines()) +		self.assertEqual('kunit-resource-test', result.suites[0].name) + +	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-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-resource-test', result.suites[0].name) + +	def test_kernel_panic_end(self): +		panic_log = get_absolute_path('test_data/test_kernel_panic_interrupt.log') +		with open(panic_log) as file: +			result = kunit_parser.parse_run_tests(file.readlines()) +		self.assertEqual('kunit-resource-test', result.suites[0].name) + +	def test_pound_no_prefix(self): +		pound_log = get_absolute_path('test_data/test_pound_no_prefix.log') +		with open(pound_log) as file: +			result = kunit_parser.parse_run_tests(file.readlines()) +		self.assertEqual('kunit-resource-test', result.suites[0].name) +  class StrContains(str):  	def __eq__(self, other):  		return self in other @@ -174,7 +243,8 @@ class KUnitMainTest(unittest.TestCase):  		kunit.main(['run'], self.linux_source_mock)  		assert self.linux_source_mock.build_reconfig.call_count == 1  		assert self.linux_source_mock.run_kernel.call_count == 1 -		self.linux_source_mock.run_kernel.assert_called_once_with(build_dir='', timeout=300) +		self.linux_source_mock.run_kernel.assert_called_once_with( +			build_dir='', timeout=300)  		self.print_mock.assert_any_call(StrContains('Testing complete.'))  	def test_run_passes_args_fail(self): @@ -189,25 +259,27 @@ class KUnitMainTest(unittest.TestCase):  	def test_run_raw_output(self):  		self.linux_source_mock.run_kernel = mock.Mock(return_value=[]) -		kunit.main(['run', '--raw_output'], self.linux_source_mock) +		with self.assertRaises(SystemExit) as e: +			kunit.main(['run', '--raw_output'], self.linux_source_mock) +		assert type(e.exception) == SystemExit +		assert e.exception.code == 1  		assert self.linux_source_mock.build_reconfig.call_count == 1  		assert self.linux_source_mock.run_kernel.call_count == 1 -		for kall in self.print_mock.call_args_list: -			assert kall != mock.call(StrContains('Testing complete.')) -			assert kall != mock.call(StrContains(' 0 tests run'))  	def test_run_timeout(self):  		timeout = 3453  		kunit.main(['run', '--timeout', str(timeout)], self.linux_source_mock)  		assert self.linux_source_mock.build_reconfig.call_count == 1 -		self.linux_source_mock.run_kernel.assert_called_once_with(build_dir='', timeout=timeout) +		self.linux_source_mock.run_kernel.assert_called_once_with( +			build_dir='', timeout=timeout)  		self.print_mock.assert_any_call(StrContains('Testing complete.'))  	def test_run_builddir(self):  		build_dir = '.kunit'  		kunit.main(['run', '--build_dir', build_dir], self.linux_source_mock)  		assert self.linux_source_mock.build_reconfig.call_count == 1 -		self.linux_source_mock.run_kernel.assert_called_once_with(build_dir=build_dir, timeout=300) +		self.linux_source_mock.run_kernel.assert_called_once_with( +			build_dir=build_dir, timeout=300)  		self.print_mock.assert_any_call(StrContains('Testing complete.'))  if __name__ == '__main__':  |