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