summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGregory P. Smith <greg@krypto.org>2015-04-14 20:26:06 (GMT)
committerGregory P. Smith <greg@krypto.org>2015-04-14 20:26:06 (GMT)
commit4e72cceb628010b5f30dce7a2883cda92ed61393 (patch)
tree5a35eb4a268eed10f58089fdda43d16d841563c6
parent1bef9075b86512ec618b96f6f3a22353154f26b7 (diff)
downloadcpython-4e72cceb628010b5f30dce7a2883cda92ed61393.zip
cpython-4e72cceb628010b5f30dce7a2883cda92ed61393.tar.gz
cpython-4e72cceb628010b5f30dce7a2883cda92ed61393.tar.bz2
issue9859: Document test.support.detect_api_mismatch() and simplify its test.
-rw-r--r--Doc/library/test.rst9
-rw-r--r--Lib/test/support/__init__.py2
-rw-r--r--Lib/test/test_support.py50
3 files changed, 30 insertions, 31 deletions
diff --git a/Doc/library/test.rst b/Doc/library/test.rst
index 974909e..029f930 100644
--- a/Doc/library/test.rst
+++ b/Doc/library/test.rst
@@ -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:
diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py
index b9fda11..8b180b5 100644
--- a/Lib/test/support/__init__.py
+++ b/Lib/test/support/__init__.py
@@ -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.
diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py
index 4a27c44..2c00417 100644
--- a/Lib/test/test_support.py
+++ b/Lib/test/test_support.py
@@ -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