test_ok1/py/test/doctest.py

34 lines
1.0 KiB
Python

import py
class DoctestText(py.test.collect.Item):
def _setcontent(self, content):
self._content = content
#def buildname2items(self):
# parser = py.compat.doctest.DoctestParser()
# l = parser.get_examples(self._content)
# d = {}
# globs = {}
# locs
# for i, example in py.builtin.enumerate(l):
# ex = ExampleItem(example)
# d[str(i)] = ex
def run(self):
mod = py.std.types.ModuleType(self.name)
#for line in s.split('\n'):
# if line.startswith(prefix):
# exec py.code.Source(line[len(prefix):]).compile() in mod.__dict__
# line = ""
# else:
# l.append(line)
self.execute(mod, self._content)
def execute(self, mod, docstring):
mod.__doc__ = docstring
failed, tot = py.compat.doctest.testmod(mod, verbose=1)
if failed:
py.test.fail("doctest %s: %s failed out of %s" %(
self.fspath, failed, tot))