diff options
Diffstat (limited to 'pypers/oxford/doctest_talk/doctester_frontend.py')
-rwxr-xr-x | pypers/oxford/doctest_talk/doctester_frontend.py | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/pypers/oxford/doctest_talk/doctester_frontend.py b/pypers/oxford/doctest_talk/doctester_frontend.py new file mode 100755 index 0000000..0a1acc7 --- /dev/null +++ b/pypers/oxford/doctest_talk/doctester_frontend.py @@ -0,0 +1,44 @@ +from ms.quixote_utils_exp import Website, htmlpage, FormPage +from doctester import runtests +from StringIO import StringIO +import sys + +class DoctestPage(FormPage): + form_config = """\ + [text] + name: txt + title: Doctester input + + [checkbox] + name: verbose + title: Verbose + + [submit] + name: test + value: test!""" + + @htmlpage() + def exitpage(self): + if self.form["verbose"]: + yield "<pre>%s</pre>" % self.out.getvalue() + else: + yield "%(tests)s tests, %(fail)s failed" % vars(self) + + @htmlpage() + def errorpage(self): + yield self.form.get_widget('txt').error + yield "<pre>%s</pre>" % self.out.getvalue() + + def checker(self): + sys.stdout_orig = sys.stdout + sys.stdout = self.out = StringIO() + txt, verbose = self.form["txt"] or "", self.form["verbose"] + self.fail, self.tests = runtests(txt, verbose=verbose) + sys.stdout = sys.stdout_orig + if self.fail: + self.form.set_error("txt", "Doctester error") + +publisher = Website(_q_index=DoctestPage("doctester")).publisher() + +if __name__ == "__main__": + publisher.run_show(port=7080) |