* Python3 support regressed in trunk.
[third_party/subunit] / NEWS
1 ---------------------
2 subunit release notes
3 ---------------------
4
5 NEXT (In development)
6 ---------------------
7
8 IMPROVEMENTS
9 ~~~~~~~~~~~~
10
11 * Perl module now correctly outputs "failure" instead of "fail".  (Stewart Smith)
12
13 * Shell functions now output timestamps. (Stewart Smith, Robert Collins)
14
15 * 'subunit2csv' script that converts subunit output to CSV format.
16   (Jonathan Lange)
17
18 * ``TagCollapsingDecorator`` now correctly distinguishes between local and
19   global tags.  (Jonathan Lange)
20
21 * ``TestResultFilter`` always forwards ``time:`` events.
22   (Benji York, Brad Crittenden)
23
24 BUG FIXES
25 ~~~~~~~~~
26
27 * Add 'subunit --no-xfail', which will omit expected failures from the subunit
28   stream. (John Arbash Meinel, #623642)
29
30 * Add 'subunit -F/--only-genuine-failures' which sets all of '--no-skips',
31   '--no-xfail', '--no-passthrough, '--no-success', and gives you just the
32   failure stream. (John Arbash Meinel)
33
34 * Python3 support regressed in trunk.
35   (Arfrever Frehtes Taifersar Arahesis, #987514)
36
37 * Tag support has been implemented for TestProtocolClient.
38   (Robert Collins, #518016)
39
40 * Tags can now be filtered. (Jonathan Lange, #664171)
41
42 * Test suite works with latest testtools (but not older ones - formatting
43   changes only). (Robert Collins)
44
45 0.0.7
46 -----
47
48 The Subunit Python test runner ``python -m subunit.run`` can now report the
49 test ids and also filter via a test id list file thanks to improvements in
50 ``testtools.run``. See the testtools manual, or testrepository - a major
51 user of such functionality.
52
53 Additionally the protocol now has a keyword uxsuccess for Unexpected Success
54 reporting. Older parsers will report tests with this status code as 'lost
55 connection'.
56
57 IMPROVEMENTS
58 ~~~~~~~~~~~~
59
60 * Add ``TimeCollapsingDecorator`` which collapses multiple sequential time()
61   calls into just the first and last. (Jonathan Lange)
62
63 * Add ``TagCollapsingDecorator`` which collapses many tags() calls into one
64   where possible. (Jonathan Lange, Robert Collins)
65
66 * Force flush of writes to stdout in c/tests/test_child.
67   (Jelmer Vernooij, #687611)
68
69 * Provisional Python 3.x support.
70   (Robert Collins, Tres Seaver, Martin[gz], #666819)
71
72 * ``subunit.chunked.Decoder`` Python class takes a new ``strict`` option,
73   which defaults to ``True``. When ``False``, the ``Decoder`` will accept
74   incorrect input that is still unambiguous. i.e. subunit will not barf if
75   a \r is missing from the input. (Martin Pool)
76
77 * ``subunit-filter`` preserves the relative ordering of ``time:`` statements,
78   so you can now use filtered streams to gather data about how long it takes
79   to run a test. (Jonathan Lange, #716554)
80
81 * ``subunit-ls`` now handles a stream with time: instructions that start
82   partway through the stream (which may lead to strange times) more gracefully.
83   (Robert Collins, #785954)
84
85 * ``subunit-ls`` should handle the new test outcomes in Python2.7 better.
86   (Robert Collins, #785953)
87
88 * ``TestResultFilter`` now collapses sequential calls to time().
89   (Jonathan Lange, #567150)
90
91 * ``TestResultDecorator.tags()`` now actually works, and is no longer a buggy
92   copy/paste of ``TestResultDecorator.time()``. (Jonathan Lange, #681828)
93
94 * ``TestResultFilter`` now supports a ``fixup_expected_failures``
95   argument. (Jelmer Vernooij, #755241)
96
97 * The ``subunit.run`` Python module supports ``-l`` and ``--load-list`` as
98   per ``testtools.run``. This required a dependency bump due to a small
99   API change in ``testtools``. (Robert Collins)
100
101 * The help for subunit-filter was confusing about the behaviour of ``-f`` /
102   ``--no-failure``. (Robert Collins, #703392)
103
104 * The Python2.7 / testtools addUnexpectedSuccess API is now supported. This
105   required adding a new status code to the protocol. (Robert Collins, #654474)
106
107 CHANGES
108 ~~~~~~~
109
110 * testtools 0.9.11 or newer is new needed (due to the Python 3 support).
111   (Robert Collins)
112
113 0.0.6
114 -----
115
116 This release of subunit fixes a number of unicode related bugs. This depends on
117 testtools 0.9.4 and will not function without it. Thanks to Tres Seaver there
118 is also an optional native setup.py file for use with easy_install and the
119 like.
120
121 BUG FIXES
122 ~~~~~~~~~
123
124 * Be consistent about delivering unicode content to testtools StringException
125   class which has become (appropriately) conservative. (Robert Collins)
126
127 * Fix incorrect reference to subunit_test_failf in c/README.
128   (Brad Hards, #524341)
129
130 * Fix incorrect ordering of tags method parameters in TestResultDecorator. This
131   is purely cosmetic as the parameters are passed down with no interpretation.
132   (Robert Collins, #537611)
133
134 * Old style tracebacks with no encoding info are now treated as UTF8 rather
135   than some-random-codec-like-ascii. (Robert Collins)
136
137 * On windows, ProtocolTestCase and TestProtocolClient will set their streams to
138   binary mode by calling into msvcrt; this avoids having their input or output
139   mangled by the default line ending translation on that platform.
140   (Robert Collins, Martin [gz], #579296)
141
142 IMPROVEMENTS
143 ~~~~~~~~~~~~
144
145 * Subunit now has a setup.py for python deployments that are not using
146   distribution packages. (Tres Seaver, #538181)
147
148 * Subunit now supports test discovery by building on the testtools support for
149   it. You can take advantage of it with "python -m subunit.run discover [path]"
150   and see "python -m subunit.run discover --help" for more options.
151
152 * Subunit now uses the improved unicode support in testtools when outputting
153   non-details based test information; this should consistently UTF8 encode such
154   strings.
155
156 * The Python TestProtocolClient now flushes output on startTest and stopTest.
157   (Martin [gz]).
158
159
160 0.0.5
161 -----
162
163 BUG FIXES
164 ~~~~~~~~~
165
166 * make check was failing if subunit wasn't installed due to a missing include
167   path for the test program test_child.
168
169 * make distcheck was failing due to a missing $(top_srcdir) rune.
170
171 IMPROVEMENTS
172 ~~~~~~~~~~~~
173
174 * New filter `subunit-notify` that will show a notification window with test 
175   statistics when the test run finishes.
176
177 * subunit.run will now pipe its output to the command in the 
178   SUBUNIT_FORMATTER environment variable, if set.
179
180 0.0.4
181 -----
182
183 BUG FIXES
184 ~~~~~~~~~
185
186 * subunit2junitxml -f required a value, this is now fixed and -f acts as a
187   boolean switch with no parameter.
188
189 * Building with autoconf 2.65 is now supported.
190
191
192 0.0.3
193 -----
194
195   CHANGES:
196   
197     * License change, by unanimous agreement of contributors to BSD/Apache
198       License Version 2.0. This makes Subunit compatible with more testing
199       frameworks.
200
201   IMPROVEMENTS:
202
203     * CPPUnit is now directly supported: subunit builds a cppunit listener
204       ``libcppunit-subunit``. 
205
206     * In the python API ``addExpectedFailure`` and ``addUnexpectedSuccess``
207       from python 2.7/3.1 are now supported. ``addExpectedFailure`` is
208       serialised as ``xfail``, and ``addUnexpectedSuccess`` as ``success``.
209       The ``ProtocolTestCase`` parser now calls outcomes using an extended
210       API that permits attaching arbitrary MIME resources such as text files
211       log entries and so on. This extended API is being developed with the
212       Python testing community, and is in flux. ``TestResult`` objects that
213       do not support the API will be detected and transparently downgraded
214       back to the regular Python unittest API.
215
216     * INSTALLDIRS can be set to control the perl MakeMaker 'INSTALLDIRS'
217       viarable when installing.
218
219     * Multipart test outcomes are tentatively supported; the exact protocol
220       for them, both serialiser and object is not yet finalised. Testers and
221       early adopters are sought. As part of this and also in an attempt to
222       provider a more precise focus on the wire protocol and toolchain, 
223       Subunit now depends on testtools (http://launchpad.net/testtools)
224       release 0.9.0 or newer.
225
226     * subunit2junitxml supports a new option, --forward which causes it
227       to forward the raw subunit stream in a similar manner to tee. This
228       is used with the -o option to both write a xml report and get some
229       other subunit filter to process the stream.
230
231     * The C library now has ``subunit_test_skip``.
232
233   BUG FIXES:
234
235     * Install progress_model.py correctly.
236
237     * Non-gcc builds will no longer try to use gcc specific flags.
238       (Thanks trondn-norbye)
239
240   API CHANGES:
241
242   INTERNALS:
243
244 0.0.2
245 -----
246
247   CHANGES:
248
249   IMPROVEMENTS:
250
251     * A number of filters now support ``--no-passthrough`` to cause all
252       non-subunit content to be discarded. This is useful when precise control
253       over what is output is required - such as with subunit2junitxml.
254
255     * A small perl parser is now included, and a new ``subunit-diff`` tool
256       using that is included. (Jelmer Vernooij)
257
258     * Subunit streams can now include optional, incremental lookahead
259       information about progress. This allows reporters to make estimates
260       about completion, when such information is available. See the README
261       under ``progress`` for more details.
262
263     * ``subunit-filter`` now supports regex filtering via ``--with`` and
264       ``without`` options. (Martin Pool)
265
266     * ``subunit2gtk`` has been added, a filter that shows a GTK summary of a
267       test stream.
268
269     * ``subunit2pyunit`` has a --progress flag which will cause the bzrlib
270       test reporter to be used, which has a textual progress bar. This requires
271       a recent bzrlib as a minor bugfix was required in bzrlib to support this.
272
273     * ``subunit2junitxml`` has been added. This filter converts a subunit
274       stream to a single JUnit style XML stream using the pyjunitxml
275       python library.
276
277     * The shell functions support skipping via ``subunit_skip_test`` now.
278
279   BUG FIXES:
280
281     * ``xfail`` outcomes are now passed to python TestResult's via
282       addExpectedFailure if it is present on the TestResult. Python 2.6 and
283       earlier which do not have this function will have ``xfail`` outcomes
284       passed through as success outcomes as earlier versions of subunit did.
285
286   API CHANGES:
287
288     * tags are no longer passed around in python via the ``TestCase.tags``
289       attribute. Instead ``TestResult.tags(new_tags, gone_tags)`` is called,
290       and like in the protocol, if called while a test is active only applies
291       to that test. (Robert Collins)
292
293     * ``TestResultFilter`` takes a new optional constructor parameter 
294       ``filter_predicate``.  (Martin Pool)
295
296     * When a progress: directive is encountered in a subunit stream, the
297       python bindings now call the ``progress(offset, whence)`` method on
298       ``TestResult``.
299
300     * When a time: directive is encountered in a subunit stream, the python
301       bindings now call the ``time(seconds)`` method on ``TestResult``.
302
303   INTERNALS:
304
305     * (python) Added ``subunit.test_results.AutoTimingTestResultDecorator``. Most
306       users of subunit will want to wrap their ``TestProtocolClient`` objects
307       in this decorator to get test timing data for performance analysis.
308
309     * (python) ExecTestCase supports passing arguments to test scripts.
310
311     * (python) New helper ``subunit.test_results.HookedTestResultDecorator``
312       which can be used to call some code on every event, without having to
313       implement all the event methods.
314
315     * (python) ``TestProtocolClient.time(a_datetime)`` has been added which
316       causes a timestamp to be output to the stream.