bpo-27807: Skip test_site.test_startup_imports() if pth file (GH-19060)

test_site.test_startup_imports() is now skipped if a path of sys.path
contains a .pth file.

Sort test_site imports.
This commit is contained in:
Victor Stinner 2020-03-18 18:27:32 +01:00 committed by GitHub
parent 4657a8a0d0
commit d18de46117
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 5 deletions

View File

@ -10,16 +10,17 @@ from test import support
from test.support import (captured_stderr, TESTFN, EnvironmentVarGuard,
change_cwd)
import builtins
import os
import sys
import re
import encodings
import urllib.request
import urllib.error
import glob
import os
import re
import shutil
import subprocess
import sys
import sysconfig
import tempfile
import urllib.error
import urllib.request
from unittest import mock
from copy import copy
@ -519,6 +520,23 @@ class ImportSideEffectTests(unittest.TestCase):
class StartupImportTests(unittest.TestCase):
def test_startup_imports(self):
# Get sys.path in isolated mode (python3 -I)
popen = subprocess.Popen([sys.executable, '-I', '-c',
'import sys; print(repr(sys.path))'],
stdout=subprocess.PIPE,
encoding='utf-8')
stdout = popen.communicate()[0]
self.assertEqual(popen.returncode, 0, repr(stdout))
isolated_paths = eval(stdout)
# bpo-27807: Even with -I, the site module executes all .pth files
# found in sys.path (see site.addpackage()). Skip the test if at least
# one .pth file is found.
for path in isolated_paths:
pth_files = glob.glob(os.path.join(path, "*.pth"))
if pth_files:
self.skipTest(f"found {len(pth_files)} .pth files in: {path}")
# This tests checks which modules are loaded by Python when it
# initially starts upon startup.
popen = subprocess.Popen([sys.executable, '-I', '-v', '-c',
@ -527,6 +545,7 @@ class StartupImportTests(unittest.TestCase):
stderr=subprocess.PIPE,
encoding='utf-8')
stdout, stderr = popen.communicate()
self.assertEqual(popen.returncode, 0, (stdout, stderr))
modules = eval(stdout)
self.assertIn('site', modules)

View File

@ -0,0 +1,2 @@
``test_site.test_startup_imports()`` is now skipped if a path of
:data:`sys.path` contains a ``.pth`` file.