From 738574fb21967a1f313f1542dd7b70ae0dcd9705 Mon Sep 17 00:00:00 2001 From: Charles Machalow Date: Tue, 17 Oct 2023 22:05:41 -0700 Subject: gh-108747: Add unit tests for site.{usercustomize,sitecustomize} hooks (#109470) --- Lib/test/test_site.py | 38 ++++++++++++++++++++++ .../2023-09-15-15-00-14.gh-issue-108747.ql0owS.rst | 2 ++ 2 files changed, 40 insertions(+) create mode 100644 Misc/NEWS.d/next/Tests/2023-09-15-15-00-14.gh-issue-108747.ql0owS.rst diff --git a/Lib/test/test_site.py b/Lib/test/test_site.py index e8ec3b3..33d0975 100644 --- a/Lib/test/test_site.py +++ b/Lib/test/test_site.py @@ -465,6 +465,44 @@ class ImportSideEffectTests(unittest.TestCase): else: self.fail("sitecustomize not imported automatically") + @support.requires_subprocess() + def test_customization_modules_on_startup(self): + mod_names = [ + 'sitecustomize' + ] + + if site.ENABLE_USER_SITE: + mod_names.append('usercustomize') + + temp_dir = tempfile.mkdtemp() + self.addCleanup(os_helper.rmtree, temp_dir) + + with EnvironmentVarGuard() as environ: + environ['PYTHONPATH'] = temp_dir + + for module_name in mod_names: + os_helper.rmtree(temp_dir) + os.mkdir(temp_dir) + + customize_path = os.path.join(temp_dir, f'{module_name}.py') + eyecatcher = f'EXECUTED_{module_name}' + + with open(customize_path, 'w') as f: + f.write(f'print("{eyecatcher}")') + + output = subprocess.check_output([sys.executable, '-c', '""']) + self.assertIn(eyecatcher, output.decode('utf-8')) + + # -S blocks any site-packages + output = subprocess.check_output([sys.executable, '-S', '-c', '""']) + self.assertNotIn(eyecatcher, output.decode('utf-8')) + + # -s blocks user site-packages + if 'usercustomize' == module_name: + output = subprocess.check_output([sys.executable, '-s', '-c', '""']) + self.assertNotIn(eyecatcher, output.decode('utf-8')) + + @unittest.skipUnless(hasattr(urllib.request, "HTTPSHandler"), 'need SSL support to download license') @test.support.requires_resource('network') diff --git a/Misc/NEWS.d/next/Tests/2023-09-15-15-00-14.gh-issue-108747.ql0owS.rst b/Misc/NEWS.d/next/Tests/2023-09-15-15-00-14.gh-issue-108747.ql0owS.rst new file mode 100644 index 0000000..ba1fe97 --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2023-09-15-15-00-14.gh-issue-108747.ql0owS.rst @@ -0,0 +1,2 @@ +Add unit test for ``usercustomize`` and ``sitecustomize`` hooks from +:class:`site`. -- cgit v0.12