summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorMeador Inge <meadori@gmail.com>2013-09-04 00:43:49 (GMT)
committerMeador Inge <meadori@gmail.com>2013-09-04 00:43:49 (GMT)
commitc9e1dcdd5323b11d1d4e901dbc74287a2672bc04 (patch)
tree8785f563e36d4e232ba14171578604c81995caaa /Lib
parentd151da9ef7de3ce93f0e29a62ae2a470495db1d0 (diff)
downloadcpython-c9e1dcdd5323b11d1d4e901dbc74287a2672bc04.zip
cpython-c9e1dcdd5323b11d1d4e901dbc74287a2672bc04.tar.gz
cpython-c9e1dcdd5323b11d1d4e901dbc74287a2672bc04.tar.bz2
Issue #16826: Revert fix while Windows issues are being worked out.
Diffstat (limited to 'Lib')
-rw-r--r--Lib/importlib/_bootstrap.py5
-rw-r--r--Lib/test/test_importlib/extension/test_case_sensitivity.py37
-rw-r--r--Lib/test/test_importlib/source/test_case_sensitivity.py67
3 files changed, 19 insertions, 90 deletions
diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py
index f4fdc82..ff10308 100644
--- a/Lib/importlib/_bootstrap.py
+++ b/Lib/importlib/_bootstrap.py
@@ -33,10 +33,7 @@ def _make_relax_case():
if sys.platform.startswith(_CASE_INSENSITIVE_PLATFORMS):
def _relax_case():
"""True if filenames must be checked case-insensitively."""
- if sys.flags.ignore_environment:
- return False
- else:
- return b'PYTHONCASEOK' in _os.environ
+ return b'PYTHONCASEOK' in _os.environ
else:
def _relax_case():
"""True if filenames must be checked case-insensitively."""
diff --git a/Lib/test/test_importlib/extension/test_case_sensitivity.py b/Lib/test/test_importlib/extension/test_case_sensitivity.py
index e1194db..76c53e4 100644
--- a/Lib/test/test_importlib/extension/test_case_sensitivity.py
+++ b/Lib/test/test_importlib/extension/test_case_sensitivity.py
@@ -5,8 +5,7 @@ import unittest
from importlib import _bootstrap
from .. import util
from . import util as ext_util
-import os
-import subprocess
+
@util.case_insensitive_tests
class ExtensionModuleCaseSensitivityTest(unittest.TestCase):
@@ -30,34 +29,14 @@ class ExtensionModuleCaseSensitivityTest(unittest.TestCase):
self.assertIsNone(loader)
def test_case_insensitivity(self):
- 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")
+ 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'))
- # Test with PYTHONCASEOK=1 ignored because of -E.
- check_output("False", "-E")
diff --git a/Lib/test/test_importlib/source/test_case_sensitivity.py b/Lib/test/test_importlib/source/test_case_sensitivity.py
index 7169c7b..241173f 100644
--- a/Lib/test/test_importlib/source/test_case_sensitivity.py
+++ b/Lib/test/test_importlib/source/test_case_sensitivity.py
@@ -8,7 +8,6 @@ import os
import sys
from test import support as test_support
import unittest
-import subprocess
@util.case_insensitive_tests
@@ -51,62 +50,16 @@ class CaseSensitivityTest(unittest.TestCase):
self.assertIsNone(insensitive)
def test_insensitive(self):
- sensitive_pkg = 'sensitive.{0}'.format(self.name)
- insensitive_pkg = 'insensitive.{0}'.format(self.name.lower())
- context = source_util.create_modules(insensitive_pkg, sensitive_pkg)
- with context as mapping:
- sensitive_path = os.path.join(mapping['.root'], 'sensitive')
- insensitive_path = os.path.join(mapping['.root'], 'insensitive')
- find_snippet = """if True:
- import sys
- from importlib import machinery
-
- def find(path):
- f = machinery.FileFinder(path,
- (machinery.SourceFileLoader,
- machinery.SOURCE_SUFFIXES),
- (machinery.SourcelessFileLoader,
- machinery.BYTECODE_SUFFIXES))
- return f.find_module('{name}')
-
- sensitive = find('{sensitive_path}')
- insensitive = find('{insensitive_path}')
- print(str(hasattr(sensitive, 'load_module')))
- if hasattr(sensitive, 'load_module'):
- print(sensitive.get_filename('{name}'))
- else:
- print('None')
- print(str(hasattr(insensitive, 'load_module')))
- if hasattr(insensitive, 'load_module'):
- print(insensitive.get_filename('{name}'))
- else:
- print('None')
- """.format(sensitive_path=sensitive_path,
- insensitive_path=insensitive_path,
- name=self.name)
-
- 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().split()
- self.assertEqual(expected[0], actual[0])
- self.assertIn(expected[1], actual[1])
- self.assertEqual(expected[2], actual[2])
- self.assertIn(expected[3], actual[3])
- self.assertEqual(p.wait(), 0)
-
- # Test with PYTHONCASEOK=1.
- check_output(["True", self.name, "True", self.name])
-
- # Test with PYTHONCASEOK=1 ignored because of -E.
- check_output(["True", self.name, "False", "None"], "-E")
+ with test_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')
+ sensitive, insensitive = self.sensitivity_test()
+ self.assertTrue(hasattr(sensitive, 'load_module'))
+ self.assertIn(self.name, sensitive.get_filename(self.name))
+ self.assertTrue(hasattr(insensitive, 'load_module'))
+ self.assertIn(self.name, insensitive.get_filename(self.name))
def test_main():