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