summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_importlib/extension
diff options
context:
space:
mode:
authorMeador Inge <meadori@gmail.com>2013-09-03 21:53:22 (GMT)
committerMeador Inge <meadori@gmail.com>2013-09-03 21:53:22 (GMT)
commit9ab358ad7cfc235556f52923bcf265b5bc32b4fc (patch)
tree7c1c2b1a5ad6706cc07e61236effadc4ff3d0f97 /Lib/test/test_importlib/extension
parentc6171e49ab2aee5807bcb6c0f77d0de13a164a99 (diff)
parentd151da9ef7de3ce93f0e29a62ae2a470495db1d0 (diff)
downloadcpython-9ab358ad7cfc235556f52923bcf265b5bc32b4fc.zip
cpython-9ab358ad7cfc235556f52923bcf265b5bc32b4fc.tar.gz
cpython-9ab358ad7cfc235556f52923bcf265b5bc32b4fc.tar.bz2
Issue #16826: Don't check for PYTHONCASEOK when using -E.
This commit fixes a regression that sneaked into Python 3.3 where importlib was not respecting -E when checking for the PYTHONCASEOK environment variable.
Diffstat (limited to 'Lib/test/test_importlib/extension')
-rw-r--r--Lib/test/test_importlib/extension/test_case_sensitivity.py37
1 files changed, 29 insertions, 8 deletions
diff --git a/Lib/test/test_importlib/extension/test_case_sensitivity.py b/Lib/test/test_importlib/extension/test_case_sensitivity.py
index 2b536e2..5764756 100644
--- a/Lib/test/test_importlib/extension/test_case_sensitivity.py
+++ b/Lib/test/test_importlib/extension/test_case_sensitivity.py
@@ -6,7 +6,8 @@ from importlib import _bootstrap
from importlib import machinery
from .. import util
from . import util as ext_util
-
+import os
+import subprocess
@util.case_insensitive_tests
class ExtensionModuleCaseSensitivityTest(unittest.TestCase):
@@ -30,14 +31,34 @@ class ExtensionModuleCaseSensitivityTest(unittest.TestCase):
self.assertIsNone(loader)
def test_case_insensitivity(self):
- with support.EnvironmentVarGuard() as env:
- env.set('PYTHONCASEOK', '1')
- if b'PYTHONCASEOK' not in _bootstrap._os.environ:
- self.skipTest('os.environ changes not reflected in '
- '_os.environ')
- loader = self.find_module()
- self.assertTrue(hasattr(loader, 'load_module'))
+ find_snippet = """if True:
+ from importlib import _bootstrap
+ import sys
+ finder = _bootstrap.FileFinder('{path}',
+ (_bootstrap.ExtensionFileLoader,
+ _bootstrap.EXTENSION_SUFFIXES))
+ loader = finder.find_module('{bad_name}')
+ print(str(hasattr(loader, 'load_module')))
+ """.format(bad_name=ext_util.NAME.upper(), path=ext_util.PATH)
+
+ newenv = os.environ.copy()
+ newenv["PYTHONCASEOK"] = "1"
+
+ def check_output(expected, extra_arg=None):
+ args = [sys.executable]
+ if extra_arg:
+ args.append(extra_arg)
+ args.extend(["-c", find_snippet])
+ p = subprocess.Popen(args, stdout=subprocess.PIPE, env=newenv)
+ actual = p.communicate()[0].decode().strip()
+ self.assertEqual(expected, actual)
+ self.assertEqual(p.wait(), 0)
+
+ # Test with PYTHONCASEOK=1.
+ check_output("True")
+ # Test with PYTHONCASEOK=1 ignored because of -E.
+ check_output("False", "-E")