[conduit: 84/138] Add a progress bar
- From: John Carr <johncarr src gnome org>
- To: svn-commits-list gnome org
- Subject: [conduit: 84/138] Add a progress bar
- Date: Thu, 21 May 2009 03:33:59 -0400 (EDT)
commit 8be59f51636250e3e14c76542cc6cdbf577f25df
Author: John Carr <john carr unrouted co uk>
Date: Mon May 4 08:36:35 2009 -0700
Add a progress bar
---
test/soup/result.py | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++
test/soup/soup | 8 +++--
2 files changed, 105 insertions(+), 3 deletions(-)
diff --git a/test/soup/result.py b/test/soup/result.py
new file mode 100644
index 0000000..b495a30
--- /dev/null
+++ b/test/soup/result.py
@@ -0,0 +1,100 @@
+
+from soup import UnavailableFeature
+from soup.utils import progressbar
+
+import sys
+import unittest
+
+class TestResult(unittest.TestResult):
+
+ def __init__(self, stream, descriptions, verbosity, num_tests=None):
+ super(TestResult, self).__init__()
+ self.stream = stream
+ self.descriptions = descriptions
+ self.verbosity = verbosity
+ self.num_tests = num_tests
+
+ def startTest(self, test):
+ super(TestResult, self).startTest(test)
+ self.report_test_start(test)
+
+ def stopTest(self, test):
+ super(TestResult, self).stopTest(test)
+ self.report_test_stop(test)
+
+ def addError(self, test, err):
+ if isinstance(err, UnavailableFeature):
+ self.addSkipped(self, test)
+ else:
+ super(TestResult, self).addError(test, err)
+ self.report_error(test)
+
+ def addFailure(self, test, err):
+ super(TestResult, self).addFailure(test, err)
+ self.report_failure(test)
+
+ def addSkipped(self, test):
+ self.report_skipped(test)
+
+ def addSuccess(self, test):
+ super(TestResult, self).addSuccess(test)
+ self.report_success(test)
+
+ # FIXME: Maybe these should be callbacks?
+
+ def report_test_start(self, test):
+ pass
+
+ def report_test_stop(self, test):
+ pass
+
+ def report_error(self, test):
+ pass
+
+ def report_failure(self, test):
+ pass
+
+ def report_skipped(self, test):
+ pass
+
+ def report_success(self, test):
+ pass
+
+
+class SimpleTestResult(TestResult):
+
+ def report_starting(self):
+ self.pb = progressbar.ProgressBar()
+ self.pb.max = self.num_tests
+
+ def report_test_start(self, test):
+ self.pb.update(self.pb.cur + 1)
+
+
+class VerboseConsoleTextResult(TestResult):
+
+ def report_test_start(self, test):
+ print test.shortDescription()
+
+
+class TestRunner(object):
+
+ def __init__(self, stream=sys.stderr, descriptions=0, verbosity=1):
+ self.stream = stream
+ self.descriptions = 0
+ self.verbosity = 0
+
+ def make_results(self, tests):
+ if self.verbosity > 1:
+ klass = VerboseConsoleTextResult
+ else:
+ klass = SimpleTestResult
+
+ return klass(self.stream, self.descriptions, self.verbosity, num_tests=tests.countTestCases())
+
+ def run(self, tests):
+ result = self.make_results(tests)
+ result.report_starting()
+ tests.run(result)
+ return result
+
diff --git a/test/soup/soup b/test/soup/soup
index a3a20d3..9fa679a 100755
--- a/test/soup/soup
+++ b/test/soup/soup
@@ -22,8 +22,10 @@ from test_datatypes import *
from test_dataprovider import *
from test_synchronization import *
+import result
+
def run_tests(tests, verbose=False, do_coverage=False):
- runner = unittest.TextTestRunner(verbosity=2 if verbose else 1)
+ runner = result.TestRunner(verbosity=2 if verbose else 1)
if verbose:
logging.basicConfig(level=logging.DEBUG)
@@ -33,7 +35,7 @@ def run_tests(tests, verbose=False, do_coverage=False):
coverage.erase()
coverage.start()
- result = runner.run(unittest.TestSuite(tests))
+ res = runner.run(unittest.TestSuite(tests))
if do_coverage:
coverage.stop()
@@ -41,7 +43,7 @@ def run_tests(tests, verbose=False, do_coverage=False):
coverage.report(modules, ignore_errors=1, show_missing=0)
coverage.erase()
- sys.exit(not result.wasSuccessful())
+ sys.exit(not res.wasSuccessful())
def list_tests(tests):
for test in tests:
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]