diff options
author | Brett Cannon <bcannon@gmail.com> | 2009-01-18 00:24:28 +0000 |
---|---|---|
committer | Brett Cannon <bcannon@gmail.com> | 2009-01-18 00:24:28 +0000 |
commit | 23cbd8a6564df0ac3df339f91196c45f3e626d32 (patch) | |
tree | bef5602638a1567c28738aa359dae9865e04b6cd /Lib/importlib/test/source/test_case_sensitivity.py | |
parent | 458ad47a2c8045080a86eaaf33bb6cd174021891 (diff) | |
download | cpython-23cbd8a6564df0ac3df339f91196c45f3e626d32.tar.gz cpython-23cbd8a6564df0ac3df339f91196c45f3e626d32.zip |
Add initial implementation of importlib. See the NOTES files for what is
planned for the package.
There are no docs yet, but they are coming once the API for the first new
function, importlib.import_module() is finalized.
Diffstat (limited to 'Lib/importlib/test/source/test_case_sensitivity.py')
-rw-r--r-- | Lib/importlib/test/source/test_case_sensitivity.py | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/Lib/importlib/test/source/test_case_sensitivity.py b/Lib/importlib/test/source/test_case_sensitivity.py new file mode 100644 index 00000000000..1a5ff2f206c --- /dev/null +++ b/Lib/importlib/test/source/test_case_sensitivity.py @@ -0,0 +1,57 @@ +"""Test case-sensitivity (PEP 235).""" +import importlib +from .. import support +import os +import sys +from test import support as test_support +import unittest + + +class CaseSensitivityTest(unittest.TestCase): + + """PEP 235 dictates that on case-preserving, case-insensitive file systems + that imports are case-sensitive unless the PYTHONCASEOK environment + variable is set.""" + + name = 'MoDuLe' + assert name != name.lower() + + def find(self, path): + finder = importlib.PyFileImporter(path) + return finder.find_module(self.name) + + def sensitivity_test(self): + """Look for a module with matching and non-matching sensitivity.""" + sensitive_pkg = 'sensitive.{0}'.format(self.name) + insensitive_pkg = 'insensitive.{0}'.format(self.name.lower()) + with support.create_modules(insensitive_pkg, sensitive_pkg) as mapping: + sensitive_path = os.path.join(mapping['.root'], 'sensitive') + insensitive_path = os.path.join(mapping['.root'], 'insensitive') + return self.find(sensitive_path), self.find(insensitive_path) + + def test_sensitive(self): + with test_support.EnvironmentVarGuard() as env: + env.unset('PYTHONCASEOK') + sensitive, insensitive = self.sensitivity_test() + self.assert_(hasattr(sensitive, 'load_module')) + self.assert_(self.name in sensitive._base_path) + self.assert_(insensitive is None) + + def test_insensitive(self): + with test_support.EnvironmentVarGuard() as env: + env.set('PYTHONCASEOK', '1') + sensitive, insensitive = self.sensitivity_test() + self.assert_(hasattr(sensitive, 'load_module')) + self.assert_(self.name in sensitive._base_path) + self.assert_(hasattr(insensitive, 'load_module')) + self.assert_(self.name in insensitive._base_path) + + +def test_main(): + if sys.platform not in ('win32', 'darwin', 'cygwin'): + return + test_support.run_unittest(CaseSensitivityTest) + + +if __name__ == '__main__': + test_main() |