]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
make regen-stdlib-module-names rejects test modules (#105921)
authorVictor Stinner <vstinner@python.org>
Tue, 20 Jun 2023 08:12:44 +0000 (10:12 +0200)
committerGitHub <noreply@github.com>
Tue, 20 Jun 2023 08:12:44 +0000 (10:12 +0200)
Make sure that sys.stdlib_module_names doesn't contain test modules.

Tools/build/generate_stdlib_module_names.py

index 17668f4a456473c8eff913cbd73f175147d471d9..72f6923c7c316a283ad619c518215870f01dd219 100644 (file)
@@ -43,6 +43,16 @@ IGNORE = {
     'xxsubtype',
 }
 
+ALLOW_TEST_MODULES = {
+    'doctest',
+    'unittest',
+}
+
+# Built-in modules
+def list_builtin_modules(names):
+    names |= set(sys.builtin_module_names)
+
+
 # Pure Python modules (Lib/*.py)
 def list_python_modules(names):
     for filename in os.listdir(STDLIB_PATH):
@@ -93,7 +103,9 @@ def list_frozen(names):
 
 
 def list_modules():
-    names = set(sys.builtin_module_names)
+    names = set()
+
+    list_builtin_modules(names)
     list_modules_setup_extensions(names)
     list_packages(names)
     list_python_modules(names)
@@ -106,9 +118,12 @@ def list_modules():
         if package_name in IGNORE:
             names.discard(name)
 
+    # Sanity checks
     for name in names:
         if "." in name:
-            raise Exception("sub-modules must not be listed")
+            raise Exception(f"sub-modules must not be listed: {name}")
+        if ("test" in name or "xx" in name) and name not in ALLOW_TEST_MODULES:
+            raise Exception(f"test modules must not be listed: {name}")
 
     return names