summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Lange <jml@mumak.net>2012-03-27 12:17:37 +0100
committerJonathan Lange <jml@mumak.net>2012-03-27 12:17:37 +0100
commite2cbb8d7bd2fb382ee710a489686fe27ab6cddf2 (patch)
treee7e58d4151c75756e2e9ba6da04b5f39dbbce862
parenta5932aa9f9dcf9593886835adbe6193f0a8a0224 (diff)
downloadsubunit-git-e2cbb8d7bd2fb382ee710a489686fe27ab6cddf2.tar.gz
Factor out subunit-notify
-rwxr-xr-xfilters/subunit-notify53
-rw-r--r--python/subunit/filters.py17
2 files changed, 23 insertions, 47 deletions
diff --git a/filters/subunit-notify b/filters/subunit-notify
index 758e7fc..8cce2d1 100755
--- a/filters/subunit-notify
+++ b/filters/subunit-notify
@@ -16,50 +16,29 @@
"""Notify the user of a finished test run."""
-from optparse import OptionParser
-import sys
-
import pygtk
pygtk.require('2.0')
import pynotify
-from subunit import DiscardStream, ProtocolTestCase, TestResultStats
+from subunit import TestResultStats
+from subunit.filters import run_filter_script
if not pynotify.init("Subunit-notify"):
sys.exit(1)
-parser = OptionParser(description=__doc__)
-parser.add_option("--no-passthrough", action="store_true",
- help="Hide all non subunit input.", default=False, dest="no_passthrough")
-parser.add_option("-f", "--forward", action="store_true", default=False,
- help="Forward subunit stream on stdout.")
-(options, args) = parser.parse_args()
-result = TestResultStats(sys.stdout)
-if options.no_passthrough:
- passthrough_stream = DiscardStream()
-else:
- passthrough_stream = None
-if options.forward:
- forward_stream = sys.stdout
-else:
- forward_stream = None
-test = ProtocolTestCase(sys.stdin, passthrough=passthrough_stream,
- forward=forward_stream)
-test.run(result)
-if result.failed_tests > 0:
- summary = "Test run failed"
-else:
- summary = "Test run successful"
-body = "Total tests: %d; Passed: %d; Failed: %d" % (
- result.total_tests,
- result.passed_tests,
- result.failed_tests,
+
+def notify_of_result(result):
+ if result.failed_tests > 0:
+ summary = "Test run failed"
+ else:
+ summary = "Test run successful"
+ body = "Total tests: %d; Passed: %d; Failed: %d" % (
+ result.total_tests,
+ result.passed_tests,
+ result.failed_tests,
)
-nw = pynotify.Notification(summary, body)
-nw.show()
+ nw = pynotify.Notification(summary, body)
+ nw.show()
+
-if result.wasSuccessful():
- exit_code = 0
-else:
- exit_code = 1
-sys.exit(exit_code)
+run_filter_script(TestResultStats, __doc__, notify_of_result)
diff --git a/python/subunit/filters.py b/python/subunit/filters.py
index a221bf7..dc3fd8a 100644
--- a/python/subunit/filters.py
+++ b/python/subunit/filters.py
@@ -98,15 +98,7 @@ def filter_by_result(result_factory, output_path, passthrough, forward,
return result
-def _default_post_run(result):
- if result.wasSuccessful():
- sys.exit(0)
- else:
- sys.exit(1)
-
-
-def run_filter_script(result_factory, description,
- post_run_hook=_default_post_run):
+def run_filter_script(result_factory, description, post_run_hook=None):
"""Main function for simple subunit filter scripts.
Many subunit filter scripts take a stream of subunit input and use a
@@ -125,4 +117,9 @@ def run_filter_script(result_factory, description,
result = filter_by_result(
result_factory, options.output_to, not options.no_passthrough,
options.forward)
- post_run_hook(result)
+ if post_run_hook:
+ post_run_hook(result)
+ if result.wasSuccessful():
+ sys.exit(0)
+ else:
+ sys.exit(1)