• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1from importlib import _bootstrap_external
2from test import support
3import unittest
4
5from .. import util
6
7importlib = util.import_importlib('importlib')
8machinery = util.import_importlib('importlib.machinery')
9
10
11@unittest.skipIf(util.EXTENSIONS.filename is None, '_testcapi not available')
12@util.case_insensitive_tests
13class ExtensionModuleCaseSensitivityTest(util.CASEOKTestBase):
14
15    def find_module(self):
16        good_name = util.EXTENSIONS.name
17        bad_name = good_name.upper()
18        assert good_name != bad_name
19        finder = self.machinery.FileFinder(util.EXTENSIONS.path,
20                                          (self.machinery.ExtensionFileLoader,
21                                           self.machinery.EXTENSION_SUFFIXES))
22        return finder.find_module(bad_name)
23
24    def test_case_sensitive(self):
25        with support.EnvironmentVarGuard() as env:
26            env.unset('PYTHONCASEOK')
27            self.caseok_env_changed(should_exist=False)
28            loader = self.find_module()
29            self.assertIsNone(loader)
30
31    def test_case_insensitivity(self):
32        with support.EnvironmentVarGuard() as env:
33            env.set('PYTHONCASEOK', '1')
34            self.caseok_env_changed(should_exist=True)
35            loader = self.find_module()
36            self.assertTrue(hasattr(loader, 'load_module'))
37
38
39(Frozen_ExtensionCaseSensitivity,
40 Source_ExtensionCaseSensitivity
41 ) = util.test_both(ExtensionModuleCaseSensitivityTest, importlib=importlib,
42                    machinery=machinery)
43
44
45if __name__ == '__main__':
46    unittest.main()
47