issue9859: Adds a test.support.detect_api_mismatch function useful to

compare the public APIs of two modules or classes.
This commit is contained in:
Gregory P. Smith 2015-04-14 12:56:53 -07:00
parent a8b120641b
commit e334e3ff71
2 changed files with 58 additions and 1 deletions

View file

@ -280,6 +280,48 @@ class TestSupport(unittest.TestCase):
self.assertEqual(D["item"], 5)
self.assertEqual(D["item"], 1)
def test_detect_api_mismatch(self):
class RefClass:
attribute1 = None
attribute2 = None
_hidden_attribute1 = None
__magic_1__ = None
class OtherClass:
attribute2 = None
attribute3 = None
__magic_1__ = None
__magic_2__ = None
missing_items = support.detect_api_mismatch(RefClass, OtherClass)
self.assertEqual({'attribute1'}, missing_items)
missing_items = support.detect_api_mismatch(OtherClass, RefClass)
self.assertEqual({'attribute3', '__magic_2__'}, missing_items)
def test_detect_api_mismatch__ignore(self):
class RefClass:
attribute1 = None
attribute2 = None
_hidden_attribute1 = None
__magic_1__ = None
class OtherClass:
attribute2 = None
attribute3 = None
__magic_1__ = None
__magic_2__ = None
ignore = ['attribute1', 'attribute3', '__magic_2__', 'not_in_either']
missing_items = support.detect_api_mismatch(RefClass, OtherClass,
ignore=ignore)
self.assertEqual(set(), missing_items)
missing_items = support.detect_api_mismatch(OtherClass, RefClass,
ignore=ignore)
self.assertEqual(set(), missing_items)
# XXX -follows a list of untested API
# make_legacy_pyc
# is_resource_enabled