| 
									
										
										
										
											2009-01-30 00:22:35 +00:00
										 |  |  | from .. import abc | 
					
						
							| 
									
										
										
										
											2013-11-08 11:10:41 -05:00
										 |  |  | from .. import util | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | machinery = util.import_importlib('importlib.machinery') | 
					
						
							| 
									
										
										
										
											2009-01-18 00:24:28 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | import unittest | 
					
						
							| 
									
										
										
										
											2021-04-06 08:56:57 -07:00
										 |  |  | import warnings | 
					
						
							| 
									
										
										
										
											2009-01-18 00:24:28 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-11-22 09:05:39 -07:00
										 |  |  | class FindSpecTests(abc.FinderTests): | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     """Test finding frozen modules.""" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def find(self, name, path=None): | 
					
						
							|  |  |  |         finder = self.machinery.FrozenImporter | 
					
						
							|  |  |  |         return finder.find_spec(name, path) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_module(self): | 
					
						
							|  |  |  |         name = '__hello__' | 
					
						
							|  |  |  |         spec = self.find(name) | 
					
						
							|  |  |  |         self.assertEqual(spec.origin, 'frozen') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_package(self): | 
					
						
							|  |  |  |         spec = self.find('__phello__') | 
					
						
							|  |  |  |         self.assertIsNotNone(spec) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_module_in_package(self): | 
					
						
							|  |  |  |         spec = self.find('__phello__.spam', ['__phello__']) | 
					
						
							|  |  |  |         self.assertIsNotNone(spec) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     # No frozen package within another package to test with. | 
					
						
							|  |  |  |     test_package_in_package = None | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     # No easy way to test. | 
					
						
							|  |  |  |     test_package_over_module = None | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_failure(self): | 
					
						
							|  |  |  |         spec = self.find('<not real>') | 
					
						
							|  |  |  |         self.assertIsNone(spec) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-05-16 11:40:40 -06:00
										 |  |  | 
 | 
					
						
							|  |  |  | (Frozen_FindSpecTests, | 
					
						
							|  |  |  |  Source_FindSpecTests | 
					
						
							|  |  |  |  ) = util.test_both(FindSpecTests, machinery=machinery) | 
					
						
							| 
									
										
										
										
											2013-11-22 09:05:39 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-11-08 11:10:41 -05:00
										 |  |  | class FinderTests(abc.FinderTests): | 
					
						
							| 
									
										
										
										
											2009-01-18 00:24:28 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     """Test finding frozen modules.""" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def find(self, name, path=None): | 
					
						
							| 
									
										
										
										
											2013-11-08 11:10:41 -05:00
										 |  |  |         finder = self.machinery.FrozenImporter | 
					
						
							| 
									
										
										
										
											2021-04-06 08:56:57 -07:00
										 |  |  |         with warnings.catch_warnings(): | 
					
						
							|  |  |  |             warnings.simplefilter("ignore", DeprecationWarning) | 
					
						
							|  |  |  |             return finder.find_module(name, path) | 
					
						
							| 
									
										
										
										
											2009-01-18 00:24:28 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_module(self): | 
					
						
							|  |  |  |         name = '__hello__' | 
					
						
							|  |  |  |         loader = self.find(name) | 
					
						
							| 
									
										
										
										
											2009-06-30 23:06:06 +00:00
										 |  |  |         self.assertTrue(hasattr(loader, 'load_module')) | 
					
						
							| 
									
										
										
										
											2009-01-18 00:24:28 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_package(self): | 
					
						
							|  |  |  |         loader = self.find('__phello__') | 
					
						
							| 
									
										
										
										
											2009-06-30 23:06:06 +00:00
										 |  |  |         self.assertTrue(hasattr(loader, 'load_module')) | 
					
						
							| 
									
										
										
										
											2009-01-18 00:24:28 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_module_in_package(self): | 
					
						
							|  |  |  |         loader = self.find('__phello__.spam', ['__phello__']) | 
					
						
							| 
									
										
										
										
											2009-06-30 23:06:06 +00:00
										 |  |  |         self.assertTrue(hasattr(loader, 'load_module')) | 
					
						
							| 
									
										
										
										
											2009-01-18 00:24:28 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-11-22 09:05:39 -07:00
										 |  |  |     # No frozen package within another package to test with. | 
					
						
							|  |  |  |     test_package_in_package = None | 
					
						
							| 
									
										
										
										
											2009-01-27 01:44:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-11-22 09:05:39 -07:00
										 |  |  |     # No easy way to test. | 
					
						
							|  |  |  |     test_package_over_module = None | 
					
						
							| 
									
										
										
										
											2009-01-18 00:24:28 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_failure(self): | 
					
						
							|  |  |  |         loader = self.find('<not real>') | 
					
						
							| 
									
										
										
										
											2012-06-28 06:15:01 -04:00
										 |  |  |         self.assertIsNone(loader) | 
					
						
							| 
									
										
										
										
											2009-01-18 00:24:28 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-05-16 11:40:40 -06:00
										 |  |  | 
 | 
					
						
							|  |  |  | (Frozen_FinderTests, | 
					
						
							|  |  |  |  Source_FinderTests | 
					
						
							|  |  |  |  ) = util.test_both(FinderTests, machinery=machinery) | 
					
						
							| 
									
										
										
										
											2009-01-18 00:24:28 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if __name__ == '__main__': | 
					
						
							| 
									
										
										
										
											2013-11-08 11:10:41 -05:00
										 |  |  |     unittest.main() |