From: Mauro Carvalho Chehab <mauro.chehab@linux.intel.com>
To: igt-dev@lists.freedesktop.org
Subject: [igt-dev] [PATCH i-g-t v2 1/4] scripts/test_list.py: add support for ordering testlists
Date: Tue, 20 Jun 2023 10:55:19 +0200 [thread overview]
Message-ID: <20230620085522.3984101-2-mauro.chehab@linux.intel.com> (raw)
In-Reply-To: <20230620085522.3984101-1-mauro.chehab@linux.intel.com>
From: Mauro Carvalho Chehab <mchehab@kernel.org>
Testlists usually require an special order, like:
- an initial test which loads the driver;
- normal tests;
- dangerous tests (like KUnit ones).
Add support to handle order, by adding an "order" property at
the config file.
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
---
scripts/test_list.py | 55 ++++++++++++++++++++++++++++++++++++++------
1 file changed, 48 insertions(+), 7 deletions(-)
diff --git a/scripts/test_list.py b/scripts/test_list.py
index f676024c9571..76fdcf3dbb4f 100755
--- a/scripts/test_list.py
+++ b/scripts/test_list.py
@@ -819,18 +819,25 @@ class TestList:
# Subtest list methods
#
- def get_subtests(self, sort_field = None, expand = None):
+ def get_subtests(self, sort_field = None, expand = None, with_order = False):
"""Return an array with all subtests"""
subtests = {}
subtests[""] = []
+ order = None
+
if sort_field:
if sort_field.lower() not in self.field_list:
sys.exit(f"Field '{sort_field}' is not defined")
sort_field = self.field_list[sort_field.lower()]
+ if with_order:
+ if "_properties_" in self.props[sort_field]:
+ if "order" in self.props[sort_field]["_properties_"]:
+ order = self.props[sort_field]["_properties_"]["order"]
+
for test in sorted(self.doc.keys()):
fname = self.doc[test]["File"]
@@ -848,20 +855,54 @@ class TestList:
if sort_field in subtest:
if expand:
test_list = subtest[sort_field].split(expand)
+ test_list = [s.strip() for s in test_list]
+
for test_elem in test_list:
- test_elem = test_elem.strip()
if test_elem not in subtests:
subtests[test_elem] = []
- subtests[test_elem].append(subtest["Summary"])
+ if order:
+ subtests[test_elem].append((subtest["Summary"], test_list))
+ else:
+ subtests[test_elem].append(subtest["Summary"])
else:
if subtest[sort_field] not in subtests:
subtests[subtest[sort_field]] = []
- subtests[subtest[sort_field]].append(subtest["Summary"])
+ if order:
+ subtests[test_elem].append((subtest["Summary"], [subtest[sort_field]]))
+ else:
+ subtests[subtest[sort_field]].append(subtest["Summary"])
+ else:
+ if order:
+ subtests[test_elem].append((subtest["Summary"], [subtest[sort_field]]))
+ else:
+ subtests[""].append(subtest["Summary"])
+
+ else:
+ if order:
+ subtests[test_elem].append((subtest["Summary"], [subtest[sort_field]]))
else:
subtests[""].append(subtest["Summary"])
- else:
- subtests[""].append(subtest["Summary"])
+ if order:
+ for group, tests in subtests.items():
+ prefix_tests = []
+ suffix_tests = []
+ middle_tests = []
+ is_prefix = True
+ for k in order:
+ if k == "__all__":
+ is_prefix = False
+ continue
+ for test in tests:
+ if k in test[1]:
+ if is_prefix:
+ prefix_tests.append(test[0])
+ else:
+ suffix_tests.append(test[0])
+ for test in tests:
+ if test[0] not in prefix_tests and test[0] not in suffix_tests:
+ middle_tests.append(test[0])
+ subtests[group] = prefix_tests + middle_tests + suffix_tests
return subtests
@@ -1203,7 +1244,7 @@ class TestList:
test_prefix = re.sub(r'^igt@', '', test_prefix)
# NOTE: currently, it uses a comma for multi-value delimitter
- test_subtests = self.get_subtests(sort_field, ",")
+ test_subtests = self.get_subtests(sort_field, ",", with_order = True)
if not os.path.exists(directory):
os.makedirs(directory)
--
2.40.1
next prev parent reply other threads:[~2023-06-20 8:55 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-20 8:55 [igt-dev] [PATCH i-g-t v2 0/4] generate an ordered testlist for Xe driver Mauro Carvalho Chehab
2023-06-20 8:55 ` Mauro Carvalho Chehab [this message]
2023-06-21 16:44 ` [igt-dev] [PATCH i-g-t v2 1/4] scripts/test_list.py: add support for ordering testlists Kamil Konieczny
2023-06-20 8:55 ` [igt-dev] [PATCH i-g-t v2 2/4] xe_test_config.json: add an order for run type Mauro Carvalho Chehab
2023-06-21 16:45 ` Kamil Konieczny
2023-06-20 8:55 ` [igt-dev] [PATCH i-g-t v2 3/4] tests/xe: add run type fields to order testlists Mauro Carvalho Chehab
2023-06-21 16:46 ` Kamil Konieczny
2023-06-20 8:55 ` [igt-dev] [PATCH i-g-t v2 4/4] scripts/test_list.py: produce alphabetically ordered testlists Mauro Carvalho Chehab
2023-06-21 16:48 ` Kamil Konieczny
2023-06-20 10:54 ` [igt-dev] ✓ Fi.CI.BAT: success for generate an ordered testlist for Xe driver (rev2) Patchwork
2023-06-20 15:43 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230620085522.3984101-2-mauro.chehab@linux.intel.com \
--to=mauro.chehab@linux.intel.com \
--cc=igt-dev@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox