DebugClients/Python/coverage/doc/CHANGES.txt

changeset 4491
0d8612e24fef
parent 4489
d0d6e4ad31bd
equal deleted inserted replaced
4487:4ba7a8ab24f2 4491:0d8612e24fef
1 .. Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
2 .. For details: https://bitbucket.org/ned/coveragepy/src/default/NOTICE.txt
3
4 ==============================
5 Change history for Coverage.py
6 ==============================
7
8
9 Version 4.0 --- 20 September 2015
10 ---------------------------------
11
12 No changes from 4.0b3
13
14
15 Version 4.0b3 --- 7 September 2015
16 ----------------------------------
17
18 - Reporting on an unmeasured file would fail with a traceback. This is now
19 fixed, closing `issue 403`_.
20
21 - The Jenkins ShiningPanda plugin looks for an obsolete file name to find the
22 HTML reports to publish, so it was failing under coverage.py 4.0. Now we
23 create that file if we are running under Jenkins, to keep things working
24 smoothly. `issue 404`_.
25
26 - Kits used to include tests and docs, but didn't install them anywhere, or
27 provide all of the supporting tools to make them useful. Kits no longer
28 include tests and docs. If you were using them from the older packages, get
29 in touch and help me understand how.
30
31 .. _issue 403: https://bitbucket.org/ned/coveragepy/issues/403/hasherupdate-fails-with-typeerror-nonetype
32 .. _issue 404: https://bitbucket.org/ned/coveragepy/issues/404/shiningpanda-jenkins-plugin-cant-find-html
33
34
35
36 Version 4.0b2 --- 22 August 2015
37 --------------------------------
38
39 - 4.0b1 broke --append creating new data files. This is now fixed, closing
40 `issue 392`_.
41
42 - ``py.test --cov`` can write empty data, then touch files due to ``--source``,
43 which made coverage.py mistakenly force the data file to record lines instead
44 of arcs. This would lead to a "Can't combine line data with arc data" error
45 message. This is now fixed, and changed some method names in the
46 CoverageData interface. Fixes `issue 399`_.
47
48 - `CoverageData.read_fileobj` and `CoverageData.write_fileobj` replace the
49 `.read` and `.write` methods, and are now properly inverses of each other.
50
51 - When using ``report --skip-covered``, a message will now be included in the
52 report output indicating how many files were skipped, and if all files are
53 skipped, coverage.py won't accidentally scold you for having no data to
54 report. Thanks, Krystian Kichewko.
55
56 - A new conversion utility has been added: ``python -m coverage.pickle2json``
57 will convert v3.x pickle data files to v4.x JSON data files. Thanks,
58 Alexander Todorov. Closes `issue 395`_.
59
60 - A new version identifier is available, `coverage.version_info`, a plain tuple
61 of values similar to `sys.version_info`_.
62
63 .. _issue 392: https://bitbucket.org/ned/coveragepy/issues/392/run-append-doesnt-create-coverage-file
64 .. _issue 395: https://bitbucket.org/ned/coveragepy/issues/395/rfe-read-pickled-files-as-well-for
65 .. _issue 399: https://bitbucket.org/ned/coveragepy/issues/399/coverageexception-cant-combine-line-data
66 .. _sys.version_info: https://docs.python.org/3/library/sys.html#sys.version_info
67
68
69 Version 4.0b1 --- 2 August 2015
70 -------------------------------
71
72 - Coverage.py is now licensed under the Apache 2.0 license. See NOTICE.txt for
73 details. Closes `issue 313`_.
74
75 - The data storage has been completely revamped. The data file is now
76 JSON-based instead of a pickle, closing `issue 236`_. The `CoverageData`
77 class is now a public supported documented API to the data file.
78
79 - A new configuration option, ``[run] note``, lets you set a note that will be
80 stored in the `runs` section of the data file. You can use this to annotate
81 the data file with any information you like.
82
83 - Unrecognized configuration options will now print an error message and stop
84 coverage.py. This should help prevent configuration mistakes from passing
85 silently. Finishes `issue 386`_.
86
87 - In parallel mode, ``coverage erase`` will now delete all of the data files,
88 fixing `issue 262`_.
89
90 - Coverage.py now accepts a directory name for ``coverage run`` and will run a
91 ``__main__.py`` found there, just like Python will. Fixes `issue 252`_.
92 Thanks, Dmitry Trofimov.
93
94 - The XML report now includes a ``missing-branches`` attribute. Thanks, Steve
95 Peak. This is not a part of the Cobertura DTD, so the XML report no longer
96 references the DTD.
97
98 - Missing branches in the HTML report now have a bit more information in the
99 right-hand annotations. Hopefully this will make their meaning clearer.
100
101 - All the reporting functions now behave the same if no data had been
102 collected, exiting with a status code of 1. Fixed ``fail_under`` to be
103 applied even when the report is empty. Thanks, Ionel Cristian Mărieș.
104
105 - Plugins are now initialized differently. Instead of looking for a class
106 called ``Plugin``, coverage.py looks for a function called ``coverage_init``.
107
108 - A file-tracing plugin can now ask to have built-in Python reporting by
109 returning `"python"` from its `file_reporter()` method.
110
111 - Code that was executed with `exec` would be mis-attributed to the file that
112 called it. This is now fixed, closing `issue 380`_.
113
114 - The ability to use item access on `Coverage.config` (introduced in 4.0a2) has
115 been changed to a more explicit `Coverage.get_option` and
116 `Coverage.set_option` API.
117
118 - The ``Coverage.use_cache`` method is no longer supported.
119
120 - The private method ``Coverage._harvest_data`` is now called
121 ``Coverage.get_data``, and returns the ``CoverageData`` containing the
122 collected data.
123
124 - The project is consistently referred to as "coverage.py" throughout the code
125 and the documentation, closing `issue 275`_.
126
127 - Combining data files with an explicit configuration file was broken in 4.0a6,
128 but now works again, closing `issue 385`_.
129
130 - ``coverage combine`` now accepts files as well as directories.
131
132 - The speed is back to 3.7.1 levels, after having slowed down due to plugin
133 support, finishing up `issue 387`_.
134
135 .. _issue 236: https://bitbucket.org/ned/coveragepy/issues/236/pickles-are-bad-and-you-should-feel-bad
136 .. _issue 252: https://bitbucket.org/ned/coveragepy/issues/252/coverage-wont-run-a-program-with
137 .. _issue 262: https://bitbucket.org/ned/coveragepy/issues/262/when-parallel-true-erase-should-erase-all
138 .. _issue 275: https://bitbucket.org/ned/coveragepy/issues/275/refer-consistently-to-project-as-coverage
139 .. _issue 313: https://bitbucket.org/ned/coveragepy/issues/313/add-license-file-containing-2-3-or-4
140 .. _issue 380: https://bitbucket.org/ned/coveragepy/issues/380/code-executed-by-exec-excluded-from
141 .. _issue 385: https://bitbucket.org/ned/coveragepy/issues/385/coverage-combine-doesnt-work-with-rcfile
142 .. _issue 386: https://bitbucket.org/ned/coveragepy/issues/386/error-on-unrecognised-configuration
143 .. _issue 387: https://bitbucket.org/ned/coveragepy/issues/387/performance-degradation-from-371-to-40
144
145 .. 40 issues closed in 4.0 below here
146
147
148 Version 4.0a6 --- 21 June 2015
1 ------------------------------ 149 ------------------------------
2 Change history for Coverage.py 150
3 ------------------------------ 151 - Python 3.5b2 and PyPy 2.6.0 are supported.
4 152
5 3.7.1 -- 13 December 2013 153 - The original module-level function interface to coverage.py is no longer
6 ------------------------- 154 supported. You must now create a ``coverage.Coverage`` object, and use
155 methods on it.
156
157 - The ``coverage combine`` command now accepts any number of directories as
158 arguments, and will combine all the data files from those directories. This
159 means you don't have to copy the files to one directory before combining.
160 Thanks, Christine Lytwynec. Finishes `issue 354`_.
161
162 - Branch coverage couldn't properly handle certain extremely long files. This
163 is now fixed (`issue 359`_).
164
165 - Branch coverage didn't understand yield statements properly. Mickie Betz
166 persisted in pursuing this despite Ned's pessimism. Fixes `issue 308`_ and
167 `issue 324`_.
168
169 - The COVERAGE_DEBUG environment variable can be used to set the ``[run] debug``
170 configuration option to control what internal operations are logged.
171
172 - HTML reports were truncated at formfeed characters. This is now fixed
173 (`issue 360`_). It's always fun when the problem is due to a `bug in the
174 Python standard library <http://bugs.python.org/issue19035>`_.
175
176 - Files with incorrect encoding declaration comments are no longer ignored by
177 the reporting commands, fixing `issue 351`_.
178
179 - HTML reports now include a timestamp in the footer, closing `issue 299`_.
180 Thanks, Conrad Ho.
181
182 - HTML reports now begrudgingly use double-quotes rather than single quotes,
183 because there are "software engineers" out there writing tools that read HTML
184 and somehow have no idea that single quotes exist. Capitulates to the absurd
185 `issue 361`_. Thanks, Jon Chappell.
186
187 - The ``coverage annotate`` command now handles non-ASCII characters properly,
188 closing `issue 363`_. Thanks, Leonardo Pistone.
189
190 - Drive letters on Windows were not normalized correctly, now they are. Thanks,
191 Ionel Cristian Mărieș.
192
193 - Plugin support had some bugs fixed, closing `issue 374`_ and `issue 375`_.
194 Thanks, Stefan Behnel.
195
196 .. _issue 299: https://bitbucket.org/ned/coveragepy/issue/299/inserted-created-on-yyyy-mm-dd-hh-mm-in
197 .. _issue 308: https://bitbucket.org/ned/coveragepy/issue/308/yield-lambda-branch-coverage
198 .. _issue 324: https://bitbucket.org/ned/coveragepy/issue/324/yield-in-loop-confuses-branch-coverage
199 .. _issue 351: https://bitbucket.org/ned/coveragepy/issue/351/files-with-incorrect-encoding-are-ignored
200 .. _issue 354: https://bitbucket.org/ned/coveragepy/issue/354/coverage-combine-should-take-a-list-of
201 .. _issue 359: https://bitbucket.org/ned/coveragepy/issue/359/xml-report-chunk-error
202 .. _issue 360: https://bitbucket.org/ned/coveragepy/issue/360/html-reports-get-confused-by-l-in-the-code
203 .. _issue 361: https://bitbucket.org/ned/coveragepy/issue/361/use-double-quotes-in-html-output-to
204 .. _issue 363: https://bitbucket.org/ned/coveragepy/issue/363/annotate-command-hits-unicode-happy-fun
205 .. _issue 374: https://bitbucket.org/ned/coveragepy/issue/374/c-tracer-lookups-fail-in
206 .. _issue 375: https://bitbucket.org/ned/coveragepy/issue/375/ctracer_handle_return-reads-byte-code
207
208
209 Version 4.0a5 --- 16 February 2015
210 ----------------------------------
211
212 - Plugin support is now implemented in the C tracer instead of the Python
213 tracer. This greatly improves the speed of tracing projects using plugins.
214
215 - Coverage.py now always adds the current directory to sys.path, so that
216 plugins can import files in the current directory (`issue 358`_).
217
218 - If the `config_file` argument to the Coverage constructor is specified as
219 ".coveragerc", it is treated as if it were True. This means setup.cfg is
220 also examined, and a missing file is not considered an error (`issue 357`_).
221
222 - Wildly experimental: support for measuring processes started by the
223 multiprocessing module. To use, set ``--concurrency=multiprocessing``,
224 either on the command line or in the .coveragerc file (`issue 117`_). Thanks,
225 Eduardo Schettino. Currently, this does not work on Windows.
226
227 - A new warning is possible, if a desired file isn't measured because it was
228 imported before coverage.py was started (`issue 353`_).
229
230 - The `coverage.process_startup` function now will start coverage measurement
231 only once, no matter how many times it is called. This fixes problems due
232 to unusual virtualenv configurations (`issue 340`_).
233
234 - Added 3.5.0a1 to the list of supported CPython versions.
235
236 .. _issue 117: https://bitbucket.org/ned/coveragepy/issue/117/enable-coverage-measurement-of-code-run-by
237 .. _issue 340: https://bitbucket.org/ned/coveragepy/issue/340/keyerror-subpy
238 .. _issue 353: https://bitbucket.org/ned/coveragepy/issue/353/40a3-introduces-an-unexpected-third-case
239 .. _issue 357: https://bitbucket.org/ned/coveragepy/issue/357/behavior-changed-when-coveragerc-is
240 .. _issue 358: https://bitbucket.org/ned/coveragepy/issue/358/all-coverage-commands-should-adjust
241
242
243 Version 4.0a4 --- 25 January 2015
244 ---------------------------------
245
246 - Plugins can now provide sys_info for debugging output.
247
248 - Started plugins documentation.
249
250 - Prepared to move the docs to readthedocs.org.
251
252
253 Version 4.0a3 --- 20 January 2015
254 ---------------------------------
255
256 - Reports now use file names with extensions. Previously, a report would
257 describe a/b/c.py as "a/b/c". Now it is shown as "a/b/c.py". This allows
258 for better support of non-Python files, and also fixed `issue 69`_.
259
260 - The XML report now reports each directory as a package again. This was a bad
261 regression, I apologize. This was reported in `issue 235`_, which is now
262 fixed.
263
264 - A new configuration option for the XML report: ``[xml] package_depth``
265 controls which directories are identified as packages in the report.
266 Directories deeper than this depth are not reported as packages.
267 The default is that all directories are reported as packages.
268 Thanks, Lex Berezhny.
269
270 - When looking for the source for a frame, check if the file exists. On
271 Windows, .pyw files are no longer recorded as .py files. Along the way, this
272 fixed `issue 290`_.
273
274 - Empty files are now reported as 100% covered in the XML report, not 0%
275 covered (`issue 345`_).
276
277 - Regexes in the configuration file are now compiled as soon as they are read,
278 to provide error messages earlier (`issue 349`_).
279
280 .. _issue 69: https://bitbucket.org/ned/coveragepy/issue/69/coverage-html-overwrite-files-that-doesnt
281 .. _issue 235: https://bitbucket.org/ned/coveragepy/issue/235/package-name-is-missing-in-xml-report
282 .. _issue 290: https://bitbucket.org/ned/coveragepy/issue/290/running-programmatically-with-pyw-files
283 .. _issue 345: https://bitbucket.org/ned/coveragepy/issue/345/xml-reports-line-rate-0-for-empty-files
284 .. _issue 349: https://bitbucket.org/ned/coveragepy/issue/349/bad-regex-in-config-should-get-an-earlier
285
286
287 Version 4.0a2 --- 14 January 2015
288 ---------------------------------
289
290 - Officially support PyPy 2.4, and PyPy3 2.4. Drop support for
291 CPython 3.2 and older versions of PyPy. The code won't work on CPython 3.2.
292 It will probably still work on older versions of PyPy, but I'm not testing
293 against them.
294
295 - Plugins!
296
297 - The original command line switches (`-x` to run a program, etc) are no
298 longer supported.
299
300 - A new option: `coverage report --skip-covered` will reduce the number of
301 files reported by skipping files with 100% coverage. Thanks, Krystian
302 Kichewko. This means that empty `__init__.py` files will be skipped, since
303 they are 100% covered, closing `issue 315`_.
304
305 - You can now specify the ``--fail-under`` option in the ``.coveragerc`` file
306 as the ``[report] fail_under`` option. This closes `issue 314`_.
307
308 - The ``COVERAGE_OPTIONS`` environment variable is no longer supported. It was
309 a hack for ``--timid`` before configuration files were available.
310
311 - The HTML report now has filtering. Type text into the Filter box on the
312 index page, and only modules with that text in the name will be shown.
313 Thanks, Danny Allen.
314
315 - The textual report and the HTML report used to report partial branches
316 differently for no good reason. Now the text report's "missing branches"
317 column is a "partial branches" column so that both reports show the same
318 numbers. This closes `issue 342`_.
319
320 - If you specify a ``--rcfile`` that cannot be read, you will get an error
321 message. Fixes `issue 343`_.
322
323 - The ``--debug`` switch can now be used on any command.
324
325 - You can now programmatically adjust the configuration of coverage.py by
326 setting items on `Coverage.config` after construction.
327
328 - A module run with ``-m`` can be used as the argument to ``--source``, fixing
329 `issue 328`_. Thanks, Buck Evan.
330
331 - The regex for matching exclusion pragmas has been fixed to allow more kinds
332 of whitespace, fixing `issue 334`_.
333
334 - Made some PyPy-specific tweaks to improve speed under PyPy. Thanks, Alex
335 Gaynor.
336
337 - In some cases, with a source file missing a final newline, coverage.py would
338 count statements incorrectly. This is now fixed, closing `issue 293`_.
339
340 - The status.dat file that HTML reports use to avoid re-creating files that
341 haven't changed is now a JSON file instead of a pickle file. This obviates
342 `issue 287`_ and `issue 237`_.
343
344 .. _issue 237: https://bitbucket.org/ned/coveragepy/issue/237/htmlcov-with-corrupt-statusdat
345 .. _issue 287: https://bitbucket.org/ned/coveragepy/issue/287/htmlpy-doesnt-specify-pickle-protocol
346 .. _issue 293: https://bitbucket.org/ned/coveragepy/issue/293/number-of-statement-detection-wrong-if-no
347 .. _issue 314: https://bitbucket.org/ned/coveragepy/issue/314/fail_under-param-not-working-in-coveragerc
348 .. _issue 315: https://bitbucket.org/ned/coveragepy/issue/315/option-to-omit-empty-files-eg-__init__py
349 .. _issue 328: https://bitbucket.org/ned/coveragepy/issue/328/misbehavior-in-run-source
350 .. _issue 334: https://bitbucket.org/ned/coveragepy/issue/334/pragma-not-recognized-if-tab-character
351 .. _issue 342: https://bitbucket.org/ned/coveragepy/issue/342/console-and-html-coverage-reports-differ
352 .. _issue 343: https://bitbucket.org/ned/coveragepy/issue/343/an-explicitly-named-non-existent-config
353
354
355 Version 4.0a1 --- 27 September 2014
356 -----------------------------------
357
358 - Python versions supported are now CPython 2.6, 2.7, 3.2, 3.3, and 3.4, and
359 PyPy 2.2.
360
361 - Gevent, eventlet, and greenlet are now supported, closing `issue 149`_.
362 The ``concurrency`` setting specifies the concurrency library in use. Huge
363 thanks to Peter Portante for initial implementation, and to Joe Jevnik for
364 the final insight that completed the work.
365
366 - Options are now also read from a setup.cfg file, if any. Sections are
367 prefixed with "coverage:", so the ``[run]`` options will be read from the
368 ``[coverage:run]`` section of setup.cfg. Finishes `issue 304`_.
369
370 - The ``report -m`` command can now show missing branches when reporting on
371 branch coverage. Thanks, Steve Leonard. Closes `issue 230`_.
372
373 - The XML report now contains a <source> element, fixing `issue 94`_. Thanks
374 Stan Hu.
375
376 - The class defined in the coverage module is now called ``Coverage`` instead
377 of ``coverage``, though the old name still works, for backward compatibility.
378
379 - The ``fail-under`` value is now rounded the same as reported results,
380 preventing paradoxical results, fixing `issue 284`_.
381
382 - The XML report will now create the output directory if need be, fixing
383 `issue 285`_. Thanks, Chris Rose.
384
385 - HTML reports no longer raise UnicodeDecodeError if a Python file has
386 undecodable characters, fixing `issue 303`_ and `issue 331`_.
387
388 - The annotate command will now annotate all files, not just ones relative to
389 the current directory, fixing `issue 57`_.
390
391 - The coverage module no longer causes deprecation warnings on Python 3.4 by
392 importing the imp module, fixing `issue 305`_.
393
394 - Encoding declarations in source files are only considered if they are truly
395 comments. Thanks, Anthony Sottile.
396
397 .. _issue 57: https://bitbucket.org/ned/coveragepy/issue/57/annotate-command-fails-to-annotate-many
398 .. _issue 94: https://bitbucket.org/ned/coveragepy/issue/94/coverage-xml-doesnt-produce-sources
399 .. _issue 149: https://bitbucket.org/ned/coveragepy/issue/149/coverage-gevent-looks-broken
400 .. _issue 230: https://bitbucket.org/ned/coveragepy/issue/230/show-line-no-for-missing-branches-in
401 .. _issue 284: https://bitbucket.org/ned/coveragepy/issue/284/fail-under-should-show-more-precision
402 .. _issue 285: https://bitbucket.org/ned/coveragepy/issue/285/xml-report-fails-if-output-file-directory
403 .. _issue 303: https://bitbucket.org/ned/coveragepy/issue/303/unicodedecodeerror
404 .. _issue 304: https://bitbucket.org/ned/coveragepy/issue/304/attempt-to-get-configuration-from-setupcfg
405 .. _issue 305: https://bitbucket.org/ned/coveragepy/issue/305/pendingdeprecationwarning-the-imp-module
406 .. _issue 331: https://bitbucket.org/ned/coveragepy/issue/331/failure-of-encoding-detection-on-python2
407
408
409 Version 3.7.1 --- 13 December 2013
410 ----------------------------------
7 411
8 - Improved the speed of HTML report generation by about 20%. 412 - Improved the speed of HTML report generation by about 20%.
9 413
10 - Fixed the mechanism for finding OS-installed static files for the HTML report 414 - Fixed the mechanism for finding OS-installed static files for the HTML report
11 so that it will actually find OS-installed static files. 415 so that it will actually find OS-installed static files.
12 416
13 417
14 3.7 --- 6 October 2013 418 Version 3.7 --- 6 October 2013
15 ---------------------- 419 ------------------------------
16 420
17 - Added the ``--debug`` switch to ``coverage run``. It accepts a list of 421 - Added the ``--debug`` switch to ``coverage run``. It accepts a list of
18 options indicating the type of internal activity to log to stderr. 422 options indicating the type of internal activity to log to stderr.
19 423
20 - Improved the branch coverage facility, fixing `issue 92`_ and `issue 175`_. 424 - Improved the branch coverage facility, fixing `issue 92`_ and `issue 175`_.
21 425
22 - Running code with ``coverage run -m`` now behaves more like Python does, 426 - Running code with ``coverage run -m`` now behaves more like Python does,
23 setting sys.path properly, which fixes `issue 207`_ and `issue 242`_. 427 setting sys.path properly, which fixes `issue 207`_ and `issue 242`_.
24 428
25 - Coverage can now run .pyc files directly, closing `issue 264`_. 429 - Coverage.py can now run .pyc files directly, closing `issue 264`_.
26 430
27 - Coverage properly supports .pyw files, fixing `issue 261`_. 431 - Coverage.py properly supports .pyw files, fixing `issue 261`_.
28 432
29 - Omitting files within a tree specified with the ``source`` option would 433 - Omitting files within a tree specified with the ``source`` option would
30 cause them to be incorrectly marked as unexecuted, as described in 434 cause them to be incorrectly marked as unexecuted, as described in
31 `issue 218`_. This is now fixed. 435 `issue 218`_. This is now fixed.
32 436
38 (``build/$BUILDNUM/src``). 442 (``build/$BUILDNUM/src``).
39 443
40 - Trying to create an XML report with no files to report on, would cause a 444 - Trying to create an XML report with no files to report on, would cause a
41 ZeroDivideError, but no longer does, fixing `issue 250`_. 445 ZeroDivideError, but no longer does, fixing `issue 250`_.
42 446
43 - When running a threaded program under the Python tracer, coverage no longer 447 - When running a threaded program under the Python tracer, coverage.py no
44 issues a spurious warning about the trace function changing: "Trace function 448 longer issues a spurious warning about the trace function changing: "Trace
45 changed, measurement is likely wrong: None." This fixes `issue 164`_. 449 function changed, measurement is likely wrong: None." This fixes `issue
450 164`_.
46 451
47 - Static files necessary for HTML reports are found in system-installed places, 452 - Static files necessary for HTML reports are found in system-installed places,
48 to ease OS-level packaging of coverage.py. Closes `issue 259`_. 453 to ease OS-level packaging of coverage.py. Closes `issue 259`_.
49 454
50 - Source files with encoding declarations, but a blank first line, were not 455 - Source files with encoding declarations, but a blank first line, were not
97 ``source`` and path aliases. It no longer does. 502 ``source`` and path aliases. It no longer does.
98 503
99 - ``debug sys`` now shows the configuration file path that was read. 504 - ``debug sys`` now shows the configuration file path that was read.
100 505
101 - If an oddly-behaved package claims that code came from an empty-string 506 - If an oddly-behaved package claims that code came from an empty-string
102 filename, coverage.py no longer associates it with the directory name, 507 file name, coverage.py no longer associates it with the directory name,
103 fixing `issue 221`_. 508 fixing `issue 221`_.
104 509
105 .. _issue 80: https://bitbucket.org/ned/coveragepy/issue/80/is-there-a-duck-typing-way-to-know-we-cant 510 .. _issue 80: https://bitbucket.org/ned/coveragepy/issue/80/is-there-a-duck-typing-way-to-know-we-cant
106 .. _issue 221: https://bitbucket.org/ned/coveragepy/issue/221/coveragepy-incompatible-with-pyratemp 511 .. _issue 221: https://bitbucket.org/ned/coveragepy/issue/221/coveragepy-incompatible-with-pyratemp
107 512
129 ``--title`` switch on the command line, or via the API. 534 ``--title`` switch on the command line, or via the API.
130 535
131 - Configuration files now support substitution of environment variables, using 536 - Configuration files now support substitution of environment variables, using
132 syntax like ``${WORD}``. Closes `issue 97`_. 537 syntax like ``${WORD}``. Closes `issue 97`_.
133 538
134 - Embarrassingly, the `[xml] output=` setting in the .coveragerc file simply 539 - Embarrassingly, the ``[xml] output=`` setting in the .coveragerc file simply
135 didn't work. Now it does. 540 didn't work. Now it does.
136 541
137 - The XML report now consistently uses filenames for the filename attribute, 542 - The XML report now consistently uses file names for the file name attribute,
138 rather than sometimes using module names. Fixes `issue 67`_. 543 rather than sometimes using module names. Fixes `issue 67`_.
139 Thanks, Marcus Cobden. 544 Thanks, Marcus Cobden.
140 545
141 - Coverage percentage metrics are now computed slightly differently under 546 - Coverage percentage metrics are now computed slightly differently under
142 branch coverage. This means that completely unexecuted files will now 547 branch coverage. This means that completely unexecuted files will now
173 - If `coverage xml` fails because there is no data to report, it used to 578 - If `coverage xml` fails because there is no data to report, it used to
174 create a zero-length XML file. Now it doesn't, fixing `issue 210`_. 579 create a zero-length XML file. Now it doesn't, fixing `issue 210`_.
175 580
176 - Jython files now work with the ``--source`` option, fixing `issue 100`_. 581 - Jython files now work with the ``--source`` option, fixing `issue 100`_.
177 582
178 - Running coverage under a debugger is unlikely to work, but it shouldn't fail 583 - Running coverage.py under a debugger is unlikely to work, but it shouldn't
179 with "TypeError: 'NoneType' object is not iterable". Fixes `issue 201`_. 584 fail with "TypeError: 'NoneType' object is not iterable". Fixes `issue
585 201`_.
180 586
181 - On some Linux distributions, when installed with the OS package manager, 587 - On some Linux distributions, when installed with the OS package manager,
182 coverage.py would report its own code as part of the results. Now it won't, 588 coverage.py would report its own code as part of the results. Now it won't,
183 fixing `issue 214`_, though this will take some time to be repackaged by the 589 fixing `issue 214`_, though this will take some time to be repackaged by the
184 operating systems. 590 operating systems.
185 591
186 - Docstrings for the legacy singleton methods are more helpful. Thanks Marius 592 - Docstrings for the legacy singleton methods are more helpful. Thanks Marius
187 Gedminas. Closes `issue 205`_. 593 Gedminas. Closes `issue 205`_.
188 594
189 - The pydoc tool can now show docmentation for the class `coverage.coverage`. 595 - The pydoc tool can now show documentation for the class `coverage.coverage`.
190 Closes `issue 206`_. 596 Closes `issue 206`_.
191 597
192 - Added a page to the docs about contributing to coverage.py, closing 598 - Added a page to the docs about contributing to coverage.py, closing
193 `issue 171`_. 599 `issue 171`_.
194 600
196 ``'NoneType' object has no attribute 'isabs'``. It no longer does, 602 ``'NoneType' object has no attribute 'isabs'``. It no longer does,
197 so kiss `issue 153`_ goodbye. 603 so kiss `issue 153`_ goodbye.
198 604
199 .. _issue 60: https://bitbucket.org/ned/coveragepy/issue/60/incorrect-path-to-orphaned-pyc-files 605 .. _issue 60: https://bitbucket.org/ned/coveragepy/issue/60/incorrect-path-to-orphaned-pyc-files
200 .. _issue 67: https://bitbucket.org/ned/coveragepy/issue/67/xml-report-filenames-may-be-generated 606 .. _issue 67: https://bitbucket.org/ned/coveragepy/issue/67/xml-report-filenames-may-be-generated
201 .. _issue 82: https://bitbucket.org/ned/coveragepy/issue/82/tokenerror-when-generating-html-report
202 .. _issue 89: https://bitbucket.org/ned/coveragepy/issue/89/on-windows-all-packages-are-reported-in 607 .. _issue 89: https://bitbucket.org/ned/coveragepy/issue/89/on-windows-all-packages-are-reported-in
203 .. _issue 97: https://bitbucket.org/ned/coveragepy/issue/97/allow-environment-variables-to-be 608 .. _issue 97: https://bitbucket.org/ned/coveragepy/issue/97/allow-environment-variables-to-be
204 .. _issue 100: https://bitbucket.org/ned/coveragepy/issue/100/source-directive-doesnt-work-for-packages 609 .. _issue 100: https://bitbucket.org/ned/coveragepy/issue/100/source-directive-doesnt-work-for-packages
205 .. _issue 111: https://bitbucket.org/ned/coveragepy/issue/111/when-installing-coverage-with-pip-not 610 .. _issue 111: https://bitbucket.org/ned/coveragepy/issue/111/when-installing-coverage-with-pip-not
206 .. _issue 137: https://bitbucket.org/ned/coveragepy/issue/137/provide-docs-with-source-distribution 611 .. _issue 137: https://bitbucket.org/ned/coveragepy/issue/137/provide-docs-with-source-distribution
225 630
226 - Line numbers in the HTML report line up better with the source lines, fixing 631 - Line numbers in the HTML report line up better with the source lines, fixing
227 `issue 197`_, thanks Marius Gedminas. 632 `issue 197`_, thanks Marius Gedminas.
228 633
229 - When specifying a directory as the source= option, the directory itself no 634 - When specifying a directory as the source= option, the directory itself no
230 longer needs to have a ``__init__.py`` file, though its subdirectories do, to 635 longer needs to have a ``__init__.py`` file, though its sub-directories do,
231 be considered as source files. 636 to be considered as source files.
232 637
233 - Files encoded as UTF-8 with a BOM are now properly handled, fixing 638 - Files encoded as UTF-8 with a BOM are now properly handled, fixing
234 `issue 179`_. Thanks, Pablo Carballo. 639 `issue 179`_. Thanks, Pablo Carballo.
235 640
236 - Fixed more cases of non-Python files being reported as Python source, and 641 - Fixed more cases of non-Python files being reported as Python source, and
248 - Try to do a better job of the impossible task of detecting when we can't 653 - Try to do a better job of the impossible task of detecting when we can't
249 build the C extension, fixing `issue 183`_. 654 build the C extension, fixing `issue 183`_.
250 655
251 - Testing is now done with `tox`_, thanks, Marc Abramowitz. 656 - Testing is now done with `tox`_, thanks, Marc Abramowitz.
252 657
253 .. _issue 82: https://bitbucket.org/ned/coveragepy/issue/82/tokenerror-when-generating-html-report
254 .. _issue 147: https://bitbucket.org/ned/coveragepy/issue/147/massive-memory-usage-by-ctracer 658 .. _issue 147: https://bitbucket.org/ned/coveragepy/issue/147/massive-memory-usage-by-ctracer
255 .. _issue 179: https://bitbucket.org/ned/coveragepy/issue/179/htmlreporter-fails-when-source-file-is 659 .. _issue 179: https://bitbucket.org/ned/coveragepy/issue/179/htmlreporter-fails-when-source-file-is
256 .. _issue 183: https://bitbucket.org/ned/coveragepy/issue/183/install-fails-for-python-23 660 .. _issue 183: https://bitbucket.org/ned/coveragepy/issue/183/install-fails-for-python-23
257 .. _issue 194: https://bitbucket.org/ned/coveragepy/issue/194/filelocatorrelative_filename-could-mangle 661 .. _issue 194: https://bitbucket.org/ned/coveragepy/issue/194/filelocatorrelative_filename-could-mangle
258 .. _issue 195: https://bitbucket.org/ned/coveragepy/issue/195/pyo-file-handling-in-codeunit 662 .. _issue 195: https://bitbucket.org/ned/coveragepy/issue/195/pyo-file-handling-in-codeunit
259 .. _issue 197: https://bitbucket.org/ned/coveragepy/issue/197/line-numbers-in-html-report-do-not-align 663 .. _issue 197: https://bitbucket.org/ned/coveragepy/issue/197/line-numbers-in-html-report-do-not-align
260 .. _tox: http://tox.readthedocs.org/ 664 .. _tox: http://tox.readthedocs.org/
261 665
262 666
263
264 Version 3.5.2 --- 4 May 2012 667 Version 3.5.2 --- 4 May 2012
265 ---------------------------- 668 ----------------------------
266 669
267 No changes since 3.5.2.b1 670 No changes since 3.5.2.b1
268 671
272 675
273 - The HTML report has slightly tweaked controls: the buttons at the top of 676 - The HTML report has slightly tweaked controls: the buttons at the top of
274 the page are color-coded to the source lines they affect. 677 the page are color-coded to the source lines they affect.
275 678
276 - Custom CSS can be applied to the HTML report by specifying a CSS file as 679 - Custom CSS can be applied to the HTML report by specifying a CSS file as
277 the extra_css configuration value in the [html] section. 680 the ``extra_css`` configuration value in the ``[html]`` section.
278 681
279 - Source files with custom encodings declared in a comment at the top are now 682 - Source files with custom encodings declared in a comment at the top are now
280 properly handled during reporting on Python 2. Python 3 always handled them 683 properly handled during reporting on Python 2. Python 3 always handled them
281 properly. This fixes `issue 157`_. 684 properly. This fixes `issue 157`_.
282 685
283 - Backup files left behind by editors are no longer collected by the source= 686 - Backup files left behind by editors are no longer collected by the source=
284 option, fixing `issue 168`_. 687 option, fixing `issue 168`_.
285 688
286 - If a file doesn't parse properly as Python, we don't report it as an error 689 - If a file doesn't parse properly as Python, we don't report it as an error
287 if the filename seems like maybe it wasn't meant to be Python. This is a 690 if the file name seems like maybe it wasn't meant to be Python. This is a
288 pragmatic fix for `issue 82`_. 691 pragmatic fix for `issue 82`_.
289 692
290 - The ``-m`` switch on ``coverage report``, which includes missing line numbers 693 - The ``-m`` switch on ``coverage report``, which includes missing line numbers
291 in the summary report, can now be specifed as ``show_missing`` in the 694 in the summary report, can now be specified as ``show_missing`` in the
292 config file. Closes `issue 173`_. 695 config file. Closes `issue 173`_.
293 696
294 - When running a module with ``coverage run -m <modulename>``, certain details 697 - When running a module with ``coverage run -m <modulename>``, certain details
295 of the execution environment weren't the same as for 698 of the execution environment weren't the same as for
296 ``python -m <modulename>``. This had the unfortunate side-effect of making 699 ``python -m <modulename>``. This had the unfortunate side-effect of making
301 status when running ``python -m coverage run ...``. Thanks, JT Olds. 704 status when running ``python -m coverage run ...``. Thanks, JT Olds.
302 705
303 - When installing into pypy, we no longer attempt (and fail) to compile 706 - When installing into pypy, we no longer attempt (and fail) to compile
304 the C tracer function, closing `issue 166`_. 707 the C tracer function, closing `issue 166`_.
305 708
306 .. _issue 82: https://bitbucket.org/ned/coveragepy/issue/82/tokenerror-when-generating-html-report
307 .. _issue 142: https://bitbucket.org/ned/coveragepy/issue/142/executing-python-file-syspath-is-replaced 709 .. _issue 142: https://bitbucket.org/ned/coveragepy/issue/142/executing-python-file-syspath-is-replaced
308 .. _issue 155: https://bitbucket.org/ned/coveragepy/issue/155/cant-use-coverage-run-m-unittest-discover 710 .. _issue 155: https://bitbucket.org/ned/coveragepy/issue/155/cant-use-coverage-run-m-unittest-discover
309 .. _issue 157: https://bitbucket.org/ned/coveragepy/issue/157/chokes-on-source-files-with-non-utf-8 711 .. _issue 157: https://bitbucket.org/ned/coveragepy/issue/157/chokes-on-source-files-with-non-utf-8
310 .. _issue 166: https://bitbucket.org/ned/coveragepy/issue/166/dont-try-to-compile-c-extension-on-pypy 712 .. _issue 166: https://bitbucket.org/ned/coveragepy/issue/166/dont-try-to-compile-c-extension-on-pypy
311 .. _issue 168: https://bitbucket.org/ned/coveragepy/issue/168/dont-be-alarmed-by-emacs-droppings 713 .. _issue 168: https://bitbucket.org/ned/coveragepy/issue/168/dont-be-alarmed-by-emacs-droppings
321 723
322 724
323 Version 3.5.1b1 --- 28 August 2011 725 Version 3.5.1b1 --- 28 August 2011
324 ---------------------------------- 726 ----------------------------------
325 727
326 - When combining data files from parallel runs, you can now instruct coverage 728 - When combining data files from parallel runs, you can now instruct
327 about which directories are equivalent on different machines. A ``[paths]`` 729 coverage.py about which directories are equivalent on different machines. A
328 section in the configuration file lists paths that are to be considered 730 ``[paths]`` section in the configuration file lists paths that are to be
329 equivalent. Finishes `issue 17`_. 731 considered equivalent. Finishes `issue 17`_.
330 732
331 - for-else constructs are understood better, and don't cause erroneous partial 733 - for-else constructs are understood better, and don't cause erroneous partial
332 branch warnings. Fixes `issue 122`_. 734 branch warnings. Fixes `issue 122`_.
333 735
334 - Branch coverage for ``with`` statements is improved, fixing `issue 128`_. 736 - Branch coverage for ``with`` statements is improved, fixing `issue 128`_.
337 different than the number reported on the individual file pages. This is 739 different than the number reported on the individual file pages. This is
338 now fixed. 740 now fixed.
339 741
340 - An explicit include directive to measure files in the Python installation 742 - An explicit include directive to measure files in the Python installation
341 wouldn't work because of the standard library exclusion. Now the include 743 wouldn't work because of the standard library exclusion. Now the include
342 directive takes precendence, and the files will be measured. Fixes 744 directive takes precedence, and the files will be measured. Fixes
343 `issue 138`_. 745 `issue 138`_.
344 746
345 - The HTML report now handles Unicode characters in Python source files 747 - The HTML report now handles Unicode characters in Python source files
346 properly. This fixes `issue 124`_ and `issue 144`_. Thanks, Devin 748 properly. This fixes `issue 124`_ and `issue 144`_. Thanks, Devin
347 Jeanpierre. 749 Jeanpierre.
348 750
349 - In order to help the core developers measure the test coverage of the 751 - In order to help the core developers measure the test coverage of the
350 standard library, Brandon Rhodes devised an aggressive hack to trick Python 752 standard library, Brandon Rhodes devised an aggressive hack to trick Python
351 into running some coverage code before anything else in the process. 753 into running some coverage.py code before anything else in the process.
352 See the coverage/fullcoverage directory if you are interested. 754 See the coverage/fullcoverage directory if you are interested.
353 755
354 .. _issue 17: http://bitbucket.org/ned/coveragepy/issue/17/support-combining-coverage-data-from 756 .. _issue 17: http://bitbucket.org/ned/coveragepy/issue/17/support-combining-coverage-data-from
355 .. _issue 122: http://bitbucket.org/ned/coveragepy/issue/122/for-else-always-reports-missing-branch 757 .. _issue 122: http://bitbucket.org/ned/coveragepy/issue/122/for-else-always-reports-missing-branch
356 .. _issue 124: http://bitbucket.org/ned/coveragepy/issue/124/no-arbitrary-unicode-in-html-reports-in 758 .. _issue 124: http://bitbucket.org/ned/coveragepy/issue/124/no-arbitrary-unicode-in-html-reports-in
493 895
494 - BACKWARD INCOMPATIBILITY: the ``--omit`` and ``--include`` switches now take 896 - BACKWARD INCOMPATIBILITY: the ``--omit`` and ``--include`` switches now take
495 file patterns rather than file prefixes, closing `issue 34`_ and `issue 36`_. 897 file patterns rather than file prefixes, closing `issue 34`_ and `issue 36`_.
496 898
497 - BACKWARD INCOMPATIBILITY: the `omit_prefixes` argument is gone throughout 899 - BACKWARD INCOMPATIBILITY: the `omit_prefixes` argument is gone throughout
498 coverage.py, replaced with `omit`, a list of filename patterns suitable for 900 coverage.py, replaced with `omit`, a list of file name patterns suitable for
499 `fnmatch`. A parallel argument `include` controls what files are included. 901 `fnmatch`. A parallel argument `include` controls what files are included.
500 902
501 - The run command now has a ``--source`` switch, a list of directories or 903 - The run command now has a ``--source`` switch, a list of directories or
502 module names. If provided, coverage.py will only measure execution in those 904 module names. If provided, coverage.py will only measure execution in those
503 source files. 905 source files.
534 936
535 - Programs that call ``os.fork`` will properly collect data from both the child 937 - Programs that call ``os.fork`` will properly collect data from both the child
536 and parent processes. Use ``coverage run -p`` to get two data files that can 938 and parent processes. Use ``coverage run -p`` to get two data files that can
537 be combined with ``coverage combine``. Fixes `issue 56`_. 939 be combined with ``coverage combine``. Fixes `issue 56`_.
538 940
539 - Coverage is now runnable as a module: ``python -m coverage``. Thanks, 941 - Coverage.py is now runnable as a module: ``python -m coverage``. Thanks,
540 Brett Cannon. 942 Brett Cannon.
541 943
542 - When measuring code running in a virtualenv, most of the system library was 944 - When measuring code running in a virtualenv, most of the system library was
543 being measured when it shouldn't have been. This is now fixed. 945 being measured when it shouldn't have been. This is now fixed.
544 946
545 - Doctest text files are no longer recorded in the coverage data, since they 947 - Doctest text files are no longer recorded in the coverage data, since they
546 can't be reported anyway. Fixes `issue 52`_ and `issue 61`_. 948 can't be reported anyway. Fixes `issue 52`_ and `issue 61`_.
547 949
548 - Jinja HTML templates compile into Python code using the HTML filename, 950 - Jinja HTML templates compile into Python code using the HTML file name,
549 which confused coverage.py. Now these files are no longer traced, fixing 951 which confused coverage.py. Now these files are no longer traced, fixing
550 `issue 82`_. 952 `issue 82`_.
551 953
552 - Source files can have more than one dot in them (foo.test.py), and will be 954 - Source files can have more than one dot in them (foo.test.py), and will be
553 treated properly while reporting. Fixes `issue 46`_. 955 treated properly while reporting. Fixes `issue 46`_.
755 1157
756 - On Python 2.3, coverage.py could mis-measure code with exceptions being 1158 - On Python 2.3, coverage.py could mis-measure code with exceptions being
757 raised. This is now fixed. 1159 raised. This is now fixed.
758 1160
759 - The coverage.py code itself will now not be measured by coverage.py, and no 1161 - The coverage.py code itself will now not be measured by coverage.py, and no
760 coverage modules will be mentioned in the nose --with-cover plug-in. Fixed 1162 coverage.py modules will be mentioned in the nose --with-cover plug-in.
761 `issue 8`_. 1163 Fixed `issue 8`_.
762 1164
763 - When running source files, coverage.py now opens them in universal newline 1165 - When running source files, coverage.py now opens them in universal newline
764 mode just like Python does. This lets it run Windows files on Mac, for 1166 mode just like Python does. This lets it run Windows files on Mac, for
765 example. 1167 example.
766 1168
835 Version 3.0b1 --- 7 March 2009 1237 Version 3.0b1 --- 7 March 2009
836 ------------------------------ 1238 ------------------------------
837 1239
838 Major overhaul. 1240 Major overhaul.
839 1241
840 - Coverage is now a package rather than a module. Functionality has been split 1242 - Coverage.py is now a package rather than a module. Functionality has been
841 into classes. 1243 split into classes.
842 1244
843 - The trace function is implemented in C for speed. Coverage runs are now 1245 - The trace function is implemented in C for speed. Coverage.py runs are now
844 much faster. Thanks to David Christian for productive micro-sprints and 1246 much faster. Thanks to David Christian for productive micro-sprints and
845 other encouragement. 1247 other encouragement.
846 1248
847 - Executable lines are identified by reading the line number tables in the 1249 - Executable lines are identified by reading the line number tables in the
848 compiled code, removing a great deal of complicated analysis code. 1250 compiled code, removing a great deal of complicated analysis code.
850 - Precisely which lines are considered executable has changed in some cases. 1252 - Precisely which lines are considered executable has changed in some cases.
851 Therefore, your coverage stats may also change slightly. 1253 Therefore, your coverage stats may also change slightly.
852 1254
853 - The singleton coverage object is only created if the module-level functions 1255 - The singleton coverage object is only created if the module-level functions
854 are used. This maintains the old interface while allowing better 1256 are used. This maintains the old interface while allowing better
855 programmatic use of Coverage. 1257 programmatic use of Coverage.py.
856 1258
857 - The minimum supported Python version is 2.3. 1259 - The minimum supported Python version is 2.3.
858 1260
859 1261
860 Version 2.85 --- 14 September 2008 1262 Version 2.85 --- 14 September 2008
948 Fuzzey. 1350 Fuzzey.
949 1351
950 - Add a file argument to report so that reports can be captured to a different 1352 - Add a file argument to report so that reports can be captured to a different
951 destination. 1353 destination.
952 1354
953 - coverage.py can now measure itself. 1355 - Coverage.py can now measure itself.
954 1356
955 - Adapted Greg Rogers' patch for using relative file names, and sorting and 1357 - Adapted Greg Rogers' patch for using relative file names, and sorting and
956 omitting files to report on. 1358 omitting files to report on.
957 1359
958 1360

eric ide

mercurial