summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Madden <jamadden@gmail.com>2020-02-17 06:20:37 -0600
committerJason Madden <jamadden@gmail.com>2020-02-17 07:02:57 -0600
commit2b49157e3e23c27329f85ee6397f4438d83b602a (patch)
tree6cf4c6a640698b7de5459f12ff784de938c8a98b
parentd088fd500d8aa03a7629c9a700685bf41c9dbf19 (diff)
downloadzope-interface-issue138.tar.gz
Cleanups per review.issue138
-rw-r--r--src/zope/interface/common/__init__.py2
-rw-r--r--src/zope/interface/common/io.py19
-rw-r--r--src/zope/interface/common/numbers.py1
-rw-r--r--src/zope/interface/common/tests/__init__.py11
-rw-r--r--src/zope/interface/common/tests/test_builtins.py42
5 files changed, 34 insertions, 41 deletions
diff --git a/src/zope/interface/common/__init__.py b/src/zope/interface/common/__init__.py
index 1b8fd6a..acbc581 100644
--- a/src/zope/interface/common/__init__.py
+++ b/src/zope/interface/common/__init__.py
@@ -110,7 +110,7 @@ class ABCInterfaceClass(InterfaceClass):
classes specifically registered with the ABC should be declared to
do so.
- .. verisonadded:: 5.0
+ .. versionadded:: 5.0.0
"""
# If we could figure out invalidation, and used some special
diff --git a/src/zope/interface/common/io.py b/src/zope/interface/common/io.py
index d55f7d6..540d53a 100644
--- a/src/zope/interface/common/io.py
+++ b/src/zope/interface/common/io.py
@@ -21,14 +21,6 @@ that they implement the appropriate interface.
from __future__ import absolute_import
import io as abc
-try:
- import cStringIO
- import StringIO
-except ImportError:
- # Python 3
- extra_buffered_io_base = ()
-else:
- extra_buffered_io_base = (StringIO.StringIO, cStringIO.InputType, cStringIO.OutputType)
from zope.interface.common import ABCInterface
@@ -45,7 +37,16 @@ class IRawIOBase(IIOBase):
class IBufferedIOBase(IIOBase):
abc = abc.BufferedIOBase
- extra_classes = extra_buffered_io_base
+ try:
+ import cStringIO
+ except ImportError:
+ # Python 3
+ extra_classes = ()
+ else:
+ import StringIO
+ extra_classes = (StringIO.StringIO, cStringIO.InputType, cStringIO.OutputType)
+ del cStringIO
+ del StringIO
class ITextIOBase(IIOBase):
diff --git a/src/zope/interface/common/numbers.py b/src/zope/interface/common/numbers.py
index e62ca30..3bf9206 100644
--- a/src/zope/interface/common/numbers.py
+++ b/src/zope/interface/common/numbers.py
@@ -45,6 +45,7 @@ class IComplex(INumber):
"""
Rarely implemented, even in builtin types.
"""
+
if PY2:
@optional
def __eq__(other):
diff --git a/src/zope/interface/common/tests/__init__.py b/src/zope/interface/common/tests/__init__.py
index ae99213..059e46c 100644
--- a/src/zope/interface/common/tests/__init__.py
+++ b/src/zope/interface/common/tests/__init__.py
@@ -46,8 +46,11 @@ def iter_abc_interfaces(predicate=lambda iface: True):
def add_abc_interface_tests(cls, module):
def predicate(iface):
return iface.__module__ == module
+ add_verify_tests(cls, iter_abc_interfaces(predicate))
- for iface, registered_classes in iter_abc_interfaces(predicate):
+
+def add_verify_tests(cls, iface_classes_iter):
+ for iface, registered_classes in iface_classes_iter:
for stdlib_class in registered_classes:
def test(self, stdlib_class=stdlib_class, iface=iface):
@@ -62,7 +65,6 @@ def add_abc_interface_tests(cls, module):
setattr(cls, name, test)
-
class VerifyClassMixin(unittest.TestCase):
verifier = staticmethod(verifyClass)
UNVERIFIABLE = ()
@@ -92,4 +94,7 @@ class VerifyObjectMixin(VerifyClassMixin):
if constructor is unittest.SkipTest:
self.skipTest("Cannot create " + str(x))
- return constructor()
+ result = constructor()
+ if hasattr(result, 'close'):
+ self.addCleanup(result.close)
+ return result
diff --git a/src/zope/interface/common/tests/test_builtins.py b/src/zope/interface/common/tests/test_builtins.py
index e42393b..1f0d338 100644
--- a/src/zope/interface/common/tests/test_builtins.py
+++ b/src/zope/interface/common/tests/test_builtins.py
@@ -18,38 +18,24 @@ from zope.interface.common import builtins
from . import VerifyClassMixin
from . import VerifyObjectMixin
+from . import add_verify_tests
class TestVerifyClass(VerifyClassMixin,
unittest.TestCase):
- UNVERIFIABLE = (
-
- )
- FILE_IMPL = ()
- if PY2:
- FILE_IMPL = ((file, builtins.IFile),)
- @classmethod
- def create_tests(cls):
- for klass, iface in (
- (list, builtins.IList),
- (tuple, builtins.ITuple),
- (type(u'abc'), builtins.ITextString),
- (bytes, builtins.IByteString),
- (str, builtins.INativeString),
- (bool, builtins.IBool),
- (dict, builtins.IDict),
- ) + cls.FILE_IMPL:
- def test(self, klass=klass, iface=iface):
- if klass in self.UNVERIFIABLE:
- self.skipTest("Cannot verify %s" % klass)
-
- self.assertTrue(self.verify(iface, klass))
-
- name = 'test_auto_' + klass.__name__ + '_' + iface.__name__
- test.__name__ = name
- setattr(cls, name, test)
-
-TestVerifyClass.create_tests()
+ pass
+
+
+add_verify_tests(TestVerifyClass, (
+ (builtins.IList, (list,)),
+ (builtins.ITuple, (tuple,)),
+ (builtins.ITextString, (type(u'abc'),)),
+ (builtins.IByteString, (bytes,)),
+ (builtins.INativeString, (str,)),
+ (builtins.IBool, (bool,)),
+ (builtins.IDict, (dict,)),
+ (builtins.IFile, (file,) if PY2 else ()),
+))
class TestVerifyObject(VerifyObjectMixin,