]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
issue9859: Document test.support.detect_api_mismatch() and simplify its test.
authorGregory P. Smith <greg@krypto.org>
Tue, 14 Apr 2015 20:26:06 +0000 (13:26 -0700)
committerGregory P. Smith <greg@krypto.org>
Tue, 14 Apr 2015 20:26:06 +0000 (13:26 -0700)
Doc/library/test.rst
Lib/test/support/__init__.py
Lib/test/test_support.py

index 974909e18204fdf75ace00cff1256edc77444e10..029f93047ae095e11159e2ee7f3c33af8b727654 100644 (file)
@@ -568,6 +568,15 @@ The :mod:`test.support` module defines the following functions:
       def load_tests(*args):
           return load_package_tests(os.path.dirname(__file__), *args)
 
+.. function:: detect_api_mismatch(ref_api, other_api, *, ignore=()):
+
+   Returns the set of attributes, functions or methods of `ref_api` not
+   found on `other_api`, except for a defined list of items to be
+   ignored in this check specified in `ignore`.
+
+   By default this skips private attributes beginning with '_' but
+   includes all magic methods, i.e. those starting and ending in '__'.
+
 
 The :mod:`test.support` module defines the following classes:
 
index b9fda11ba910c58b589870038c28f904b5449998..8b180b565790d3e1f654e6d778234bd4d692fa70 100644 (file)
@@ -2184,7 +2184,7 @@ def fs_is_case_insensitive(directory):
             return False
 
 
-def detect_api_mismatch(ref_api, other_api, *, ignore=None):
+def detect_api_mismatch(ref_api, other_api, *, ignore=()):
     """Returns the set of items in ref_api not in other_api, except for a
     defined list of items to be ignored in this check.
 
index 4a27c44380fd91751b00e727c98f23ced582fa27..2c004174148120072276acf704e60cf5299912a7 100644 (file)
@@ -280,46 +280,36 @@ class TestSupport(unittest.TestCase):
             self.assertEqual(D["item"], 5)
         self.assertEqual(D["item"], 1)
 
+    class RefClass:
+        attribute1 = None
+        attribute2 = None
+        _hidden_attribute1 = None
+        __magic_1__ = None
+
+    class OtherClass:
+        attribute2 = None
+        attribute3 = None
+        __magic_1__ = None
+        __magic_2__ = None
+
     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)
+        missing_items = support.detect_api_mismatch(self.RefClass,
+                                                    self.OtherClass)
         self.assertEqual({'attribute1'}, missing_items)
 
-        missing_items = support.detect_api_mismatch(OtherClass, RefClass)
+        missing_items = support.detect_api_mismatch(self.OtherClass,
+                                                    self.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)
+        missing_items = support.detect_api_mismatch(
+                self.RefClass, self.OtherClass, ignore=ignore)
         self.assertEqual(set(), missing_items)
 
-        missing_items = support.detect_api_mismatch(OtherClass, RefClass,
-                                                    ignore=ignore)
+        missing_items = support.detect_api_mismatch(
+                self.OtherClass, self.RefClass, ignore=ignore)
         self.assertEqual(set(), missing_items)
 
     # XXX -follows a list of untested API