[igt-dev] [PATCH] scripts/test_list.py: better identify planned tests
Mauro Carvalho Chehab
mauro.chehab at linux.intel.com
Mon Dec 4 12:33:35 UTC 2023
From: Mauro Carvalho Chehab <mchehab at kernel.org>
When planned tests are used, use a different start tag for
planned tests.
Signed-off-by: Mauro Carvalho Chehab <mchehab at kernel.org>
---
scripts/test_list.py | 55 ++++++++++++++++++++++++++++++--------------
1 file changed, 38 insertions(+), 17 deletions(-)
diff --git a/scripts/test_list.py b/scripts/test_list.py
index 7e0e45ca3732..eeb452091fbf 100644
--- a/scripts/test_list.py
+++ b/scripts/test_list.py
@@ -249,7 +249,8 @@ class TestList:
igt_build_path = None,
config_dict = None, sources_path = None,
test_tag = "TEST", subtest_tag = "SUBTESTS?",
- main_name = "igt", subtest_separator = "@"):
+ main_name = "igt", planned_name = "planned",
+ subtest_separator = "@"):
self.doc = {}
self.test_number = 0
self.config = None
@@ -262,7 +263,9 @@ class TestList:
self.title = None
self.filters = {}
self.subtest_separator = subtest_separator
- self.main_name = main_name
+
+ # Set a default value
+ driver_name = main_name
self.internal_fields = [ '_summary_', '_arg_', '_subtest_line_' ]
@@ -270,8 +273,11 @@ class TestList:
if bool(config_fname) == bool(config_dict):
sys.exit("Error: either config filename or config dict shall be used")
- if self.main_name:
- self.main_name += subtest_separator
+ if main_name:
+ main_name += subtest_separator
+
+ if planned_name:
+ planned_name += subtest_separator
implemented_class = None
@@ -287,7 +293,6 @@ class TestList:
self.config = config_dict
config_origin = "config dict"
cfg_path = "./"
- driver_name = main_name
if "drivers" in self.config:
self.drivers = self.config["drivers"]
@@ -341,7 +346,9 @@ class TestList:
for name in value.keys():
match_type = update.get("include-type", "subtest-match")
- self.read_testlist(match_type, field, testlist, name, cfg_path + value[name])
+ self.read_testlist(match_type, main_name, field,
+ testlist, name,
+ cfg_path + value[name])
update["include"] = testlist
@@ -352,7 +359,9 @@ class TestList:
for name in value.keys():
match_type = update.get("exclude-type", "subtest-match")
- self.read_testlist(match_type, field, testlist, name, cfg_path + value[name])
+ self.read_testlist(match_type, main_name, field,
+ testlist, name,
+ cfg_path + value[name])
update["exclude"] = testlist
@@ -414,12 +423,14 @@ class TestList:
if fname == '':
continue
- self.__add_file_documentation(fname, implemented_class, field_re,
+ self.__add_file_documentation(fname, main_name,
+ implemented_class, field_re,
test_tag, subtest_tag, config_origin)
if include_plan:
for fname in self.plan_filenames:
- self.__add_file_documentation(fname, planned_class, field_re,
+ self.__add_file_documentation(fname, planned_name,
+ planned_class, field_re,
test_tag, subtest_tag, config_origin)
#
@@ -456,9 +467,15 @@ class TestList:
self.__add_field(key, sublevel, hierarchy_level, field[key])
- def read_testlist(self, match_type, field, testlist, name, filename):
+ def read_testlist(self, match_type, base_name, field, testlist,
+ name, filename):
- """ Read a list of tests with a common value from a file"""
+ """
+ Read a list of tests with a common value from a file.
+
+ Tests on this list are matched only for actual tests, not
+ for planned ones.
+ """
match_type_regex = set(["regex", "regex-ignorecase"])
match_type_str = set(["subtest-match"])
@@ -473,7 +490,7 @@ class TestList:
flags = re.IGNORECASE
base = r"^\s*({}[^\s\{}]+)(\S*)\s*(\#.*)?$"
- regex = re.compile(base.format(self.main_name, self.subtest_separator))
+ regex = re.compile(base.format(base_name, self.subtest_separator))
if name not in testlist:
testlist[name] = []
@@ -711,10 +728,11 @@ class TestList:
for test in self.doc: # pylint: disable=C0206
fname = self.doc[test]["File"]
+ base_name = self.doc[test]["_base_name_"]
name = re.sub(r'.*/', '', fname)
name = re.sub(r'\.[\w+]$', '', name)
- name = self.main_name + name
+ name = base_name + name
if not subtest_only:
test_dict[name] = {}
@@ -757,10 +775,11 @@ class TestList:
for test in sorted(self.doc.keys()):
fname = self.doc[test]["File"]
+ base_name = self.doc[test]["_base_name_"]
name = re.sub(r'.*/', '', fname)
name = re.sub(r'\.[ch]', '', name)
- name = self.main_name + name
+ name = base_name + name
tmp_subtest = self.expand_subtest(fname, name, test, False)
@@ -1036,10 +1055,11 @@ class TestList:
subtest_array = []
for test in sorted(self.doc.keys()):
fname = self.doc[test]["File"]
+ base_name = self.doc[test]["_base_name_"]
test_name = re.sub(r'.*/', '', fname)
test_name = re.sub(r'\.[ch]', '', test_name)
- test_name = self.main_name + test_name
+ test_name = base_name + test_name
subtest_array += self.expand_subtest(fname, test_name, test, True)
@@ -1178,8 +1198,8 @@ class TestList:
# File handling methods
#
- def __add_file_documentation(self, fname, implemented_class, field_re,
- test_tag, subtest_tag, config_origin):
+ def __add_file_documentation(self, fname, base_name, implemented_class,
+ field_re, test_tag, subtest_tag, config_origin):
"""Adds the contents of test/subtest documentation form a file"""
@@ -1241,6 +1261,7 @@ class TestList:
self.doc[current_test] = {}
self.doc[current_test]["_arg_"] = {}
self.doc[current_test]["_summary_"] = match.group(1)
+ self.doc[current_test]["_base_name_"] = base_name
self.doc[current_test]["File"] = fname
self.doc[current_test]["subtest"] = {}
self.doc[current_test]["_subtest_line_"] = {}
--
2.43.0
More information about the igt-dev
mailing list