gh-108747: Add unit tests for site.{usercustomize,sitecustomize} hooks (#109470)

This commit is contained in:
Charles Machalow 2023-10-17 22:05:41 -07:00 committed by GitHub
parent 220bcc9e27
commit 738574fb21
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 40 additions and 0 deletions

View file

@ -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')