| 
									
										
										
										
											2009-01-27 02:39:33 +00:00
										 |  |  | import abc | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-10-25 12:33:59 -04:00
										 |  |  | class FinderTests(metaclass=abc.ABCMeta): | 
					
						
							| 
									
										
										
										
											2009-01-30 00:22:35 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     """Basic tests for a finder to pass.""" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @abc.abstractmethod | 
					
						
							|  |  |  |     def test_module(self): | 
					
						
							|  |  |  |         # Test importing a top-level module. | 
					
						
							|  |  |  |         pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @abc.abstractmethod | 
					
						
							|  |  |  |     def test_package(self): | 
					
						
							|  |  |  |         # Test importing a package. | 
					
						
							|  |  |  |         pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @abc.abstractmethod | 
					
						
							|  |  |  |     def test_module_in_package(self): | 
					
						
							|  |  |  |         # Test importing a module contained within a package. | 
					
						
							|  |  |  |         # A value for 'path' should be used if for a meta_path finder. | 
					
						
							|  |  |  |         pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @abc.abstractmethod | 
					
						
							|  |  |  |     def test_package_in_package(self): | 
					
						
							|  |  |  |         # Test importing a subpackage. | 
					
						
							|  |  |  |         # A value for 'path' should be used if for a meta_path finder. | 
					
						
							|  |  |  |         pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @abc.abstractmethod | 
					
						
							|  |  |  |     def test_package_over_module(self): | 
					
						
							|  |  |  |         # Test that packages are chosen over modules. | 
					
						
							|  |  |  |         pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @abc.abstractmethod | 
					
						
							|  |  |  |     def test_failure(self): | 
					
						
							|  |  |  |         # Test trying to find a module that cannot be handled. | 
					
						
							|  |  |  |         pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-10-25 12:33:59 -04:00
										 |  |  | class LoaderTests(metaclass=abc.ABCMeta): | 
					
						
							| 
									
										
										
										
											2009-01-27 02:39:33 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     @abc.abstractmethod | 
					
						
							|  |  |  |     def test_module(self): | 
					
						
							|  |  |  |         """A module should load without issue.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         After the loader returns the module should be in sys.modules. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         Attributes to verify: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             * __file__ | 
					
						
							|  |  |  |             * __loader__ | 
					
						
							|  |  |  |             * __name__ | 
					
						
							|  |  |  |             * No __path__ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         """
 | 
					
						
							|  |  |  |         pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @abc.abstractmethod | 
					
						
							|  |  |  |     def test_package(self): | 
					
						
							|  |  |  |         """Loading a package should work.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         After the loader returns the module should be in sys.modules. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         Attributes to verify: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             * __name__ | 
					
						
							| 
									
										
										
										
											2009-03-09 03:35:50 +00:00
										 |  |  |             * __file__ | 
					
						
							|  |  |  |             * __package__ | 
					
						
							| 
									
										
										
										
											2009-01-27 02:39:33 +00:00
										 |  |  |             * __path__ | 
					
						
							| 
									
										
										
										
											2009-03-09 03:35:50 +00:00
										 |  |  |             * __loader__ | 
					
						
							| 
									
										
										
										
											2009-01-27 02:39:33 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         """
 | 
					
						
							|  |  |  |         pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @abc.abstractmethod | 
					
						
							|  |  |  |     def test_lacking_parent(self): | 
					
						
							|  |  |  |         """A loader should not be dependent on it's parent package being
 | 
					
						
							|  |  |  |         imported."""
 | 
					
						
							|  |  |  |         pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @abc.abstractmethod | 
					
						
							|  |  |  |     def test_state_after_failure(self): | 
					
						
							|  |  |  |         """If a module is already in sys.modules and a reload fails
 | 
					
						
							|  |  |  |         (e.g. a SyntaxError), the module should be in the state it was before | 
					
						
							|  |  |  |         the reload began."""
 | 
					
						
							|  |  |  |         pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @abc.abstractmethod | 
					
						
							|  |  |  |     def test_unloadable(self): | 
					
						
							|  |  |  |         """Test ImportError is raised when the loader is asked to load a module
 | 
					
						
							|  |  |  |         it can't.""" | 
					
						
							|  |  |  |         pass |