[Checkins] SVN: z3c.testsetup/branches/ulif-cleanup/src/z3c/testsetup/doctesting.py * Remove UnitDocTestSetup
Uli Fouquet
uli at gnufix.de
Sat Oct 24 08:54:42 EDT 2009
Log message for revision 105256:
* Remove UnitDocTestSetup
* Allow encoding of ``None`` for doctests.
* Register encoding properly when tests are setup.
* Replace support for ``:zcml-layer:`` and ``:functional-zcml-layer:``
by new marker: ``:zcml-file:``.
* Flatten handling of functional (ZCMLLayer based) tests.
* Allow optionflags ``None`` for doctests.
Changed:
U z3c.testsetup/branches/ulif-cleanup/src/z3c/testsetup/doctesting.py
-=-
Modified: z3c.testsetup/branches/ulif-cleanup/src/z3c/testsetup/doctesting.py
===================================================================
--- z3c.testsetup/branches/ulif-cleanup/src/z3c/testsetup/doctesting.py 2009-10-24 12:50:22 UTC (rev 105255)
+++ z3c.testsetup/branches/ulif-cleanup/src/z3c/testsetup/doctesting.py 2009-10-24 12:54:41 UTC (rev 105256)
@@ -21,6 +21,8 @@
from z3c.testsetup.util import (get_package, get_marker_from_file, warn,
get_attribute)
+marker = object()
+
class DocTestSetup(BasicTestSetup):
"""A test setup for doctests."""
@@ -35,16 +37,17 @@
checker = None
def __init__(self, package, setup=None, teardown=None, globs=None,
- optionflags=None, encoding=None, checker=None,
- allow_teardown=True, **kw):
+ optionflags=marker, encoding=marker, checker=None,
+ allow_teardown=None, **kw):
BasicTestSetup.__init__(self, package, **kw)
self.setUp = setup or self.setUp
self.tearDown = teardown or self.tearDown
- self.encoding = encoding or self.encoding
self.checker = checker or self.checker
+ if not(encoding is marker):
+ self.encoding = encoding
if globs is not None:
self.globs = globs
- if optionflags is not None:
+ if not (optionflags is marker):
self.optionflags = optionflags
self.allow_teardown = allow_teardown
@@ -62,16 +65,12 @@
layerdef = get_marker_from_file('layer', name)
if layerdef is not None:
layerdef = get_attribute(layerdef)
-
- zcml_layer = self.getZCMLLayer(name, 'zcml-layer')
+
+ zcml_layer = self.getZCMLLayer(
+ name, 'zcml-file')
if zcml_layer is not None:
layerdef = zcml_layer
- functional_zcml_layer = self.getZCMLLayer(
- name, 'functional-zcml-layer')
- if functional_zcml_layer is not None:
- layerdef = functional_zcml_layer
-
setup = get_marker_from_file('setup', name) or self.setUp
if setup is not None and isinstance(setup, basestring):
setup = get_attribute(setup)
@@ -87,32 +86,22 @@
name = name[len(common_prefix):]
suite_creator = doctest.DocFileSuite
- if functional_zcml_layer is not None:
+ if layerdef is not None:
+ # Set up test functionally if layer is ZCMLLayer...
try:
from zope.app.testing.functional import (
- FunctionalDocFileSuite)
+ FunctionalDocFileSuite, ZCMLLayer)
except ImportError:
- warn("""You specified `:functional-zcml-layer:` in
+ if zcml_layer is not None:
+ warn("""You specified `:zcml-file:` in
%s
but there seems to be no `zope.app.testing` package available.
Please include `zope.app.testing` in your project setup to run this testfile.
""" % (os.path.join(common_prefix, name),))
continue
- suite_creator = FunctionalDocFileSuite
+ if isinstance(layerdef, ZCMLLayer):
+ suite_creator = FunctionalDocFileSuite
- # If the defined layer is a ZCMLLayer, we also enable the
- # functional test setup.
- if layerdef is not None:
- try:
- from zope.app.testing.functional import (
- ZCMLLayer, FunctionalDocFileSuite)
- if isinstance(layerdef, ZCMLLayer):
- suite_creator = FunctionalDocFileSuite
- except ImportError:
- # If zope.app.testing is not available, the layer
- # cannot be a ZCML layer.
- pass
-
test = suite_creator(
name,
package=self.package,
@@ -121,6 +110,7 @@
globs=self.globs,
optionflags=self.optionflags,
checker=self.checker,
+ encoding=self.encoding,
**self.additional_options
)
if layerdef is not None:
@@ -183,61 +173,3 @@
subdir_files = self.getDocTestFiles(dirpath=abs_path, **kw)
dirlist.extend(subdir_files)
return dirlist
-
-
-class UnitDocTestSetup(DocTestSetup):
- """A unit test setup for packages.
-
- A collection of methods to search for appropriate doctest files in
- a given package. ``UnitTestSetup`` is also able to 'register' the
- tests found and to deliver them as a ready-to-use
- ``unittest.TestSuite`` instance.
-
- While the functionality to search for testfiles is mostly
- inherited from the base class, the focus here is to setup the
- tests correctly.
-
- See file `unittestsetup.py` in the tests/testsetup directory to
- learn more about ``UnitTestSetup``.
- """
-
- optionflags = (doctest.ELLIPSIS+
- doctest.NORMALIZE_WHITESPACE+
- doctest.REPORT_NDIFF)
-
- regexp_list = [
- '^\s*:(T|t)est-(L|l)ayer:\s*(unit)\s*',
- ]
-
- globs = dict()
-
- def setUp(self, test):
- pass
-
- def tearDown(self, test):
- cleanup.cleanUp()
-
- def getTestSuite(self):
- docfiles = self.getDocTestFiles(package=self.package)
- suite = unittest.TestSuite()
- for name in docfiles:
- layerdef = get_marker_from_file('Test-Layerdef', name)
- if os.path.isabs(name):
- # We get absolute pathnames, but we need relative ones...
- common_prefix = os.path.commonprefix([self.package.__file__,
- name])
- name = name[len(common_prefix):]
- test = doctest.DocFileSuite(
- name,
- package=self.package,
- setUp=self.setUp,
- tearDown=self.tearDown,
- globs=self.globs,
- optionflags=self.optionflags,
- checker=self.checker,
- **self.additional_options
- )
- if layerdef is not None:
- test.layer = layerdef
- suite.addTest(test)
- return suite
More information about the checkins
mailing list