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