summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorJonathan Lange <jml@mumak.net>2012-03-25 15:57:45 +0100
committerJonathan Lange <jml@mumak.net>2012-03-25 15:57:45 +0100
commitcb4407b480a8e28d05d4b2a2eb720f5064997874 (patch)
tree6be0032d74c0ea4132cb72f16b87249e3d9e4bae /python
parentd569ecc69d7f4c78467ebc55f13b5e99b8d8f51b (diff)
downloadsubunit-git-cb4407b480a8e28d05d4b2a2eb720f5064997874.tar.gz
Don't write anything until startTestRun is called.
Diffstat (limited to 'python')
-rw-r--r--python/subunit/test_results.py23
-rw-r--r--python/subunit/tests/test_test_results.py5
2 files changed, 17 insertions, 11 deletions
diff --git a/python/subunit/test_results.py b/python/subunit/test_results.py
index f64126d..73adfab 100644
--- a/python/subunit/test_results.py
+++ b/python/subunit/test_results.py
@@ -579,14 +579,15 @@ class TestByTestResult(testtools.TestResult):
self._details = details
-def csv_result(stream):
- writer = csv.writer(stream)
- w = writer.writerow
- # XXX: Not great that we write this out immediately. Probably better to
- # wait for startTestRun.
- w(['test', 'status', 'start_time', 'stop_time'])
- def on_test(test, status, start_time, stop_time, tags, details):
- # XXX: Don't really know how to serialize tags or details into csv in
- # a useful way.
- w([test.id(), status, start_time, stop_time])
- return TestByTestResult(on_test)
+class csv_result(TestByTestResult):
+
+ def __init__(self, stream):
+ super(csv_result, self).__init__(self._on_test)
+ self._write_row = csv.writer(stream).writerow
+
+ def _on_test(self, test, status, start_time, stop_time, tags, details):
+ self._write_row([test.id(), status, start_time, stop_time])
+
+ def startTestRun(self):
+ super(csv_result, self).startTestRun()
+ self._write_row(['test', 'status', 'start_time', 'stop_time'])
diff --git a/python/subunit/tests/test_test_results.py b/python/subunit/tests/test_test_results.py
index 1a95e9e..0e8d81e 100644
--- a/python/subunit/tests/test_test_results.py
+++ b/python/subunit/tests/test_test_results.py
@@ -486,6 +486,11 @@ class TestCsvResult(testtools.TestCase):
[['test', 'status', 'start_time', 'stop_time']],
self.parse_stream(stream))
+ def test_no_output_before_events(self):
+ stream = StringIO()
+ subunit.test_results.csv_result(stream)
+ self.assertEqual([], self.parse_stream(stream))
+
def test_suite():
loader = subunit.tests.TestUtil.TestLoader()