twister: Skip scanning non-ztest tests in Twister
Twister scans C-files to find testcases that are implemented using ZTest framework. Also runs scanning of Elf files after building. Skip scanning files if it is not required. Signed-off-by: Grzegorz Chwierut <grzegorz.chwierut@nordicsemi.no>
This commit is contained in:
parent
f3a6454f93
commit
663786d0a4
4 changed files with 29 additions and 17 deletions
|
|
@ -660,6 +660,7 @@ class ProjectBuilder(FilterBuilder):
|
|||
self.instance.add_missing_case_status("blocked", self.instance.reason)
|
||||
pipeline.put({"op": "report", "test": self.instance})
|
||||
else:
|
||||
if self.instance.testsuite.harness in ['ztest', 'test']:
|
||||
logger.debug(f"Determine test cases for test instance: {self.instance.name}")
|
||||
try:
|
||||
self.determine_testcases(results)
|
||||
|
|
@ -669,6 +670,8 @@ class ProjectBuilder(FilterBuilder):
|
|||
self.instance.status = "error"
|
||||
self.instance.reason = str(e)
|
||||
pipeline.put({"op": "report", "test": self.instance})
|
||||
else:
|
||||
pipeline.put({"op": "gather_metrics", "test": self.instance})
|
||||
|
||||
elif op == "gather_metrics":
|
||||
ret = self.gather_metrics(self.instance)
|
||||
|
|
|
|||
|
|
@ -542,12 +542,19 @@ class TestPlan:
|
|||
try:
|
||||
parsed_data = TwisterConfigParser(suite_yaml_path, self.suite_schema)
|
||||
parsed_data.load()
|
||||
subcases, ztest_suite_names = scan_testsuite_path(suite_path)
|
||||
subcases = None
|
||||
ztest_suite_names = None
|
||||
|
||||
for name in parsed_data.scenarios.keys():
|
||||
suite_dict = parsed_data.get_scenario(name)
|
||||
suite = TestSuite(root, suite_path, name, data=suite_dict, detailed_test_id=self.options.detailed_test_id)
|
||||
if suite.harness in ['ztest', 'test']:
|
||||
if subcases is None:
|
||||
# scan it only once per testsuite
|
||||
subcases, ztest_suite_names = scan_testsuite_path(suite_path)
|
||||
suite.add_subcases(suite_dict, subcases, ztest_suite_names)
|
||||
else:
|
||||
suite.add_subcases(suite_dict)
|
||||
if testsuite_filter:
|
||||
scenario = os.path.basename(suite.name)
|
||||
if suite.name and (suite.name in testsuite_filter or scenario in testsuite_filter):
|
||||
|
|
|
|||
|
|
@ -423,20 +423,21 @@ class TestSuite(DisablePyTestCollectionMixin):
|
|||
if self.harness == 'console' and not self.harness_config:
|
||||
raise Exception('Harness config error: console harness defined without a configuration.')
|
||||
|
||||
def add_subcases(self, data, parsed_subcases, suite_names):
|
||||
def add_subcases(self, data, parsed_subcases=None, suite_names=None):
|
||||
testcases = data.get("testcases", [])
|
||||
if testcases:
|
||||
for tc in testcases:
|
||||
self.add_testcase(name=f"{self.id}.{tc}")
|
||||
else:
|
||||
if not parsed_subcases:
|
||||
self.add_testcase(self.id, freeform=True)
|
||||
else:
|
||||
# only add each testcase once
|
||||
for sub in set(parsed_subcases):
|
||||
name = "{}.{}".format(self.id, sub)
|
||||
self.add_testcase(name)
|
||||
|
||||
if not parsed_subcases:
|
||||
self.add_testcase(self.id, freeform=True)
|
||||
|
||||
if suite_names:
|
||||
self.ztest_suite_names = suite_names
|
||||
|
||||
def add_testcase(self, name, freeform=False):
|
||||
|
|
|
|||
|
|
@ -1504,6 +1504,7 @@ def test_projectbuilder_process(
|
|||
instance_mock.run = instance_run
|
||||
instance_mock.handler = mock.Mock()
|
||||
instance_mock.handler.ready = instance_handler_ready
|
||||
instance_mock.testsuite.harness = 'test'
|
||||
env_mock = mock.Mock()
|
||||
|
||||
pb = ProjectBuilder(instance_mock, env_mock, mocked_jobserver)
|
||||
|
|
|
|||
Loading…
Reference in a new issue