[igt-dev] [PATCH i-g-t v2 04/13] scripts/igt_doc.py: pass a single file when checking docs

Mauro Carvalho Chehab mauro.chehab at linux.intel.com
Wed Jul 12 13:58:45 UTC 2023


From: Mauro Carvalho Chehab <mchehab at kernel.org>

Instead of passing a directory with several *.testlist files,
pass intel-ci.testlist, which should contain already everything.

That makes the script a lot more generic, as there won't be any
real dependencies from IGT related to the check logic.

Signed-off-by: Mauro Carvalho Chehab <mchehab at kernel.org>
---
 docs/testplan/meson.build  |  2 +-
 scripts/igt_doc.py         |  6 +++---
 scripts/test_list.py       | 42 +++++++++++++++++++-------------------
 tests/intel-ci/meson.build |  2 +-
 4 files changed, 26 insertions(+), 26 deletions(-)
 mode change 100755 => 100644 scripts/test_list.py

diff --git a/docs/testplan/meson.build b/docs/testplan/meson.build
index e838f2eb1540..b388a04b20ea 100644
--- a/docs/testplan/meson.build
+++ b/docs/testplan/meson.build
@@ -16,7 +16,7 @@ if build_tests
 	# Check if documentation matches the actual tests and tests can run
 	if not meson.is_cross_build()
 		build_info += 'Will Check if documentation is in sync with testlist'
-		check_testlist = [ '--check-testlist', '--igt-build-path', build_root ]
+		check_testlist = [ '--check-testlist', '--built-testlist', built_testlist.full_path() ]
 	else
 		warning('WARNING: Will not check if documentation is in sync with testlist')
 	endif
diff --git a/scripts/igt_doc.py b/scripts/igt_doc.py
index 38e2bdee4f2a..c02029e03a31 100755
--- a/scripts/igt_doc.py
+++ b/scripts/igt_doc.py
@@ -38,8 +38,8 @@ parser.add_argument("--check-testlist", action="store_true",
                     help="Compare documentation against IGT built tests.")
 parser.add_argument("--include-plan", action="store_true",
                     help="Include test plans, if any.")
-parser.add_argument("--igt-build-path",
-                    help="Path to the IGT build directory. Used by --check-testlist.",
+parser.add_argument("--built-testlist",
+                    help="Testlist generated at build time. Used by --check-testlist.",
                     default=IGT_BUILD_PATH)
 parser.add_argument("--gen-testlist",
                     help="Generate documentation at the GEN_TESTLIST directory, using SORT_FIELD to split the tests. Requires --sort-field.")
@@ -49,7 +49,7 @@ parser.add_argument('--files', nargs='+',
 parse_args = parser.parse_args()
 
 tests = TestList(parse_args.config, parse_args.include_plan, parse_args.files,
-                 parse_args.igt_build_path)
+                 parse_args.built_testlist)
 
 if parse_args.filter_field:
     for filter_expr in parse_args.filter_field:
diff --git a/scripts/test_list.py b/scripts/test_list.py
old mode 100755
new mode 100644
index 8dca7fc7c49e..1fd27ef560a7
--- a/scripts/test_list.py
+++ b/scripts/test_list.py
@@ -246,7 +246,7 @@ class TestList:
     """
 
     def __init__(self, config_fname, include_plan = False, file_list = False,
-                 igt_build_path = None,
+                 built_testlist = None,
                  test_tag = "TEST", subtest_tag = "SUBTESTS?",
                  main_name = "igt", subtest_separator = "@"):
         self.doc = {}
@@ -256,7 +256,7 @@ class TestList:
         self.plan_filenames = []
         self.props = {}
         self.config_fname = config_fname
-        self.igt_build_path = igt_build_path
+        self.built_testlist = built_testlist
         self.level_count = 0
         self.field_list = {}
         self.title = None
@@ -852,7 +852,7 @@ class TestList:
             fname = self.doc[test]["File"]
 
             test_name = re.sub(r'.*/', '', fname)
-            test_name = re.sub(r'\.[ch]', '', test_name)
+            test_name = re.sub(r'\.[ch]\s*', '', test_name)
             test_name = self.main_name + test_name
 
             subtest_array += self.expand_subtest(fname, test_name, test, True)
@@ -918,29 +918,15 @@ class TestList:
 
         return subtests
 
-    def get_testlist(self):
-
-        """ Return a list of tests as reported by --list-subtests """
-        tests = []
-        for name in self.filenames:
-            fname = re.sub(r"\.c$", ".testlist", name.split('/')[-1])
-            fname = os.path.join(self.igt_build_path, "tests", fname)
-
-            with open(fname, 'r', encoding='utf8') as handle:
-                for line in handle:
-                    tests.append(line.rstrip("\n"))
-
-        return sorted(tests)
-
     #
     # Validation methods
     #
     def check_tests(self):
 
-        """Compare documented subtests with the IGT test list"""
+        """Compare documented subtests with the test list"""
 
-        if not self.igt_build_path:
-            sys.exit("Need the IGT build path")
+        if not self.built_testlist:
+            sys.exit("Need the build path where the exec files are located")
 
         if self.filters:
             print("NOTE: test checks are affected by filters")
@@ -957,7 +943,21 @@ class TestList:
         doc_subtests = list(sorted(doc_subtests))
 
         # Get a list of tests from
-        run_subtests = self.get_testlist()
+        tests = set()
+        for name in self.filenames:
+            test = self.main_name + re.sub(r"\.c$", "", name.split('/')[-1])
+            tests.add(test)
+
+        run_subtests = []
+        with open(self.built_testlist, 'r', encoding='utf8') as handle:
+            for line in handle:
+                name = line.rstrip("\n")
+                if name in tests:
+                    run_subtests.append(name)
+                else:
+                    result = name.rsplit(self.subtest_separator, 1)[0]
+                    if name in tests:
+                        run_subtests.append(name)
 
         # Compare arrays
 
diff --git a/tests/intel-ci/meson.build b/tests/intel-ci/meson.build
index a1ec517f8da1..e984fcb817aa 100644
--- a/tests/intel-ci/meson.build
+++ b/tests/intel-ci/meson.build
@@ -9,7 +9,7 @@ intelci_files = [
   'xe.blocklist.txt',
 ]
 
-custom_target('intel-ci.testlist',
+built_testlist = custom_target('intel-ci.testlist',
               build_by_default : true,
               command : ['sort', testlist_files],
               install : true,
-- 
2.40.1



More information about the igt-dev mailing list