Skip to content

Commit

Permalink
Test sanity cleanups
Browse files Browse the repository at this point in the history
Partially addresses #87

- Remove manual lists of tests in favor of loadTestsFromName. This
  mostly gets all test runners running the same number of tests.
- Remove `additional_tests`, which was just duplicating the discovered
  tests. No modern test runner seems to need it.
- Change the two compatibility skip decorators to actually use
  unitetest skips, which helps with the reporting.
  • Loading branch information
jamadden committed Jun 8, 2017
1 parent 47cf89e commit 7544c96
Show file tree
Hide file tree
Showing 19 changed files with 69 additions and 160 deletions.
3 changes: 3 additions & 0 deletions .coveragerc
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
[run]
source = zope.interface

[report]
show_missing = true
exclude_lines =
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,4 @@ eggs/
develop-eggs/
docs/_build/
parts/
htmlcov/
23 changes: 9 additions & 14 deletions src/zope/interface/_compat.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ def _normalize_name(name):
PYTHON3 = False
PYTHON2 = True

else: #pragma NO COVER
else: # pragma: no cover

def _normalize_name(name):
if isinstance(name, bytes):
Expand All @@ -48,16 +48,11 @@ def _normalize_name(name):
PYTHON3 = True
PYTHON2 = False

def _skip_under_py3k(test_method): #pragma NO COVER
if sys.version_info[0] < 3:
return test_method
def _dummy(*args):
pass
return _dummy

def _skip_under_py2(test_method): #pragma NO COVER
if sys.version_info[0] > 2:
return test_method
def _dummy(*args):
pass
return _dummy
def _skip_under_py3k(test_method): # pragma: no cover
import unittest
return unittest.skipIf(sys.version_info[0] >= 3, "Only on Python 2")(test_method)


def _skip_under_py2(test_method): # pragma: no cover
import unittest
return unittest.skipIf(sys.version_info[0] < 3, "Only on Python 3")(test_method)
4 changes: 1 addition & 3 deletions src/zope/interface/common/tests/test_idatetime.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,7 @@ def test_interfaces(self):


def test_suite():
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(TestDateTimeInterfaces))
return suite
return unittest.defaultTestLoader.loadTestsFromName(__name__)


if __name__ == '__main__':
Expand Down
15 changes: 6 additions & 9 deletions src/zope/interface/common/tests/test_import_interfaces.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,16 @@
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
import doctest
import unittest

def test_interface_import():
"""
>>> import zope.interface.common.interfaces
"""
class TestInterfaceImport(unittest.TestCase):

def test_import(self):
import zope.interface.common.interfaces as x
self.assertIsNotNone(x)

def test_suite():
return unittest.TestSuite((
doctest.DocTestSuite(),
))
return unittest.defaultTestLoader.loadTestsFromName(__name__)

if __name__ == '__main__':
unittest.main(defaultTest='test_suite')

14 changes: 1 addition & 13 deletions src/zope/interface/tests/__init__.py
Original file line number Diff line number Diff line change
@@ -1,13 +1 @@
import os
import unittest

def additional_tests():
suites = unittest.TestSuite()
for file in os.listdir(os.path.dirname(__file__)):
if file.endswith('.py') and file!='__init__.py':
name = os.path.splitext(file)[0]
module = __import__('.'.join((__name__, name)), globals(),
locals(), [name])
if hasattr(module, 'test_suite'):
suites.addTests(module.test_suite())
return suites
# Make this directory a package.
6 changes: 3 additions & 3 deletions src/zope/interface/tests/odd.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@
>>> if sys.version[0] == '2': # This test only makes sense under Python 2.x
... from types import ClassType
... assert not isinstance(C, (type, ClassType))
>>> int(C.__class__.__class__ is C.__class__)
1
"""
Expand All @@ -72,7 +72,7 @@ def __getattribute__(self, name):
if name == '__class__':
return self
return type.__getattribute__(self, name)


class MetaClass(object):
"""Odd classes
Expand Down Expand Up @@ -120,7 +120,7 @@ def __delattr__(self, name):
def __repr__(self):
return "<odd %s instance at %s>" % (
self.__class__.__name__, hex(id(self)))



# DocTest:
Expand Down
13 changes: 2 additions & 11 deletions src/zope/interface/tests/test_adapter.py
Original file line number Diff line number Diff line change
Expand Up @@ -1400,7 +1400,7 @@ def test__normalize_name_str(self):

def test__normalize_name_unicode(self):
from zope.interface.adapter import _normalize_name

USTR = u'ustr'
self.assertEqual(_normalize_name(USTR), USTR)

Expand All @@ -1414,13 +1414,4 @@ def test__normalize_name_other(self):


def test_suite():
return unittest.TestSuite((
unittest.makeSuite(BaseAdapterRegistryTests),
unittest.makeSuite(LookupBaseFallbackTests),
unittest.makeSuite(LookupBaseTests),
unittest.makeSuite(VerifyingBaseFallbackTests),
unittest.makeSuite(VerifyingBaseTests),
unittest.makeSuite(AdapterLookupBaseTests),
unittest.makeSuite(AdapterRegistryTests),
unittest.makeSuite(Test_utils),
))
return unittest.defaultTestLoader.loadTestsFromName(__name__)
8 changes: 1 addition & 7 deletions src/zope/interface/tests/test_advice.py
Original file line number Diff line number Diff line change
Expand Up @@ -376,10 +376,4 @@ class B(object):


def test_suite():
return unittest.TestSuite((
unittest.makeSuite(FrameInfoTest),
unittest.makeSuite(AdviceTests),
unittest.makeSuite(Test_isClassAdvisor),
unittest.makeSuite(Test_determineMetaclass),
unittest.makeSuite(Test_minimalBases),
))
return unittest.defaultTestLoader.loadTestsFromName(__name__)
31 changes: 1 addition & 30 deletions src/zope/interface/tests/test_declarations.py
Original file line number Diff line number Diff line change
Expand Up @@ -1677,33 +1677,4 @@ def __exit__(self, exc_type, exc_val, exc_tb):


def test_suite():
return unittest.TestSuite((
unittest.makeSuite(DeclarationTests),
unittest.makeSuite(TestImplements),
unittest.makeSuite(Test_implementedByFallback),
unittest.makeSuite(Test_implementedBy),
unittest.makeSuite(Test_classImplementsOnly),
unittest.makeSuite(Test_classImplements),
unittest.makeSuite(Test__implements_advice),
unittest.makeSuite(Test_implementer),
unittest.makeSuite(Test_implementer_only),
unittest.makeSuite(Test_implements),
unittest.makeSuite(Test_implementsOnly),
unittest.makeSuite(ProvidesClassTests),
unittest.makeSuite(Test_Provides),
unittest.makeSuite(Test_directlyProvides),
unittest.makeSuite(Test_alsoProvides),
unittest.makeSuite(Test_noLongerProvides),
unittest.makeSuite(ClassProvidesBaseFallbackTests),
unittest.makeSuite(ClassProvidesTests),
unittest.makeSuite(Test_directlyProvidedBy),
unittest.makeSuite(Test_classProvides),
unittest.makeSuite(Test_provider),
unittest.makeSuite(Test_moduleProvides),
unittest.makeSuite(Test_getObjectSpecificationFallback),
unittest.makeSuite(Test_getObjectSpecification),
unittest.makeSuite(Test_providedByFallback),
unittest.makeSuite(Test_providedBy),
unittest.makeSuite(ObjectSpecificationDescriptorFallbackTests),
unittest.makeSuite(ObjectSpecificationDescriptorTests),
))
return unittest.defaultTestLoader.loadTestsFromName(__name__)
6 changes: 1 addition & 5 deletions src/zope/interface/tests/test_document.py
Original file line number Diff line number Diff line change
Expand Up @@ -505,8 +505,4 @@ def test_with_munge(self):
self.assertEqual(self._callFUT(TEXT, 1, munge=1, width=15), EXPECTED)

def test_suite():
return unittest.TestSuite((
unittest.makeSuite(Test_asStructuredText),
unittest.makeSuite(Test_asReStructuredText),
unittest.makeSuite(Test__justify_and_indent),
))
return unittest.defaultTestLoader.loadTestsFromName(__name__)
6 changes: 2 additions & 4 deletions src/zope/interface/tests/test_element.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ class TestElement(unittest.TestCase):
def test_taggedValues(self):
"""Test that we can update tagged values of more than one element
"""

e1 = Element("foo")
e2 = Element("bar")
e1.setTaggedValue("x", 1)
Expand All @@ -32,9 +32,7 @@ def test_taggedValues(self):


def test_suite():
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(TestElement))
return suite
return unittest.defaultTestLoader.loadTestsFromName(__name__)


if __name__ == '__main__':
Expand Down

0 comments on commit 7544c96

Please sign in to comment.