mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00:00 
			
		
		
		
	svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r74107 | brett.cannon | 2009-07-19 20:19:18 -0700 (Sun, 19 Jul 2009) | 8 lines Importlib's documentation said that importlib.abc.PyLoader inherited from importlib.abc.ResourceLoader, when in fact it did not. Fixed the ABC to inherit as documented. This does in introduce an backwards-incompatiblity as the code in PyLoader already required the single method ResourceLoader defined as an abstract method. ........
		
			
				
	
	
		
			78 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from importlib import abc
 | 
						|
from importlib import machinery
 | 
						|
import inspect
 | 
						|
import unittest
 | 
						|
 | 
						|
 | 
						|
class InheritanceTests:
 | 
						|
 | 
						|
    """Test that the specified class is a subclass/superclass of the expected
 | 
						|
    classes."""
 | 
						|
 | 
						|
    subclasses = []
 | 
						|
    superclasses = []
 | 
						|
 | 
						|
    def __init__(self, *args, **kwargs):
 | 
						|
        super().__init__(*args, **kwargs)
 | 
						|
        assert self.subclasses or self.superclasses, self.__class__
 | 
						|
        self.__test = getattr(abc, self.__class__.__name__)
 | 
						|
 | 
						|
    def test_subclasses(self):
 | 
						|
        # Test that the expected subclasses inherit.
 | 
						|
        for subclass in self.subclasses:
 | 
						|
            self.assertTrue(issubclass(subclass, self.__test),
 | 
						|
                "{0} is not a subclass of {1}".format(subclass, self.__test))
 | 
						|
 | 
						|
    def test_superclasses(self):
 | 
						|
        # Test that the class inherits from the expected superclasses.
 | 
						|
        for superclass in self.superclasses:
 | 
						|
            self.assertTrue(issubclass(self.__test, superclass),
 | 
						|
               "{0} is not a superclass of {1}".format(superclass, self.__test))
 | 
						|
 | 
						|
 | 
						|
class Finder(InheritanceTests, unittest.TestCase):
 | 
						|
 | 
						|
    subclasses = [machinery.BuiltinImporter, machinery.FrozenImporter,
 | 
						|
                    machinery.PathFinder]
 | 
						|
 | 
						|
 | 
						|
class Loader(InheritanceTests, unittest.TestCase):
 | 
						|
 | 
						|
    subclasses = [abc.PyLoader]
 | 
						|
 | 
						|
 | 
						|
class ResourceLoader(InheritanceTests, unittest.TestCase):
 | 
						|
 | 
						|
    superclasses = [abc.Loader]
 | 
						|
 | 
						|
 | 
						|
class InspectLoader(InheritanceTests, unittest.TestCase):
 | 
						|
 | 
						|
    superclasses = [abc.Loader]
 | 
						|
    subclasses = [abc.PyLoader, machinery.BuiltinImporter,
 | 
						|
                    machinery.FrozenImporter]
 | 
						|
 | 
						|
 | 
						|
class PyLoader(InheritanceTests, unittest.TestCase):
 | 
						|
 | 
						|
    superclasses = [abc.Loader, abc.ResourceLoader, abc.InspectLoader]
 | 
						|
 | 
						|
 | 
						|
class PyPycLoader(InheritanceTests, unittest.TestCase):
 | 
						|
 | 
						|
    superclasses = [abc.PyLoader]
 | 
						|
 | 
						|
 | 
						|
def test_main():
 | 
						|
    from test.support import run_unittest
 | 
						|
    classes = []
 | 
						|
    for class_ in globals().values():
 | 
						|
        if (inspect.isclass(class_) and
 | 
						|
                issubclass(class_, unittest.TestCase) and
 | 
						|
                issubclass(class_, InheritanceTests)):
 | 
						|
            classes.append(class_)
 | 
						|
    run_unittest(*classes)
 | 
						|
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
    test_main()
 |