Merge trunk.
[third_party/subunit] / NEWS
1 ---------------------
2 subunit release notes
3 ---------------------
4
5 NEXT (In development)
6 ---------------------
7
8 BUG FIXES
9 ~~~~~~~~~
10
11 * Perl files should now honour perl system config.
12   (Benedikt Morbach, #1233198)
13
14 * Python 3.1 and 3.2 have an inconsistent memoryview implementation which
15   required a workaround for NUL byte detection. (Robert Collins, #1216246)
16
17 * The test suite was failing 6 tests due to testtools changing it's output
18   formatting of exceptions. (Robert Collins)
19
20 * V2 parser errors now set appropriate mime types for the encapsulated packet
21   data and the error message. (Robert Collins)
22
23 IMPROVEMENTS
24 ~~~~~~~~~~~~
25
26 * Most filters will now accept a file path argument instead of only reading
27   from stdin. (Robert Collins, #409206)
28
29 * Add ``subunit-output`` tool that can generate a Subunit v2 bytestream from
30   arguments passed on the command line. (Thomi Richards, #1252084)
31
32 0.0.15
33 ------
34
35 BUG FIXES
36 ~~~~~~~~~
37
38 * Clients of subunit did not expect memoryview objects in StreamResult events.
39   (Robert Collins)
40
41 * Memoryview and struct were mutually incompatible in 2.7.3 and 3.2.
42   (Robert Collins, #1216163)
43
44 0.0.14
45 ------
46
47 BUG FIXES
48 ~~~~~~~~~
49
50 * Memoryview detection was broken and thus it's use was never really tested.
51   (Robert Collins, 1216101)
52
53 * TestProtocol2's tag tests were set sort order dependent.
54   (Robert Collins, #1025392)
55
56 * TestTestProtocols' test_tags_both was set sort order dependent.
57   (Robert Collins, #1025392)
58
59 * TestTestProtocols' test_*_details were dictionary sort order dependent.
60   (Robert Collins, #1025392)
61
62 * TestSubUnitTags's test_add_tag was also se sort order dependent.
63   (Robert Collins, #1025392)
64
65 0.0.13
66 ------
67
68 IMPROVEMENTS
69 ~~~~~~~~~~~~
70
71 * subunit should now build with automake 1.11 again. (Robert Collins)
72
73 * `subunit-stats` no longer outputs encapsulated stdout as subunit.
74   (Robert Collins, #1171987)
75
76 * The logic for `subunit.run` is now importable via python -
77   `subunit.run.main`. (Robert Collins, #606770)
78
79 BUG FIXES
80 ~~~~~~~~~
81
82 * Removed GPL files that were (C) non Subunit Developers - they are
83   incompatible for binary distribution, which affects redistributors.
84   (Robert Collins, #1185591)
85
86 0.0.12
87 ------
88
89 BUG FIXES
90 ~~~~~~~~~
91
92 * Subunit v2 packets with both file content and route code were not being
93   parsed correctly - they would incorrectly emit a parser error, due to trying
94   to parse the route code length from the first byes of the file content.
95   (Robert Collins, 1172815)
96
97 0.0.11
98 ------
99
100 v2 protocol draft included in this release. The v2 protocol trades off human
101 readability for a massive improvement in robustness, the ability to represent
102 concurrent tests in a single stream, cheaper parsing, and that provides
103 significantly better in-line debugging support and structured forwarding
104 of non-test data (such as stdout or stdin data).
105
106 This change includes two new filters (subunit-1to2 and subunit-2to1). Use
107 these filters to convert old streams to v2 and convert v2 streams to v1.
108
109 All the other filters now only parse and emit v2 streams. V2 is still in
110 draft format, so if you want to delay and wait for v2 to be finalised, you
111 should use subunit-2to1 before any serialisation steps take place.
112 With the ability to encapsulate multiple non-test streams, another significant
113 cange is that filters which emit subunit now encapsulate any non-subunit they
114 encounter, labelling it 'stdout'. This permits multiplexing such streams and
115 detangling the stdout streams from each input.
116
117 The subunit libraries (Python etc) have not changed their behaviour: they
118 still emit v1 from their existing API calls. New API's are being added
119 and applications should migrate once their language has those API's available.
120
121 IMPROVEMENTS
122 ~~~~~~~~~~~~
123
124 * ``subunit.run`` now replaces sys.stdout to ensure that stdout is unbuffered
125   - without this pdb output is not reliably visible when stdout is a pipe
126   as it usually is. (Robert Collins)
127
128 * v2 protocol draft included in this release. (Python implementation only so
129   far). (Robert Collins)
130
131 * Two new Python classes -- ``StreamResultToBytes`` and
132   ``ByteStreamToStreamResult`` handle v2 generation and parsing.
133   (Robert Collins)
134
135 0.0.10
136 ------
137
138 BUG FIXES
139 ~~~~~~~~~
140
141 * make_stream_binary is now public for reuse. (Robert Collins)
142
143 * NAME was not defined in the protocol BNF. (Robert Collins)
144
145 * UnsupportedOperation is available in the Python2.6 io library, so ask
146   forgiveness rather than permission for obtaining it. (Robert Collins)
147
148 * Streams with no fileno() attribute are now supported, but they are not
149   checked for being in binary mode: be sure to take care of that if using
150   the library yourself. (Robert Collins)
151
152 0.0.9
153 -----
154
155 BUG FIXES
156 ~~~~~~~~~
157
158 * All the source files are now included in the distribution tarball.
159   (Arfrever Frehtes Taifersar Arahesis, Robert Collins, #996275)
160
161 * ``python/subunit/tests/test_run.py`` and ``python/subunit/filters.py`` were
162   not included in the 0.0.8 tarball. (Robert Collins)
163
164 * Test ids which include non-ascii unicode characters are now supported.
165   (Robert Collins, #1029866)
166
167 * The ``failfast`` option to ``subunit.run`` will now work. The dependency on
168   testtools has been raised to 0.9.23 to permit this.
169   (Robert Collins, #1090582)
170
171 0.0.8
172 -----
173
174 IMPROVEMENTS
175 ~~~~~~~~~~~~
176
177 * Perl module now correctly outputs "failure" instead of "fail".  (Stewart Smith)
178
179 * Shell functions now output timestamps. (Stewart Smith, Robert Collins)
180
181 * 'subunit2csv' script that converts subunit output to CSV format.
182   (Jonathan Lange)
183
184 * ``TagCollapsingDecorator`` now correctly distinguishes between local and
185   global tags.  (Jonathan Lange)
186
187 * ``TestResultFilter`` always forwards ``time:`` events.
188   (Benji York, Brad Crittenden)
189
190 BUG FIXES
191 ~~~~~~~~~
192
193 * Add 'subunit --no-xfail', which will omit expected failures from the subunit
194   stream. (John Arbash Meinel, #623642)
195
196 * Add 'subunit -F/--only-genuine-failures' which sets all of '--no-skips',
197   '--no-xfail', '--no-passthrough, '--no-success', and gives you just the
198   failure stream. (John Arbash Meinel)
199
200 * Python2.6 support was broken by the fixup feature.
201   (Arfrever Frehtes Taifersar Arahesis, #987490)
202
203 * Python3 support regressed in trunk.
204   (Arfrever Frehtes Taifersar Arahesis, #987514)
205
206 * Python3 support was insufficiently robust in detecting unicode streams.
207   (Robert Collins, Arfrever Frehtes Taifersar Arahesis)
208
209 * Tag support has been implemented for TestProtocolClient.
210   (Robert Collins, #518016)
211
212 * Tags can now be filtered. (Jonathan Lange, #664171)
213
214 * Test suite works with latest testtools (but not older ones - formatting
215   changes only). (Robert Collins)
216
217 0.0.7
218 -----
219
220 The Subunit Python test runner ``python -m subunit.run`` can now report the
221 test ids and also filter via a test id list file thanks to improvements in
222 ``testtools.run``. See the testtools manual, or testrepository - a major
223 user of such functionality.
224
225 Additionally the protocol now has a keyword uxsuccess for Unexpected Success
226 reporting. Older parsers will report tests with this status code as 'lost
227 connection'.
228
229 IMPROVEMENTS
230 ~~~~~~~~~~~~
231
232 * Add ``TimeCollapsingDecorator`` which collapses multiple sequential time()
233   calls into just the first and last. (Jonathan Lange)
234
235 * Add ``TagCollapsingDecorator`` which collapses many tags() calls into one
236   where possible. (Jonathan Lange, Robert Collins)
237
238 * Force flush of writes to stdout in c/tests/test_child.
239   (Jelmer Vernooij, #687611)
240
241 * Provisional Python 3.x support.
242   (Robert Collins, Tres Seaver, Martin[gz], #666819)
243
244 * ``subunit.chunked.Decoder`` Python class takes a new ``strict`` option,
245   which defaults to ``True``. When ``False``, the ``Decoder`` will accept
246   incorrect input that is still unambiguous. i.e. subunit will not barf if
247   a \r is missing from the input. (Martin Pool)
248
249 * ``subunit-filter`` preserves the relative ordering of ``time:`` statements,
250   so you can now use filtered streams to gather data about how long it takes
251   to run a test. (Jonathan Lange, #716554)
252
253 * ``subunit-ls`` now handles a stream with time: instructions that start
254   partway through the stream (which may lead to strange times) more gracefully.
255   (Robert Collins, #785954)
256
257 * ``subunit-ls`` should handle the new test outcomes in Python2.7 better.
258   (Robert Collins, #785953)
259
260 * ``TestResultFilter`` now collapses sequential calls to time().
261   (Jonathan Lange, #567150)
262
263 * ``TestResultDecorator.tags()`` now actually works, and is no longer a buggy
264   copy/paste of ``TestResultDecorator.time()``. (Jonathan Lange, #681828)
265
266 * ``TestResultFilter`` now supports a ``fixup_expected_failures``
267   argument. (Jelmer Vernooij, #755241)
268
269 * The ``subunit.run`` Python module supports ``-l`` and ``--load-list`` as
270   per ``testtools.run``. This required a dependency bump due to a small
271   API change in ``testtools``. (Robert Collins)
272
273 * The help for subunit-filter was confusing about the behaviour of ``-f`` /
274   ``--no-failure``. (Robert Collins, #703392)
275
276 * The Python2.7 / testtools addUnexpectedSuccess API is now supported. This
277   required adding a new status code to the protocol. (Robert Collins, #654474)
278
279 CHANGES
280 ~~~~~~~
281
282 * testtools 0.9.11 or newer is new needed (due to the Python 3 support).
283   (Robert Collins)
284
285 0.0.6
286 -----
287
288 This release of subunit fixes a number of unicode related bugs. This depends on
289 testtools 0.9.4 and will not function without it. Thanks to Tres Seaver there
290 is also an optional native setup.py file for use with easy_install and the
291 like.
292
293 BUG FIXES
294 ~~~~~~~~~
295
296 * Be consistent about delivering unicode content to testtools StringException
297   class which has become (appropriately) conservative. (Robert Collins)
298
299 * Fix incorrect reference to subunit_test_failf in c/README.
300   (Brad Hards, #524341)
301
302 * Fix incorrect ordering of tags method parameters in TestResultDecorator. This
303   is purely cosmetic as the parameters are passed down with no interpretation.
304   (Robert Collins, #537611)
305
306 * Old style tracebacks with no encoding info are now treated as UTF8 rather
307   than some-random-codec-like-ascii. (Robert Collins)
308
309 * On windows, ProtocolTestCase and TestProtocolClient will set their streams to
310   binary mode by calling into msvcrt; this avoids having their input or output
311   mangled by the default line ending translation on that platform.
312   (Robert Collins, Martin [gz], #579296)
313
314 IMPROVEMENTS
315 ~~~~~~~~~~~~
316
317 * Subunit now has a setup.py for python deployments that are not using
318   distribution packages. (Tres Seaver, #538181)
319
320 * Subunit now supports test discovery by building on the testtools support for
321   it. You can take advantage of it with "python -m subunit.run discover [path]"
322   and see "python -m subunit.run discover --help" for more options.
323
324 * Subunit now uses the improved unicode support in testtools when outputting
325   non-details based test information; this should consistently UTF8 encode such
326   strings.
327
328 * The Python TestProtocolClient now flushes output on startTest and stopTest.
329   (Martin [gz]).
330
331
332 0.0.5
333 -----
334
335 BUG FIXES
336 ~~~~~~~~~
337
338 * make check was failing if subunit wasn't installed due to a missing include
339   path for the test program test_child.
340
341 * make distcheck was failing due to a missing $(top_srcdir) rune.
342
343 IMPROVEMENTS
344 ~~~~~~~~~~~~
345
346 * New filter `subunit-notify` that will show a notification window with test 
347   statistics when the test run finishes.
348
349 * subunit.run will now pipe its output to the command in the 
350   SUBUNIT_FORMATTER environment variable, if set.
351
352 0.0.4
353 -----
354
355 BUG FIXES
356 ~~~~~~~~~
357
358 * subunit2junitxml -f required a value, this is now fixed and -f acts as a
359   boolean switch with no parameter.
360
361 * Building with autoconf 2.65 is now supported.
362
363
364 0.0.3
365 -----
366
367   CHANGES:
368   
369     * License change, by unanimous agreement of contributors to BSD/Apache
370       License Version 2.0. This makes Subunit compatible with more testing
371       frameworks.
372
373   IMPROVEMENTS:
374
375     * CPPUnit is now directly supported: subunit builds a cppunit listener
376       ``libcppunit-subunit``. 
377
378     * In the python API ``addExpectedFailure`` and ``addUnexpectedSuccess``
379       from python 2.7/3.1 are now supported. ``addExpectedFailure`` is
380       serialised as ``xfail``, and ``addUnexpectedSuccess`` as ``success``.
381       The ``ProtocolTestCase`` parser now calls outcomes using an extended
382       API that permits attaching arbitrary MIME resources such as text files
383       log entries and so on. This extended API is being developed with the
384       Python testing community, and is in flux. ``TestResult`` objects that
385       do not support the API will be detected and transparently downgraded
386       back to the regular Python unittest API.
387
388     * INSTALLDIRS can be set to control the perl MakeMaker 'INSTALLDIRS'
389       viarable when installing.
390
391     * Multipart test outcomes are tentatively supported; the exact protocol
392       for them, both serialiser and object is not yet finalised. Testers and
393       early adopters are sought. As part of this and also in an attempt to
394       provider a more precise focus on the wire protocol and toolchain, 
395       Subunit now depends on testtools (http://launchpad.net/testtools)
396       release 0.9.0 or newer.
397
398     * subunit2junitxml supports a new option, --forward which causes it
399       to forward the raw subunit stream in a similar manner to tee. This
400       is used with the -o option to both write a xml report and get some
401       other subunit filter to process the stream.
402
403     * The C library now has ``subunit_test_skip``.
404
405   BUG FIXES:
406
407     * Install progress_model.py correctly.
408
409     * Non-gcc builds will no longer try to use gcc specific flags.
410       (Thanks trondn-norbye)
411
412   API CHANGES:
413
414   INTERNALS:
415
416 0.0.2
417 -----
418
419   CHANGES:
420
421   IMPROVEMENTS:
422
423     * A number of filters now support ``--no-passthrough`` to cause all
424       non-subunit content to be discarded. This is useful when precise control
425       over what is output is required - such as with subunit2junitxml.
426
427     * A small perl parser is now included, and a new ``subunit-diff`` tool
428       using that is included. (Jelmer Vernooij)
429
430     * Subunit streams can now include optional, incremental lookahead
431       information about progress. This allows reporters to make estimates
432       about completion, when such information is available. See the README
433       under ``progress`` for more details.
434
435     * ``subunit-filter`` now supports regex filtering via ``--with`` and
436       ``without`` options. (Martin Pool)
437
438     * ``subunit2gtk`` has been added, a filter that shows a GTK summary of a
439       test stream.
440
441     * ``subunit2pyunit`` has a --progress flag which will cause the bzrlib
442       test reporter to be used, which has a textual progress bar. This requires
443       a recent bzrlib as a minor bugfix was required in bzrlib to support this.
444
445     * ``subunit2junitxml`` has been added. This filter converts a subunit
446       stream to a single JUnit style XML stream using the pyjunitxml
447       python library.
448
449     * The shell functions support skipping via ``subunit_skip_test`` now.
450
451   BUG FIXES:
452
453     * ``xfail`` outcomes are now passed to python TestResult's via
454       addExpectedFailure if it is present on the TestResult. Python 2.6 and
455       earlier which do not have this function will have ``xfail`` outcomes
456       passed through as success outcomes as earlier versions of subunit did.
457
458   API CHANGES:
459
460     * tags are no longer passed around in python via the ``TestCase.tags``
461       attribute. Instead ``TestResult.tags(new_tags, gone_tags)`` is called,
462       and like in the protocol, if called while a test is active only applies
463       to that test. (Robert Collins)
464
465     * ``TestResultFilter`` takes a new optional constructor parameter 
466       ``filter_predicate``.  (Martin Pool)
467
468     * When a progress: directive is encountered in a subunit stream, the
469       python bindings now call the ``progress(offset, whence)`` method on
470       ``TestResult``.
471
472     * When a time: directive is encountered in a subunit stream, the python
473       bindings now call the ``time(seconds)`` method on ``TestResult``.
474
475   INTERNALS:
476
477     * (python) Added ``subunit.test_results.AutoTimingTestResultDecorator``. Most
478       users of subunit will want to wrap their ``TestProtocolClient`` objects
479       in this decorator to get test timing data for performance analysis.
480
481     * (python) ExecTestCase supports passing arguments to test scripts.
482
483     * (python) New helper ``subunit.test_results.HookedTestResultDecorator``
484       which can be used to call some code on every event, without having to
485       implement all the event methods.
486
487     * (python) ``TestProtocolClient.time(a_datetime)`` has been added which
488       causes a timestamp to be output to the stream.