Merge lp:~jml/zope.testing/subunit-time-always-2 into lp:zope.testing

Proposed by Jonathan Lange
Status: Merged
Merge reported by: Benji York
Merged at revision: not available
Proposed branch: lp:~jml/zope.testing/subunit-time-always-2
Merge into: lp:zope.testing
Diff against target: 328 lines (+52/-71)
2 files modified
src/zope/testing/testrunner/formatter.py (+4/-12)
src/zope/testing/testrunner/testrunner-subunit.txt (+48/-59)
To merge this branch: bzr merge lp:~jml/zope.testing/subunit-time-always-2
Reviewer Review Type Date Requested Status
Benji York (community) Approve
ZTK steering group Pending
Review via email: mp+30216@code.launchpad.net

Description of the change

This patch causes timestamps to always be included in subunit output.

Since subunit output is for consumption by machines, rather than humans, it doesn't cause any harm. Having the data in the output by default makes zope testrunner much more useful for analyzing test run time.

To post a comment you must log in.
Revision history for this message
Benji York (benji) wrote :

Looks good. Committed in r114849.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/zope/testing/testrunner/formatter.py'
2--- src/zope/testing/testrunner/formatter.py 2010-06-03 16:55:38 +0000
3+++ src/zope/testing/testrunner/formatter.py 2010-07-18 17:43:40 +0000
4@@ -731,10 +731,6 @@
5 self.PLAIN_TEXT = content.ContentType(
6 'text', 'plain', {'charset': 'utf8'})
7
8- @property
9- def _time_tests(self):
10- return self.verbose > 2
11-
12 def _emit_timestamp(self, now=None):
13 """Emit a timestamp to the subunit stream.
14
15@@ -869,8 +865,7 @@
16 The next output operation should be test_success(), test_error(), or
17 test_failure().
18 """
19- if self._time_tests:
20- self._emit_timestamp()
21+ self._emit_timestamp()
22 # Note that this always emits newlines, so it will function as well as
23 # other start_test implementations if we are running in a subprocess.
24 self._subunit.startTest(test)
25@@ -885,8 +880,7 @@
26 self._stream.flush()
27
28 def test_success(self, test, seconds):
29- if self._time_tests:
30- self._emit_timestamp()
31+ self._emit_timestamp()
32 self._subunit.addSuccess(test)
33
34 def import_errors(self, import_errors):
35@@ -923,8 +917,7 @@
36
37 The next output operation should be stop_test().
38 """
39- if self._time_tests:
40- self._emit_timestamp()
41+ self._emit_timestamp()
42 details = self._exc_info_to_details(exc_info)
43 self._subunit.addError(test, details=details)
44
45@@ -935,8 +928,7 @@
46
47 The next output operation should be stop_test().
48 """
49- if self._time_tests:
50- self._emit_timestamp()
51+ self._emit_timestamp()
52 details = self._exc_info_to_details(exc_info)
53 self._subunit.addFailure(test, details=details)
54
55
56=== modified file 'src/zope/testing/testrunner/testrunner-subunit.txt'
57--- src/zope/testing/testrunner/testrunner-subunit.txt 2010-03-12 14:47:00 +0000
58+++ src/zope/testing/testrunner/testrunner-subunit.txt 2010-07-18 17:43:40 +0000
59@@ -48,65 +48,6 @@
60 time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
61 successful: samplelayers.Layer122:setUp
62 tags: zope:layer:samplelayers.Layer122
63- test: sample1.sampletests.test122.TestNotMuch.test_1
64- successful: sample1.sampletests.test122.TestNotMuch.test_1
65- test: sample1.sampletests.test122.TestNotMuch.test_2
66- successful: sample1.sampletests.test122.TestNotMuch.test_2
67- test: sample1.sampletests.test122.TestNotMuch.test_3
68- successful: sample1.sampletests.test122.TestNotMuch.test_3
69- test: sampletests.test122.TestNotMuch.test_1
70- successful: sampletests.test122.TestNotMuch.test_1
71- test: sampletests.test122.TestNotMuch.test_2
72- successful: sampletests.test122.TestNotMuch.test_2
73- test: sampletests.test122.TestNotMuch.test_3
74- successful: sampletests.test122.TestNotMuch.test_3
75- tags: -zope:layer:samplelayers.Layer122
76- time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
77- test: samplelayers.Layer122:tearDown
78- tags: zope:layer
79- time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
80- successful: samplelayers.Layer122:tearDown
81- tags: -zope:layer:samplelayers.Layer12
82- time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
83- test: samplelayers.Layer12:tearDown
84- tags: zope:layer
85- time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
86- successful: samplelayers.Layer12:tearDown
87- tags: -zope:layer:samplelayers.Layer1
88- time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
89- test: samplelayers.Layer1:tearDown
90- tags: zope:layer
91- time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
92- successful: samplelayers.Layer1:tearDown
93- False
94-
95-
96-Timing tests
97-------------
98-
99-When verbosity is high enough, the subunit stream includes timing information
100-for the actual tests, as well as for the layers.
101-
102- >>> sys.argv = 'test --layer 122 -vvv --subunit -t TestNotMuch'.split()
103- >>> testrunner.run_internal(defaults)
104- time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
105- test: samplelayers.Layer1:setUp
106- tags: zope:layer
107- time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
108- successful: samplelayers.Layer1:setUp
109- tags: zope:layer:samplelayers.Layer1
110- time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
111- test: samplelayers.Layer12:setUp
112- tags: zope:layer
113- time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
114- successful: samplelayers.Layer12:setUp
115- tags: zope:layer:samplelayers.Layer12
116- time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
117- test: samplelayers.Layer122:setUp
118- tags: zope:layer
119- time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
120- successful: samplelayers.Layer122:setUp
121- tags: zope:layer:samplelayers.Layer122
122 time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
123 test: sample1.sampletests.test122.TestNotMuch.test_1
124 time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
125@@ -229,7 +170,9 @@
126 time: 2010-02-05 15:27:05.113545Z
127 successful: zope.testing.testrunner.layer.UnitTests:setUp
128 tags: zope:layer:zope.testing.testrunner.layer.UnitTests
129+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
130 test: sample2.sampletests_e.eek
131+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
132 failure: sample2.sampletests_e.eek [ multipart
133 Content-Type: text/x-traceback;charset=utf8,language=python
134 traceback
135@@ -257,11 +200,17 @@
136 0\r
137 <BLANKLINE>
138 ]
139+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
140 test: sample2.sampletests_e.Test.test1
141+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
142 successful: sample2.sampletests_e.Test.test1
143+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
144 test: sample2.sampletests_e.Test.test2
145+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
146 successful: sample2.sampletests_e.Test.test2
147+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
148 test: sample2.sampletests_e.Test.test3
149+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
150 error: sample2.sampletests_e.Test.test3 [ multipart
151 Content-Type: text/x-traceback;charset=utf8,language=python
152 traceback
153@@ -281,11 +230,17 @@
154 0\r
155 <BLANKLINE>
156 ]
157+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
158 test: sample2.sampletests_e.Test.test4
159+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
160 successful: sample2.sampletests_e.Test.test4
161+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
162 test: sample2.sampletests_e.Test.test5
163+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
164 successful: sample2.sampletests_e.Test.test5
165+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
166 test: e_txt
167+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
168 failure: e_txt [
169 multipart
170 Content-Type: text/x-traceback;charset=utf8,language=python
171@@ -344,7 +299,9 @@
172 time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
173 successful: sample2.sampletests_ntd.Layer:setUp
174 tags: zope:layer:sample2.sampletests_ntd.Layer
175+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
176 test: sample2.sampletests_ntd.TestSomething.test_something
177+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
178 successful: sample2.sampletests_ntd.TestSomething.test_something
179 tags: -zope:layer:sample2.sampletests_ntd.Layer
180 time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
181@@ -434,7 +391,9 @@
182 time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
183 successful: sample1.sampletests_ntd.Layer:setUp
184 tags: zope:layer:sample1.sampletests_ntd.Layer
185+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
186 test: sample1.sampletests_ntd.TestSomething.test_something
187+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
188 successful: sample1.sampletests_ntd.TestSomething.test_something
189 tags: -zope:layer:sample1.sampletests_ntd.Layer
190 time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
191@@ -453,7 +412,9 @@
192 time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
193 successful: sample2.sampletests_ntd.Layer:setUp
194 tags: zope:layer:sample2.sampletests_ntd.Layer
195+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
196 test: sample2.sampletests_ntd.TestSomething.test_something
197+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
198 successful: sample2.sampletests_ntd.TestSomething.test_something
199 tags: -zope:layer:sample2.sampletests_ntd.Layer
200 time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
201@@ -472,7 +433,9 @@
202 time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
203 successful: sample3.sampletests_ntd.Layer:setUp
204 tags: zope:layer:sample3.sampletests_ntd.Layer
205+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
206 test: sample3.sampletests_ntd.TestSomething.test_error1
207+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
208 error: sample3.sampletests_ntd.TestSomething.test_error1 [ multipart
209 Content-Type: text/x-traceback;charset=utf8,language=python
210 traceback
211@@ -485,7 +448,9 @@
212 0\r
213 <BLANKLINE>
214 ]
215+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
216 test: sample3.sampletests_ntd.TestSomething.test_error2
217+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
218 error: sample3.sampletests_ntd.TestSomething.test_error2 [ multipart
219 Content-Type: text/x-traceback;charset=utf8,language=python
220 traceback
221@@ -498,7 +463,9 @@
222 0\r
223 <BLANKLINE>
224 ]
225+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
226 test: sample3.sampletests_ntd.TestSomething.test_fail1
227+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
228 failure: sample3.sampletests_ntd.TestSomething.test_fail1 [ multipart
229 Content-Type: text/x-traceback;charset=utf8,language=python
230 traceback
231@@ -511,7 +478,9 @@
232 0\r
233 <BLANKLINE>
234 ]
235+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
236 test: sample3.sampletests_ntd.TestSomething.test_fail2
237+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
238 failure: sample3.sampletests_ntd.TestSomething.test_fail2 [ multipart
239 Content-Type: text/x-traceback;charset=utf8,language=python
240 traceback
241@@ -524,9 +493,13 @@
242 0\r
243 <BLANKLINE>
244 ]
245+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
246 test: sample3.sampletests_ntd.TestSomething.test_something
247+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
248 successful: sample3.sampletests_ntd.TestSomething.test_something
249+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
250 test: sample3.sampletests_ntd.TestSomething.test_something_else
251+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
252 successful: sample3.sampletests_ntd.TestSomething.test_something_else
253 tags: -zope:layer:sample3.sampletests_ntd.Layer
254 time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
255@@ -549,7 +522,9 @@
256 time: 2010-02-10 22:41:25.279695Z
257 successful: sample1.sampletests_ntd.Layer:setUp
258 tags: zope:layer:sample1.sampletests_ntd.Layer
259+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
260 test: sample1.sampletests_ntd.TestSomething.test_something
261+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
262 successful: sample1.sampletests_ntd.TestSomething.test_something
263 tags: -zope:layer:sample1.sampletests_ntd.Layer
264 time: 2010-02-10 22:41:25.310078Z
265@@ -568,7 +543,9 @@
266 time: 2010-02-10 22:41:25.753079Z
267 successful: sample2.sampletests_ntd.Layer:setUp
268 tags: zope:layer:sample2.sampletests_ntd.Layer
269+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
270 test: sample2.sampletests_ntd.TestSomething.test_something
271+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
272 successful: sample2.sampletests_ntd.TestSomething.test_something
273 tags: -zope:layer:sample2.sampletests_ntd.Layer
274 time: 2010-02-10 22:41:25.779256Z
275@@ -587,7 +564,9 @@
276 time: 2010-02-10 22:41:26.310299Z
277 successful: sample3.sampletests_ntd.Layer:setUp
278 tags: zope:layer:sample3.sampletests_ntd.Layer
279+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
280 test: sample3.sampletests_ntd.TestSomething.test_error1
281+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
282 error: sample3.sampletests_ntd.TestSomething.test_error1 [ multipart
283 Content-Type: text/x-traceback;charset=utf8,language=python
284 traceback
285@@ -605,7 +584,9 @@
286 test: Can't post-mortem debug when running a layer as a subprocess!
287 tags: zope:error_with_banner
288 successful: Can't post-mortem debug when running a layer as a subprocess!
289+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
290 test: sample3.sampletests_ntd.TestSomething.test_error2
291+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
292 error: sample3.sampletests_ntd.TestSomething.test_error2 [ multipart
293 Content-Type: text/x-traceback;charset=utf8,language=python
294 traceback
295@@ -623,7 +604,9 @@
296 test: Can't post-mortem debug when running a layer as a subprocess!
297 tags: zope:error_with_banner
298 successful: Can't post-mortem debug when running a layer as a subprocess!
299+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
300 test: sample3.sampletests_ntd.TestSomething.test_fail1
301+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
302 error: sample3.sampletests_ntd.TestSomething.test_fail1 [ multipart
303 Content-Type: text/x-traceback;charset=utf8,language=python
304 traceback
305@@ -643,7 +626,9 @@
306 test: Can't post-mortem debug when running a layer as a subprocess!
307 tags: zope:error_with_banner
308 successful: Can't post-mortem debug when running a layer as a subprocess!
309+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
310 test: sample3.sampletests_ntd.TestSomething.test_fail2
311+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
312 error: sample3.sampletests_ntd.TestSomething.test_fail2 [ multipart
313 Content-Type: text/x-traceback;charset=utf8,language=python
314 traceback
315@@ -663,9 +648,13 @@
316 test: Can't post-mortem debug when running a layer as a subprocess!
317 tags: zope:error_with_banner
318 successful: Can't post-mortem debug when running a layer as a subprocess!
319+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
320 test: sample3.sampletests_ntd.TestSomething.test_something
321+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
322 successful: sample3.sampletests_ntd.TestSomething.test_something
323+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
324 test: sample3.sampletests_ntd.TestSomething.test_something_else
325+ time: YYYY-MM-DD HH:MM:SS.mmmmmmZ
326 successful: sample3.sampletests_ntd.TestSomething.test_something_else
327 tags: -zope:layer:sample3.sampletests_ntd.Layer
328 time: 2010-02-10 22:41:26.340878Z

Subscribers

People subscribed via source and target branches