#!/usr/bin/env python """ Copyright 2007, Sean B. Palmer, inamidst.com Licensed under the Eiffel Forum License 2. """ import sys, os os.chdir('..') sys.path = ['.'] + sys.path[1:] import doctest, tempfile class DoctestRunner(doctest.DocTestRunner): def __init__(self, *args, **kargs): doctest.DocTestRunner.__init__(self, *args, **kargs) self.current = None self.counter = 0 def report_start(self, *args): if self.current and (args[1].name != self.current): sys.stderr.write('\n') self.counter = 0 else: self.counter += 1 self.current = args[1].name sys.stderr.write('\r') sys.stderr.write(args[1].name + ': ') sys.stderr.write(str(self.counter) + '/' + str(len(args[1].examples))) def report_success(self, *args): pass def testfile(filename, name, optionflags): text, filename = doctest._load_testfile(filename, None, False) runner = DoctestRunner(verbose=None, optionflags=optionflags) parser = doctest.DocTestParser() test = parser.get_doctest(text, {}, name, filename, 0) runner.run(test) print passes = runner.tries - runner.failures failures = runner.failures print 'Summary: %s passes, %s failures' % (passes, failures) def main(argv=None): from trio import Graph, n3 G = Graph('doc/index.html') n3.prefix('t', 'http://example.org/test#') f = tempfile.NamedTemporaryFile() for bindings in G.query(n3('[ t:setup ?setup ]')): f.write(bindings['setup'].lexical) f.write('\n\n') for bindings in G.query(n3('[ t:doctest ?test ]')): f.write(bindings['test'].lexical) f.write('\n\n') f.seek(0) testfile(f.name, 'doc/index.html', doctest.ELLIPSIS) f.close() if __name__ == '__main__': main()