1from .. import abc 2from .. import util 3 4machinery = util.import_importlib('importlib.machinery') 5 6import sys 7import unittest 8 9 10@unittest.skipIf(util.BUILTINS.good_name is None, 'no reasonable builtin module') 11class FindSpecTests(abc.FinderTests): 12 13 """Test find_spec() for built-in modules.""" 14 15 def test_module(self): 16 # Common case. 17 with util.uncache(util.BUILTINS.good_name): 18 found = self.machinery.BuiltinImporter.find_spec(util.BUILTINS.good_name) 19 self.assertTrue(found) 20 self.assertEqual(found.origin, 'built-in') 21 22 # Built-in modules cannot be a package. 23 test_package = None 24 25 # Built-in modules cannot be in a package. 26 test_module_in_package = None 27 28 # Built-in modules cannot be a package. 29 test_package_in_package = None 30 31 # Built-in modules cannot be a package. 32 test_package_over_module = None 33 34 def test_failure(self): 35 name = 'importlib' 36 assert name not in sys.builtin_module_names 37 spec = self.machinery.BuiltinImporter.find_spec(name) 38 self.assertIsNone(spec) 39 40 def test_ignore_path(self): 41 # The value for 'path' should always trigger a failed import. 42 with util.uncache(util.BUILTINS.good_name): 43 spec = self.machinery.BuiltinImporter.find_spec(util.BUILTINS.good_name, 44 ['pkg']) 45 self.assertIsNone(spec) 46 47 48(Frozen_FindSpecTests, 49 Source_FindSpecTests 50 ) = util.test_both(FindSpecTests, machinery=machinery) 51 52 53@unittest.skipIf(util.BUILTINS.good_name is None, 'no reasonable builtin module') 54class FinderTests(abc.FinderTests): 55 56 """Test find_module() for built-in modules.""" 57 58 def test_module(self): 59 # Common case. 60 with util.uncache(util.BUILTINS.good_name): 61 found = self.machinery.BuiltinImporter.find_module(util.BUILTINS.good_name) 62 self.assertTrue(found) 63 self.assertTrue(hasattr(found, 'load_module')) 64 65 # Built-in modules cannot be a package. 66 test_package = test_package_in_package = test_package_over_module = None 67 68 # Built-in modules cannot be in a package. 69 test_module_in_package = None 70 71 def test_failure(self): 72 assert 'importlib' not in sys.builtin_module_names 73 loader = self.machinery.BuiltinImporter.find_module('importlib') 74 self.assertIsNone(loader) 75 76 def test_ignore_path(self): 77 # The value for 'path' should always trigger a failed import. 78 with util.uncache(util.BUILTINS.good_name): 79 loader = self.machinery.BuiltinImporter.find_module(util.BUILTINS.good_name, 80 ['pkg']) 81 self.assertIsNone(loader) 82 83 84(Frozen_FinderTests, 85 Source_FinderTests 86 ) = util.test_both(FinderTests, machinery=machinery) 87 88 89if __name__ == '__main__': 90 unittest.main() 91