From 3b51b14cc34cd075fd865af35d3df2890533eb16 Mon Sep 17 00:00:00 2001 From: Nikita Sobolev Date: Thu, 7 Mar 2024 14:24:38 +0300 Subject: [PATCH 1/3] gh-115421: Test that our Makefile has all needed test folders (GH-115813) --- Lib/test/test_tools/test_makefile.py | 64 ++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 Lib/test/test_tools/test_makefile.py diff --git a/Lib/test/test_tools/test_makefile.py b/Lib/test/test_tools/test_makefile.py new file mode 100644 index 000000000000000..7222a054dcd61ca --- /dev/null +++ b/Lib/test/test_tools/test_makefile.py @@ -0,0 +1,64 @@ +""" +Tests for `Makefile`. +""" + +import os +import unittest +from test import support +import sysconfig + +MAKEFILE = sysconfig.get_makefile_filename() + +if not support.check_impl_detail(cpython=True): + raise unittest.SkipTest('cpython only') +if not os.path.exists(MAKEFILE) or not os.path.isfile(MAKEFILE): + raise unittest.SkipTest('Makefile could not be found') + + +class TestMakefile(unittest.TestCase): + def list_test_dirs(self): + result = [] + found_testsubdirs = False + with open(MAKEFILE, 'r', encoding='utf-8') as f: + for line in f: + if line.startswith('TESTSUBDIRS='): + found_testsubdirs = True + result.append( + line.removeprefix('TESTSUBDIRS=').replace( + '\\', '', + ).strip(), + ) + continue + if found_testsubdirs: + if '\t' not in line: + break + result.append(line.replace('\\', '').strip()) + return result + + def test_makefile_test_folders(self): + test_dirs = self.list_test_dirs() + idle_test = 'idlelib/idle_test' + self.assertIn(idle_test, test_dirs) + + used = [idle_test] + for dirpath, _, _ in os.walk(support.TEST_HOME_DIR): + dirname = os.path.basename(dirpath) + if dirname == '__pycache__': + continue + + relpath = os.path.relpath(dirpath, support.STDLIB_DIR) + with self.subTest(relpath=relpath): + self.assertIn( + relpath, + test_dirs, + msg=( + f"{relpath!r} is not included in the Makefile's list " + "of test directories to install" + ) + ) + used.append(relpath) + + # Check that there are no extra entries: + unique_test_dirs = set(test_dirs) + self.assertSetEqual(unique_test_dirs, set(used)) + self.assertEqual(len(test_dirs), len(unique_test_dirs)) From a3cd527b09c9839463fe207e8ae5755f44d7e89b Mon Sep 17 00:00:00 2001 From: Petr Viktorin Date: Thu, 7 Mar 2024 12:44:39 +0100 Subject: [PATCH 2/3] Update the list of installed test subdirectories --- Makefile.pre.in | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Makefile.pre.in b/Makefile.pre.in index 6700b887a95af72..75db90b2cf76193 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -2245,7 +2245,14 @@ TESTSUBDIRS= idlelib/idle_test \ test/wheeldata \ test/xmltestdata \ test/xmltestdata/c14n-20 \ - test/ziptestdata + test/ziptestdata \ + test/support/interpreters \ + test/test_interpreters \ + test/test_concurrent_futures \ + test/test_multiprocessing_fork \ + test/test_multiprocessing_forkserver \ + test/test_multiprocessing_spawn \ + test/test_pathlib COMPILEALL_OPTS=-j0 From 946ce4d9006016a85a2828e11367310f9d1b231a Mon Sep 17 00:00:00 2001 From: Petr Viktorin Date: Thu, 7 Mar 2024 14:20:11 +0100 Subject: [PATCH 3/3] Remove tests missing in 3.12 --- Makefile.pre.in | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Makefile.pre.in b/Makefile.pre.in index 75db90b2cf76193..27a26c225230b4e 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -2246,13 +2246,10 @@ TESTSUBDIRS= idlelib/idle_test \ test/xmltestdata \ test/xmltestdata/c14n-20 \ test/ziptestdata \ - test/support/interpreters \ - test/test_interpreters \ test/test_concurrent_futures \ test/test_multiprocessing_fork \ test/test_multiprocessing_forkserver \ - test/test_multiprocessing_spawn \ - test/test_pathlib + test/test_multiprocessing_spawn COMPILEALL_OPTS=-j0