|
8 | 8 | import sys |
9 | 9 | from test import support as test_support |
10 | 10 | import unittest |
11 | | -import subprocess |
12 | 11 |
|
13 | 12 |
|
14 | 13 | @util.case_insensitive_tests |
@@ -51,62 +50,16 @@ def test_sensitive(self): |
51 | 50 | self.assertIsNone(insensitive) |
52 | 51 |
|
53 | 52 | def test_insensitive(self): |
54 | | - sensitive_pkg = 'sensitive.{0}'.format(self.name) |
55 | | - insensitive_pkg = 'insensitive.{0}'.format(self.name.lower()) |
56 | | - context = source_util.create_modules(insensitive_pkg, sensitive_pkg) |
57 | | - with context as mapping: |
58 | | - sensitive_path = os.path.join(mapping['.root'], 'sensitive') |
59 | | - insensitive_path = os.path.join(mapping['.root'], 'insensitive') |
60 | | - find_snippet = """if True: |
61 | | - import sys |
62 | | - from importlib import machinery |
63 | | -
|
64 | | - def find(path): |
65 | | - f = machinery.FileFinder(path, |
66 | | - (machinery.SourceFileLoader, |
67 | | - machinery.SOURCE_SUFFIXES), |
68 | | - (machinery.SourcelessFileLoader, |
69 | | - machinery.BYTECODE_SUFFIXES)) |
70 | | - return f.find_module('{name}') |
71 | | -
|
72 | | - sensitive = find('{sensitive_path}') |
73 | | - insensitive = find('{insensitive_path}') |
74 | | - print(str(hasattr(sensitive, 'load_module'))) |
75 | | - if hasattr(sensitive, 'load_module'): |
76 | | - print(sensitive.get_filename('{name}')) |
77 | | - else: |
78 | | - print('None') |
79 | | - print(str(hasattr(insensitive, 'load_module'))) |
80 | | - if hasattr(insensitive, 'load_module'): |
81 | | - print(insensitive.get_filename('{name}')) |
82 | | - else: |
83 | | - print('None') |
84 | | - """.format(sensitive_path=sensitive_path, |
85 | | - insensitive_path=insensitive_path, |
86 | | - name=self.name) |
87 | | - |
88 | | - newenv = os.environ.copy() |
89 | | - newenv["PYTHONCASEOK"] = "1" |
90 | | - |
91 | | - def check_output(expected, extra_arg=None): |
92 | | - args = [sys.executable] |
93 | | - if extra_arg: |
94 | | - args.append(extra_arg) |
95 | | - args.extend(["-c", find_snippet]) |
96 | | - p = subprocess.Popen(args, stdout=subprocess.PIPE, |
97 | | - env=newenv) |
98 | | - actual = p.communicate()[0].decode().split() |
99 | | - self.assertEqual(expected[0], actual[0]) |
100 | | - self.assertIn(expected[1], actual[1]) |
101 | | - self.assertEqual(expected[2], actual[2]) |
102 | | - self.assertIn(expected[3], actual[3]) |
103 | | - self.assertEqual(p.wait(), 0) |
104 | | - |
105 | | - # Test with PYTHONCASEOK=1. |
106 | | - check_output(["True", self.name, "True", self.name]) |
107 | | - |
108 | | - # Test with PYTHONCASEOK=1 ignored because of -E. |
109 | | - check_output(["True", self.name, "False", "None"], "-E") |
| 53 | + with test_support.EnvironmentVarGuard() as env: |
| 54 | + env.set('PYTHONCASEOK', '1') |
| 55 | + if b'PYTHONCASEOK' not in _bootstrap._os.environ: |
| 56 | + self.skipTest('os.environ changes not reflected in ' |
| 57 | + '_os.environ') |
| 58 | + sensitive, insensitive = self.sensitivity_test() |
| 59 | + self.assertTrue(hasattr(sensitive, 'load_module')) |
| 60 | + self.assertIn(self.name, sensitive.get_filename(self.name)) |
| 61 | + self.assertTrue(hasattr(insensitive, 'load_module')) |
| 62 | + self.assertIn(self.name, insensitive.get_filename(self.name)) |
110 | 63 |
|
111 | 64 |
|
112 | 65 | def test_main(): |
|
0 commit comments