Skip to content
This repository was archived by the owner on Feb 13, 2025. It is now read-only.

Commit 7ca63cb

Browse files
committed
Fix regressions introduced by fixes for issue python#27083.
1 parent 702b046 commit 7ca63cb

File tree

5 files changed

+2589
-2573
lines changed

5 files changed

+2589
-2573
lines changed

Lib/importlib/_bootstrap_external.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,22 @@
2121
# anything specified at the class level.
2222

2323
# Bootstrap-related code ######################################################
24-
25-
_CASE_INSENSITIVE_PLATFORMS = 'win', 'cygwin', 'darwin'
24+
_CASE_INSENSITIVE_PLATFORMS_STR_KEY = 'win',
25+
_CASE_INSENSITIVE_PLATFORMS_BYTES_KEY = 'cygwin', 'darwin'
26+
_CASE_INSENSITIVE_PLATFORMS = (_CASE_INSENSITIVE_PLATFORMS_BYTES_KEY
27+
+ _CASE_INSENSITIVE_PLATFORMS_STR_KEY)
2628

2729

2830
def _make_relax_case():
2931
if sys.platform.startswith(_CASE_INSENSITIVE_PLATFORMS):
32+
if sys.platform.startswith(_CASE_INSENSITIVE_PLATFORMS_STR_KEY):
33+
key = 'PYTHONCASEOK'
34+
else:
35+
key = b'PYTHONCASEOK'
36+
3037
def _relax_case():
3138
"""True if filenames must be checked case-insensitively."""
32-
return (b'PYTHONCASEOK' in _os.environ
33-
or 'PYTHONCASEOK' in _os.environ)
39+
return key in _os.environ
3440
else:
3541
def _relax_case():
3642
"""True if filenames must be checked case-insensitively."""

Lib/test/test_importlib/extension/test_case_sensitivity.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,15 @@
55

66
from .. import util
77

8+
importlib = util.import_importlib('importlib')
89
machinery = util.import_importlib('importlib.machinery')
910

1011

1112
# XXX find_spec tests
1213

1314
@unittest.skipIf(util.EXTENSIONS.filename is None, '_testcapi not available')
1415
@util.case_insensitive_tests
15-
class ExtensionModuleCaseSensitivityTest:
16+
class ExtensionModuleCaseSensitivityTest(util.CASEOKTestBase):
1617

1718
def find_module(self):
1819
good_name = util.EXTENSIONS.name
@@ -26,25 +27,22 @@ def find_module(self):
2627
def test_case_sensitive(self):
2728
with support.EnvironmentVarGuard() as env:
2829
env.unset('PYTHONCASEOK')
29-
if b'PYTHONCASEOK' in _bootstrap_external._os.environ:
30-
self.skipTest('os.environ changes not reflected in '
31-
'_os.environ')
30+
self.caseok_env_changed(should_exist=False)
3231
loader = self.find_module()
3332
self.assertIsNone(loader)
3433

3534
def test_case_insensitivity(self):
3635
with support.EnvironmentVarGuard() as env:
3736
env.set('PYTHONCASEOK', '1')
38-
if b'PYTHONCASEOK' not in _bootstrap_external._os.environ:
39-
self.skipTest('os.environ changes not reflected in '
40-
'_os.environ')
37+
self.caseok_env_changed(should_exist=True)
4138
loader = self.find_module()
4239
self.assertTrue(hasattr(loader, 'load_module'))
4340

4441

4542
(Frozen_ExtensionCaseSensitivity,
4643
Source_ExtensionCaseSensitivity
47-
) = util.test_both(ExtensionModuleCaseSensitivityTest, machinery=machinery)
44+
) = util.test_both(ExtensionModuleCaseSensitivityTest, importlib=importlib,
45+
machinery=machinery)
4846

4947

5048
if __name__ == '__main__':

Lib/test/test_importlib/source/test_case_sensitivity.py

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212

1313
@util.case_insensitive_tests
14-
class CaseSensitivityTest:
14+
class CaseSensitivityTest(util.CASEOKTestBase):
1515

1616
"""PEP 235 dictates that on case-preserving, case-insensitive file systems
1717
that imports are case-sensitive unless the PYTHONCASEOK environment
@@ -39,17 +39,10 @@ def sensitivity_test(self):
3939
insensitive_finder = self.finder(insensitive_path)
4040
return self.find(sensitive_finder), self.find(insensitive_finder)
4141

42-
def env_changed(self, *, should_exist):
43-
possibilities = b'PYTHONCASEOK', 'PYTHONCASEOK'
44-
if any(x in self.importlib._bootstrap_external._os.environ
45-
for x in possibilities) == should_exist:
46-
self.skipTest('os.environ changes not reflected in '
47-
'_os.environ')
48-
4942
def test_sensitive(self):
5043
with test_support.EnvironmentVarGuard() as env:
5144
env.unset('PYTHONCASEOK')
52-
self.env_changed(should_exist=False)
45+
self.caseok_env_changed(should_exist=False)
5346
sensitive, insensitive = self.sensitivity_test()
5447
self.assertIsNotNone(sensitive)
5548
self.assertIn(self.name, sensitive.get_filename(self.name))
@@ -58,7 +51,7 @@ def test_sensitive(self):
5851
def test_insensitive(self):
5952
with test_support.EnvironmentVarGuard() as env:
6053
env.set('PYTHONCASEOK', '1')
61-
self.env_changed(should_exist=True)
54+
self.caseok_env_changed(should_exist=True)
6255
sensitive, insensitive = self.sensitivity_test()
6356
self.assertIsNotNone(sensitive)
6457
self.assertIn(self.name, sensitive.get_filename(self.name))

Lib/test/test_importlib/util.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -378,3 +378,12 @@ def hook(entry):
378378
raise ImportError
379379
return importer
380380
return hook
381+
382+
383+
class CASEOKTestBase:
384+
385+
def caseok_env_changed(self, *, should_exist):
386+
possibilities = b'PYTHONCASEOK', 'PYTHONCASEOK'
387+
if any(x in self.importlib._bootstrap_external._os.environ
388+
for x in possibilities) != should_exist:
389+
self.skipTest('os.environ changes not reflected in _os.environ')

0 commit comments

Comments
 (0)