1from .. import abc 2from .. import util 3 4machinery = util.import_importlib('importlib.machinery') 5 6import unittest 7import warnings 8 9 10class FindSpecTests(abc.FinderTests): 11 12 """Test finding frozen modules.""" 13 14 def find(self, name, path=None): 15 finder = self.machinery.FrozenImporter 16 return finder.find_spec(name, path) 17 18 def test_module(self): 19 name = '__hello__' 20 spec = self.find(name) 21 self.assertEqual(spec.origin, 'frozen') 22 23 def test_package(self): 24 spec = self.find('__phello__') 25 self.assertIsNotNone(spec) 26 27 def test_module_in_package(self): 28 spec = self.find('__phello__.spam', ['__phello__']) 29 self.assertIsNotNone(spec) 30 31 # No frozen package within another package to test with. 32 test_package_in_package = None 33 34 # No easy way to test. 35 test_package_over_module = None 36 37 def test_failure(self): 38 spec = self.find('<not real>') 39 self.assertIsNone(spec) 40 41 42(Frozen_FindSpecTests, 43 Source_FindSpecTests 44 ) = util.test_both(FindSpecTests, machinery=machinery) 45 46 47class FinderTests(abc.FinderTests): 48 49 """Test finding frozen modules.""" 50 51 def find(self, name, path=None): 52 finder = self.machinery.FrozenImporter 53 with warnings.catch_warnings(): 54 warnings.simplefilter("ignore", DeprecationWarning) 55 return finder.find_module(name, path) 56 57 def test_module(self): 58 name = '__hello__' 59 loader = self.find(name) 60 self.assertTrue(hasattr(loader, 'load_module')) 61 62 def test_package(self): 63 loader = self.find('__phello__') 64 self.assertTrue(hasattr(loader, 'load_module')) 65 66 def test_module_in_package(self): 67 loader = self.find('__phello__.spam', ['__phello__']) 68 self.assertTrue(hasattr(loader, 'load_module')) 69 70 # No frozen package within another package to test with. 71 test_package_in_package = None 72 73 # No easy way to test. 74 test_package_over_module = None 75 76 def test_failure(self): 77 loader = self.find('<not real>') 78 self.assertIsNone(loader) 79 80 81(Frozen_FinderTests, 82 Source_FinderTests 83 ) = util.test_both(FinderTests, machinery=machinery) 84 85 86if __name__ == '__main__': 87 unittest.main() 88