| OLD | NEW |
| (Empty) |
| 1 .. _changes: | |
| 2 | |
| 3 ==================================== | |
| 4 Major change history for coverage.py | |
| 5 ==================================== | |
| 6 | |
| 7 :history: 20090524T134300, brand new docs. | |
| 8 :history: 20090613T164000, final touches for 3.0 | |
| 9 :history: 20090706T205000, changes for 3.0.1 | |
| 10 :history: 20091004T170700, changes for 3.1 | |
| 11 :history: 20091128T072200, changes for 3.2 | |
| 12 :history: 20091205T161525, 3.2 final | |
| 13 :history: 20100221T151900, changes for 3.3 | |
| 14 :history: 20100306T181400, changes for 3.3.1 | |
| 15 :history: 20100725T211700, updated for 3.4. | |
| 16 :history: 20100820T151500, updated for 3.4b1 | |
| 17 :history: 20100906T133800, updated for 3.4b2 | |
| 18 :history: 20100919T163400, updated for 3.4 release. | |
| 19 :history: 20110604T214100, updated for 3.5b1 | |
| 20 :history: 20110629T082200, updated for 3.5 | |
| 21 :history: 20110923T081600, updated for 3.5.1 | |
| 22 :history: 20120429T162100, updated for 3.5.2b1 | |
| 23 :history: 20120503T233700, updated for 3.5.2 | |
| 24 :history: 20120929T093100, updated for 3.5.3 | |
| 25 :history: 20121129T060100, updated for 3.6b1. | |
| 26 :history: 20121223T180600, updated for 3.6b2. | |
| 27 :history: 20130105T173500, updated for 3.6 | |
| 28 | |
| 29 | |
| 30 These are the major changes for coverage.py. For a more complete change | |
| 31 history, see the `CHANGES.txt`_ file in the source tree. | |
| 32 | |
| 33 .. _CHANGES.txt: http://bitbucket.org/ned/coveragepy/src/tip/CHANGES.txt | |
| 34 | |
| 35 | |
| 36 Version 3.6 --- 5 January 2013 | |
| 37 ------------------------------ | |
| 38 | |
| 39 Features: | |
| 40 | |
| 41 - The **report**, **html**, and **xml** commands now accept a ``--fail-under`` | |
| 42 switch that indicates in the exit status whether the coverage percentage was | |
| 43 less than a particular value. Closes `issue 139`_. | |
| 44 | |
| 45 - The reporting functions coverage.report(), coverage.html_report(), and | |
| 46 coverage.xml_report() now all return a float, the total percentage covered | |
| 47 measurement. | |
| 48 | |
| 49 - The HTML report's title can now be set in the configuration file, with the | |
| 50 ``--title`` switch on the command line, or via the API. | |
| 51 | |
| 52 - Configuration files now support substitution of environment variables, using | |
| 53 syntax like ``${WORD}``. Closes `issue 97`_. | |
| 54 | |
| 55 Packaging: | |
| 56 | |
| 57 - The C extension is optionally compiled using a different more widely-used | |
| 58 technique, taking another stab at fixing `issue 80`_ once and for all. | |
| 59 | |
| 60 - When installing, now in addition to creating a "coverage" command, two new | |
| 61 aliases are also installed. A "coverage2" or "coverage3" command will be | |
| 62 created, depending on whether you are installing in Python 2.x or 3.x. | |
| 63 A "coverage-X.Y" command will also be created corresponding to your specific | |
| 64 version of Python. Closes `issue 111`_. | |
| 65 | |
| 66 - The coverage.py installer no longer tries to bootstrap setuptools or | |
| 67 Distribute. You must have one of them installed first, as `issue 202`_ | |
| 68 recommended. | |
| 69 | |
| 70 - The coverage.py kit now includes docs (closing `issue 137`_) and tests. | |
| 71 | |
| 72 Docs: | |
| 73 | |
| 74 - Added a page to the docs about :doc:`contributing <contributing>` to | |
| 75 coverage.py, closing `issue 171`_. | |
| 76 | |
| 77 - Added a page to the docs about :doc:`troublesome situations <trouble>`, | |
| 78 closing `issue 226`_. | |
| 79 | |
| 80 - Docstrings for the legacy singleton methods are more helpful. Thanks Marius | |
| 81 Gedminas. Closes `issue 205`_. | |
| 82 | |
| 83 - The pydoc tool can now show docmentation for the class `coverage.coverage`. | |
| 84 Closes `issue 206`_. | |
| 85 | |
| 86 - Added some info to the TODO file, closing `issue 227`_. | |
| 87 | |
| 88 Fixes: | |
| 89 | |
| 90 - Wildcards in ``include=`` and ``omit=`` arguments were not handled properly | |
| 91 in reporting functions, though they were when running. Now they are handled | |
| 92 uniformly, closing `issue 143`_ and `issue 163`_. **NOTE**: it is possible | |
| 93 that your configurations may now be incorrect. If you use ``include`` or | |
| 94 ``omit`` during reporting, whether on the command line, through the API, or | |
| 95 in a configuration file, please check carefully that you were not relying on | |
| 96 the old broken behavior. | |
| 97 | |
| 98 - Embarrassingly, the `[xml] output=` setting in the .coveragerc file simply | |
| 99 didn't work. Now it does. | |
| 100 | |
| 101 - Combining data files would create entries for phantom files if used with | |
| 102 ``source`` and path aliases. It no longer does. | |
| 103 | |
| 104 - ``debug sys`` now shows the configuration file path that was read. | |
| 105 | |
| 106 - If an oddly-behaved package claims that code came from an empty-string | |
| 107 filename, coverage.py no longer associates it with the directory name, | |
| 108 fixing `issue 221`_. | |
| 109 | |
| 110 - The XML report now consistently uses filenames for the filename attribute, | |
| 111 rather than sometimes using module names. Fixes `issue 67`_. | |
| 112 Thanks, Marcus Cobden. | |
| 113 | |
| 114 - Coverage percentage metrics are now computed slightly differently under | |
| 115 branch coverage. This means that completely unexecuted files will now | |
| 116 correctly have 0% coverage, fixing `issue 156`_. This also means that your | |
| 117 total coverage numbers will generally now be lower if you are measuring | |
| 118 branch coverage. | |
| 119 | |
| 120 - On Windows, files are now reported in their correct case, fixing `issue 89`_ | |
| 121 and `issue 203`_. | |
| 122 | |
| 123 - If a file is missing during reporting, the path shown in the error message | |
| 124 is now correct, rather than an incorrect path in the current directory. | |
| 125 Fixes `issue 60`_. | |
| 126 | |
| 127 - Running an HTML report in Python 3 in the same directory as an old Python 2 | |
| 128 HTML report would fail with a UnicodeDecodeError. This issue (`issue 193`_) | |
| 129 is now fixed. | |
| 130 | |
| 131 - Fixed yet another error trying to parse non-Python files as Python, this | |
| 132 time an IndentationError, closing `issue 82`_ for the fourth time... | |
| 133 | |
| 134 - If `coverage xml` fails because there is no data to report, it used to | |
| 135 create a zero-length XML file. Now it doesn't, fixing `issue 210`_. | |
| 136 | |
| 137 - Jython files now work with the ``--source`` option, fixing `issue 100`_. | |
| 138 | |
| 139 - Running coverage under a debugger is unlikely to work, but it shouldn't fail | |
| 140 with "TypeError: 'NoneType' object is not iterable". Fixes `issue 201`_. | |
| 141 | |
| 142 - On some Linux distributions, when installed with the OS package manager, | |
| 143 coverage.py would report its own code as part of the results. Now it won't, | |
| 144 fixing `issue 214`_, though this will take some time to be repackaged by the | |
| 145 operating systems. | |
| 146 | |
| 147 - When coverage.py ended unsuccessfully, it may have reported odd errors like | |
| 148 ``'NoneType' object has no attribute 'isabs'``. It no longer does, | |
| 149 so kiss `issue 153`_ goodbye. | |
| 150 | |
| 151 | |
| 152 .. _issue 60: https://bitbucket.org/ned/coveragepy/issue/60/incorrect-path-to-or
phaned-pyc-files | |
| 153 .. _issue 67: https://bitbucket.org/ned/coveragepy/issue/67/xml-report-filenames
-may-be-generated | |
| 154 .. _issue 80: https://bitbucket.org/ned/coveragepy/issue/80/is-there-a-duck-typi
ng-way-to-know-we-cant | |
| 155 .. _issue 82: https://bitbucket.org/ned/coveragepy/issue/82/tokenerror-when-gene
rating-html-report | |
| 156 .. _issue 89: https://bitbucket.org/ned/coveragepy/issue/89/on-windows-all-packa
ges-are-reported-in | |
| 157 .. _issue 97: https://bitbucket.org/ned/coveragepy/issue/97/allow-environment-va
riables-to-be | |
| 158 .. _issue 100: https://bitbucket.org/ned/coveragepy/issue/100/source-directive-d
oesnt-work-for-packages | |
| 159 .. _issue 111: https://bitbucket.org/ned/coveragepy/issue/111/when-installing-co
verage-with-pip-not | |
| 160 .. _issue 137: https://bitbucket.org/ned/coveragepy/issue/137/provide-docs-with-
source-distribution | |
| 161 .. _issue 139: https://bitbucket.org/ned/coveragepy/issue/139/easy-check-for-a-c
ertain-coverage-in-tests | |
| 162 .. _issue 143: https://bitbucket.org/ned/coveragepy/issue/143/omit-doesnt-seem-t
o-work-in-coverage | |
| 163 .. _issue 153: https://bitbucket.org/ned/coveragepy/issue/153/non-existent-filen
ame-triggers | |
| 164 .. _issue 156: https://bitbucket.org/ned/coveragepy/issue/156/a-completely-unexe
cuted-file-shows-14 | |
| 165 .. _issue 163: https://bitbucket.org/ned/coveragepy/issue/163/problem-with-inclu
de-and-omit-filename | |
| 166 .. _issue 171: https://bitbucket.org/ned/coveragepy/issue/171/how-to-contribute-
and-run-tests | |
| 167 .. _issue 193: https://bitbucket.org/ned/coveragepy/issue/193/unicodedecodeerror
-on-htmlpy | |
| 168 .. _issue 201: https://bitbucket.org/ned/coveragepy/issue/201/coverage-using-dja
ngo-14-with-pydb-on | |
| 169 .. _issue 202: https://bitbucket.org/ned/coveragepy/issue/202/get-rid-of-ez_setu
ppy-and | |
| 170 .. _issue 203: https://bitbucket.org/ned/coveragepy/issue/203/duplicate-filename
s-reported-when-filename | |
| 171 .. _issue 205: https://bitbucket.org/ned/coveragepy/issue/205/make-pydoc-coverag
e-more-friendly | |
| 172 .. _issue 206: https://bitbucket.org/ned/coveragepy/issue/206/pydoc-coveragecove
rage-fails-with-an-error | |
| 173 .. _issue 210: https://bitbucket.org/ned/coveragepy/issue/210/if-theres-no-cover
age-data-coverage-xml | |
| 174 .. _issue 214: https://bitbucket.org/ned/coveragepy/issue/214/coveragepy-measure
s-itself-on-precise | |
| 175 .. _issue 221: https://bitbucket.org/ned/coveragepy/issue/221/coveragepy-incompa
tible-with-pyratemp | |
| 176 .. _issue 226: https://bitbucket.org/ned/coveragepy/issue/226/make-readme-sectio
n-to-describe-when | |
| 177 .. _issue 227: https://bitbucket.org/ned/coveragepy/issue/227/update-todo | |
| 178 | |
| 179 | |
| 180 Version 3.5.3 --- 29 September 2012 | |
| 181 ----------------------------------- | |
| 182 | |
| 183 - Line numbers in the HTML report line up better with the source lines, fixing | |
| 184 `issue 197`_, thanks Marius Gedminas. | |
| 185 | |
| 186 - When specifying a directory as the source= option, the directory itself no | |
| 187 longer needs to have a ``__init__.py`` file, though its subdirectories do, to | |
| 188 be considered as source files. | |
| 189 | |
| 190 - Files encoded as UTF-8 with a BOM are now properly handled, fixing | |
| 191 `issue 179`_. Thanks, Pablo Carballo. | |
| 192 | |
| 193 - Fixed more cases of non-Python files being reported as Python source, and | |
| 194 then not being able to parse them as Python. Closes `issue 82`_ (again). | |
| 195 Thanks, Julian Berman. | |
| 196 | |
| 197 - Fixed memory leaks under Python 3, thanks, Brett Cannon. Closes `issue 147`_. | |
| 198 | |
| 199 - Optimized .pyo files may not have been handled correctly, `issue 195`_. | |
| 200 Thanks, Marius Gedminas. | |
| 201 | |
| 202 - Certain unusually named file paths could have been mangled during reporting, | |
| 203 `issue 194`_. Thanks, Marius Gedminas. | |
| 204 | |
| 205 - Try to do a better job of the impossible task of detecting when we can't | |
| 206 build the C extension, fixing `issue 183`_. | |
| 207 | |
| 208 .. _issue 82: https://bitbucket.org/ned/coveragepy/issue/82/tokenerror-when-gene
rating-html-report | |
| 209 .. _issue 147: https://bitbucket.org/ned/coveragepy/issue/147/massive-memory-usa
ge-by-ctracer | |
| 210 .. _issue 179: https://bitbucket.org/ned/coveragepy/issue/179/htmlreporter-fails
-when-source-file-is | |
| 211 .. _issue 183: https://bitbucket.org/ned/coveragepy/issue/183/install-fails-for-
python-23 | |
| 212 .. _issue 194: https://bitbucket.org/ned/coveragepy/issue/194/filelocatorrelativ
e_filename-could-mangle | |
| 213 .. _issue 195: https://bitbucket.org/ned/coveragepy/issue/195/pyo-file-handling-
in-codeunit | |
| 214 .. _issue 197: https://bitbucket.org/ned/coveragepy/issue/197/line-numbers-in-ht
ml-report-do-not-align | |
| 215 | |
| 216 | |
| 217 Version 3.5.2 --- 4 May 2012 | |
| 218 ---------------------------- | |
| 219 | |
| 220 - The HTML report has slightly tweaked controls: the buttons at the top of | |
| 221 the page are color-coded to the source lines they affect. | |
| 222 | |
| 223 - Custom CSS can be applied to the HTML report by specifying a CSS file as | |
| 224 the extra_css configuration value in the [html] section. | |
| 225 | |
| 226 - Source files with custom encodings declared in a comment at the top are now | |
| 227 properly handled during reporting on Python 2. Python 3 always handled them | |
| 228 properly. This fixes `issue 157`_. | |
| 229 | |
| 230 - Backup files left behind by editors are no longer collected by the source= | |
| 231 option, fixing `issue 168`_. | |
| 232 | |
| 233 - If a file doesn't parse properly as Python, we don't report it as an error | |
| 234 if the filename seems like maybe it wasn't meant to be Python. This is a | |
| 235 pragmatic fix for `issue 82`_. | |
| 236 | |
| 237 - The ``-m`` switch on ``coverage report``, which includes missing line numbers | |
| 238 in the summary report, can now be specifed as ``show_missing`` in the | |
| 239 config file. Closes `issue 173`_. | |
| 240 | |
| 241 - When running a module with ``coverage run -m <modulename>``, certain details | |
| 242 of the execution environment weren't the same as for | |
| 243 ``python -m <modulename>``. This had the unfortunate side-effect of making | |
| 244 ``coverage run -m unittest discover`` not work if you had tests in a | |
| 245 directory named "test". This fixes `issue 155`_. | |
| 246 | |
| 247 - Now the exit status of your product code is properly used as the process | |
| 248 status when running ``python -m coverage run ...``. Thanks, JT Olds. | |
| 249 | |
| 250 - When installing into pypy, we no longer attempt (and fail) to compile | |
| 251 the C tracer function, closing `issue 166`_. | |
| 252 | |
| 253 .. _issue 82: https://bitbucket.org/ned/coveragepy/issue/82/tokenerror-when-gene
rating-html-report | |
| 254 .. _issue 155: https://bitbucket.org/ned/coveragepy/issue/155/cant-use-coverage-
run-m-unittest-discover | |
| 255 .. _issue 157: https://bitbucket.org/ned/coveragepy/issue/157/chokes-on-source-f
iles-with-non-utf-8 | |
| 256 .. _issue 166: https://bitbucket.org/ned/coveragepy/issue/166/dont-try-to-compil
e-c-extension-on-pypy | |
| 257 .. _issue 168: https://bitbucket.org/ned/coveragepy/issue/168/dont-be-alarmed-by
-emacs-droppings | |
| 258 .. _issue 173: https://bitbucket.org/ned/coveragepy/issue/173/theres-no-way-to-s
pecify-show-missing-in | |
| 259 | |
| 260 | |
| 261 Version 3.5.1 --- 23 September 2011 | |
| 262 ----------------------------------- | |
| 263 | |
| 264 - When combining data files from parallel runs, you can now instruct coverage | |
| 265 about which directories are equivalent on different machines. A ``[paths]`` | |
| 266 section in the configuration file lists paths that are to be considered | |
| 267 equivalent. Finishes `issue 17`_. | |
| 268 | |
| 269 - for-else constructs are understood better, and don't cause erroneous partial | |
| 270 branch warnings. Fixes `issue 122`_. | |
| 271 | |
| 272 - Branch coverage for ``with`` statements is improved, fixing `issue 128`_. | |
| 273 | |
| 274 - The number of partial branches reported on the HTML summary page was | |
| 275 different than the number reported on the individual file pages. This is | |
| 276 now fixed. | |
| 277 | |
| 278 - An explicit include directive to measure files in the Python installation | |
| 279 wouldn't work because of the standard library exclusion. Now the include | |
| 280 directive takes precendence, and the files will be measured. Fixes | |
| 281 `issue 138`_. | |
| 282 | |
| 283 - The HTML report now handles Unicode characters in Python source files | |
| 284 properly. This fixes `issue 124`_ and `issue 144`_. Thanks, Devin | |
| 285 Jeanpierre. | |
| 286 | |
| 287 - In order to help the core developers measure the test coverage of the | |
| 288 standard library, Brandon Rhodes devised an aggressive hack to trick Python | |
| 289 into running some coverage code before anything else in the process. | |
| 290 See the coverage/fullcoverage directory if you are interested. | |
| 291 | |
| 292 .. _issue 17: http://bitbucket.org/ned/coveragepy/issue/17/support-combining-cov
erage-data-from | |
| 293 .. _issue 122: http://bitbucket.org/ned/coveragepy/issue/122/for-else-always-rep
orts-missing-branch | |
| 294 .. _issue 124: http://bitbucket.org/ned/coveragepy/issue/124/no-arbitrary-unicod
e-in-html-reports-in | |
| 295 .. _issue 128: http://bitbucket.org/ned/coveragepy/issue/128/branch-coverage-of-
with-statement-in-27 | |
| 296 .. _issue 138: http://bitbucket.org/ned/coveragepy/issue/138/include-should-take
-precedence-over-is | |
| 297 .. _issue 144: http://bitbucket.org/ned/coveragepy/issue/144/failure-generating-
html-output-for | |
| 298 | |
| 299 | |
| 300 Version 3.5 --- 29 June 2011 | |
| 301 ---------------------------- | |
| 302 | |
| 303 HTML reporting: | |
| 304 | |
| 305 - The HTML report now has hotkeys. Try ``n``, ``s``, ``m``, ``x``, ``b``, | |
| 306 ``p``, and ``c`` on the overview page to change the column sorting. | |
| 307 On a file page, ``r``, ``m``, ``x``, and ``p`` toggle the run, missing, | |
| 308 excluded, and partial line markings. You can navigate the highlighted | |
| 309 sections of code by using the ``j`` and ``k`` keys for next and previous. | |
| 310 The ``1`` (one) key jumps to the first highlighted section in the file, | |
| 311 and ``0`` (zero) scrolls to the top of the file. | |
| 312 | |
| 313 - HTML reporting is now incremental: a record is kept of the data that | |
| 314 produced the HTML reports, and only files whose data has changed will | |
| 315 be generated. This should make most HTML reporting faster. | |
| 316 | |
| 317 | |
| 318 Running Python files | |
| 319 | |
| 320 - Modules can now be run directly using ``coverage run -m modulename``, to | |
| 321 mirror Python's ``-m`` flag. Closes `issue 95`_, thanks, Brandon Rhodes. | |
| 322 | |
| 323 - ``coverage run`` didn't emulate Python accurately in one detail: the | |
| 324 current directory inserted into ``sys.path`` was relative rather than | |
| 325 absolute. This is now fixed. | |
| 326 | |
| 327 - Pathological code execution could disable the trace function behind our | |
| 328 backs, leading to incorrect code measurement. Now if this happens, | |
| 329 coverage.py will issue a warning, at least alerting you to the problem. | |
| 330 Closes `issue 93`_. Thanks to Marius Gedminas for the idea. | |
| 331 | |
| 332 - The C-based trace function now behaves properly when saved and restored | |
| 333 with ``sys.gettrace()`` and ``sys.settrace()``. This fixes `issue 125`_ | |
| 334 and `issue 123`_. Thanks, Devin Jeanpierre. | |
| 335 | |
| 336 - Coverage.py can now be run directly from a working tree by specifying | |
| 337 the directory name to python: ``python coverage_py_working_dir run ...``. | |
| 338 Thanks, Brett Cannon. | |
| 339 | |
| 340 - A little bit of Jython support: `coverage run` can now measure Jython | |
| 341 execution by adapting when $py.class files are traced. Thanks, Adi Roiban. | |
| 342 | |
| 343 | |
| 344 Reporting | |
| 345 | |
| 346 - Partial branch warnings can now be pragma'd away. The configuration option | |
| 347 ``partial_branches`` is a list of regular expressions. Lines matching any of | |
| 348 those expressions will never be marked as a partial branch. In addition, | |
| 349 there's a built-in list of regular expressions marking statements which should | |
| 350 never be marked as partial. This list includes ``while True:``, ``while 1:``, | |
| 351 ``if 1:``, and ``if 0:``. | |
| 352 | |
| 353 - The ``--omit`` and ``--include`` switches now interpret their values more | |
| 354 usefully. If the value starts with a wildcard character, it is used as-is. | |
| 355 If it does not, it is interpreted relative to the current directory. | |
| 356 Closes `issue 121`_. | |
| 357 | |
| 358 - Syntax errors in supposed Python files can now be ignored during reporting | |
| 359 with the ``-i`` switch just like other source errors. Closes `issue 115`_. | |
| 360 | |
| 361 .. _issue 93: http://bitbucket.org/ned/coveragepy/issue/93/copying-a-mock-object
-breaks-coverage | |
| 362 .. _issue 95: https://bitbucket.org/ned/coveragepy/issue/95/run-subcommand-shoul
d-take-a-module-name | |
| 363 .. _issue 115: https://bitbucket.org/ned/coveragepy/issue/115/fail-gracefully-wh
en-reporting-on-file | |
| 364 .. _issue 121: https://bitbucket.org/ned/coveragepy/issue/121/filename-patterns-
are-applied-stupidly | |
| 365 .. _issue 123: https://bitbucket.org/ned/coveragepy/issue/123/pyeval_settrace-us
ed-in-way-that-breaks | |
| 366 .. _issue 125: https://bitbucket.org/ned/coveragepy/issue/125/coverage-removes-d
ecoratortoolss-tracing | |
| 367 | |
| 368 | |
| 369 Version 3.4 --- 19 September 2010 | |
| 370 --------------------------------- | |
| 371 | |
| 372 Controlling source: | |
| 373 | |
| 374 - BACKWARD INCOMPATIBILITY: the ``--omit`` and ``--include`` switches now take | |
| 375 file patterns rather than file prefixes, closing `issue 34`_ and `issue 36`_. | |
| 376 | |
| 377 - BACKWARD INCOMPATIBILITY: the `omit_prefixes` argument is gone throughout | |
| 378 coverage.py, replaced with `omit`, a list of filename patterns suitable for | |
| 379 `fnmatch`. A parallel argument `include` controls what files are included. | |
| 380 | |
| 381 - The run command now has a ``--source`` switch, a list of directories or | |
| 382 module names. If provided, coverage.py will only measure execution in those | |
| 383 source files. The run command also now supports ``--include`` and ``--omit`` | |
| 384 to control what modules it measures. This can speed execution and reduce the | |
| 385 amount of data during reporting. Thanks Zooko. | |
| 386 | |
| 387 - The reporting commands (report, annotate, html, and xml) now have an | |
| 388 ``--include`` switch to restrict reporting to modules matching those file | |
| 389 patterns, similar to the existing ``--omit`` switch. Thanks, Zooko. | |
| 390 | |
| 391 Reporting: | |
| 392 | |
| 393 - Completely unexecuted files can now be included in coverage results, reported | |
| 394 as 0% covered. This only happens if the --source option is specified, since | |
| 395 coverage.py needs guidance about where to look for source files. | |
| 396 | |
| 397 - Python files with no statements, for example, empty ``__init__.py`` files, | |
| 398 are now reported as having zero statements instead of one. Fixes `issue 1`_. | |
| 399 | |
| 400 - Reports now have a column of missed line counts rather than executed line | |
| 401 counts, since developers should focus on reducing the missed lines to zero, | |
| 402 rather than increasing the executed lines to varying targets. Once | |
| 403 suggested, this seemed blindingly obvious. | |
| 404 | |
| 405 - Coverage percentages are now displayed uniformly across reporting methods. | |
| 406 Previously, different reports could round percentages differently. Also, | |
| 407 percentages are only reported as 0% or 100% if they are truly 0 or 100, and | |
| 408 are rounded otherwise. Fixes `issue 41`_ and `issue 70`_. | |
| 409 | |
| 410 - The XML report output now properly includes a percentage for branch coverage, | |
| 411 fixing `issue 65`_ and `issue 81`_, and the report is sorted by package | |
| 412 name, fixing `issue 88`_. | |
| 413 | |
| 414 - The XML report is now sorted by package name, fixing `issue 88`_. | |
| 415 | |
| 416 - The precision of reported coverage percentages can be set with the | |
| 417 ``[report] precision`` config file setting. Completes `issue 16`_. | |
| 418 | |
| 419 - Line numbers in HTML source pages are clickable, linking directly to that | |
| 420 line, which is highlighted on arrival. Added a link back to the index page | |
| 421 at the bottom of each HTML page. | |
| 422 | |
| 423 Execution and measurement: | |
| 424 | |
| 425 - Various warnings are printed to stderr for problems encountered during data | |
| 426 measurement: if a ``--source`` module has no Python source to measure, or is | |
| 427 never encountered at all, or if no data is collected. | |
| 428 | |
| 429 - Doctest text files are no longer recorded in the coverage data, since they | |
| 430 can't be reported anyway. Fixes `issue 52`_ and `issue 61`_. | |
| 431 | |
| 432 - Threads derived from ``threading.Thread`` with an overridden `run` method | |
| 433 would report no coverage for the `run` method. This is now fixed, closing | |
| 434 `issue 85`_. | |
| 435 | |
| 436 - Programs that exited with ``sys.exit()`` with no argument weren't handled | |
| 437 properly, producing a coverage.py stack trace. This is now fixed. | |
| 438 | |
| 439 - Programs that call ``os.fork`` will properly collect data from both the child | |
| 440 and parent processes. Use ``coverage run -p`` to get two data files that can | |
| 441 be combined with ``coverage combine``. Fixes `issue 56`_. | |
| 442 | |
| 443 - When measuring code running in a virtualenv, most of the system library was | |
| 444 being measured when it shouldn't have been. This is now fixed. | |
| 445 | |
| 446 - Coverage can now be run as a module: ``python -m coverage``. Thanks, | |
| 447 Brett Cannon. | |
| 448 | |
| 449 .. _issue 1: http://bitbucket.org/ned/coveragepy/issue/1/empty-__init__py-files
-are-reported-as-1-executable | |
| 450 .. _issue 16: http://bitbucket.org/ned/coveragepy/issue/16/allow-configuration-o
f-accuracy-of-percentage-totals | |
| 451 .. _issue 34: http://bitbucket.org/ned/coveragepy/issue/34/enhanced-omit-globbin
g-handling | |
| 452 .. _issue 36: http://bitbucket.org/ned/coveragepy/issue/36/provide-regex-style-o
mit | |
| 453 .. _issue 41: http://bitbucket.org/ned/coveragepy/issue/41/report-says-100-when-
it-isnt-quite-there | |
| 454 .. _issue 52: http://bitbucket.org/ned/coveragepy/issue/52/doctesttestfile-confu
ses-source-detection | |
| 455 .. _issue 56: http://bitbucket.org/ned/coveragepy/issue/56/coveragepy-cant-trace
-child-processes-of-a | |
| 456 .. _issue 61: http://bitbucket.org/ned/coveragepy/issue/61/annotate-i-doesnt-wor
k | |
| 457 .. _issue 65: http://bitbucket.org/ned/coveragepy/issue/65/branch-option-not-rep
orted-in-cobertura | |
| 458 .. _issue 70: http://bitbucket.org/ned/coveragepy/issue/70/text-report-and-html-
report-disagree-on-coverage | |
| 459 .. _issue 81: http://bitbucket.org/ned/coveragepy/issue/81/xml-report-does-not-h
ave-condition-coverage-attribute-for-lines-with-a | |
| 460 .. _issue 85: http://bitbucket.org/ned/coveragepy/issue/85/threadrun-isnt-measur
ed | |
| 461 .. _issue 88: http://bitbucket.org/ned/coveragepy/issue/88/xml-report-lists-pack
ages-in-random-order | |
| 462 | |
| 463 | |
| 464 Version 3.3.1 --- 6 March 2010 | |
| 465 ------------------------------ | |
| 466 | |
| 467 - Using ``parallel=True`` in a .coveragerc file prevented reporting, but now | |
| 468 does not, fixing `issue 49`_. | |
| 469 | |
| 470 - When running your code with ``coverage run``, if you call ``sys.exit()``, | |
| 471 coverage.py will exit with that status code, fixing `issue 50`_. | |
| 472 | |
| 473 .. _issue 49: http://bitbucket.org/ned/coveragepy/issue/49 | |
| 474 .. _issue 50: http://bitbucket.org/ned/coveragepy/issue/50 | |
| 475 | |
| 476 | |
| 477 Version 3.3 --- 24 February 2010 | |
| 478 -------------------------------- | |
| 479 | |
| 480 - Settings are now read from a .coveragerc file. A specific file can be | |
| 481 specified on the command line with ``--rcfile=FILE``. The name of the file | |
| 482 can be programmatically set with the ``config_file`` argument to the | |
| 483 coverage() constructor, or reading a config file can be disabled with | |
| 484 ``config_file=False``. | |
| 485 | |
| 486 - Added coverage.process_start to enable coverage measurement when Python | |
| 487 starts. | |
| 488 | |
| 489 - Parallel data file names now have a random number appended to them in | |
| 490 addition to the machine name and process id. Also, parallel data files | |
| 491 combined with ``coverage combine`` are deleted after they're combined, to | |
| 492 clean up unneeded files. Fixes `issue 40`_. | |
| 493 | |
| 494 - Exceptions thrown from product code run with ``coverage run`` are now | |
| 495 displayed without internal coverage.py frames, so the output is the same as | |
| 496 when the code is run without coverage.py. | |
| 497 | |
| 498 - Fixed `issue 39`_ and `issue 47`_. | |
| 499 | |
| 500 .. _issue 39: http://bitbucket.org/ned/coveragepy/issue/39 | |
| 501 .. _issue 40: http://bitbucket.org/ned/coveragepy/issue/40 | |
| 502 .. _issue 47: http://bitbucket.org/ned/coveragepy/issue/47 | |
| 503 | |
| 504 | |
| 505 Version 3.2 --- 5 December 2009 | |
| 506 ------------------------------- | |
| 507 | |
| 508 - Branch coverage: coverage.py can tell you which branches didn't have both (or | |
| 509 all) choices executed, even where the choice doesn't affect which lines were | |
| 510 executed. See :ref:`branch` for more details. | |
| 511 | |
| 512 - The table of contents in the HTML report is now sortable: click the headers | |
| 513 on any column. The sorting is persisted so that subsequent reports are | |
| 514 sorted as you wish. Thanks, `Chris Adams`_. | |
| 515 | |
| 516 - XML reporting has file paths that let Cobertura find the source code, fixing | |
| 517 `issue 21`_. | |
| 518 | |
| 519 - The ``--omit`` option now works much better than before, fixing `issue 14`_ | |
| 520 and `issue 33`_. Thanks, Danek Duvall. | |
| 521 | |
| 522 - Added a ``--version`` option on the command line. | |
| 523 | |
| 524 - Program execution under coverage is a few percent faster. | |
| 525 | |
| 526 - Some exceptions reported by the command line interface have been cleaned up | |
| 527 so that tracebacks inside coverage.py aren't shown. Fixes `issue 23`_. | |
| 528 | |
| 529 - Fixed some problems syntax coloring sources with line continuations and | |
| 530 source with tabs: `issue 30`_ and `issue 31`_. | |
| 531 | |
| 532 .. _Chris Adams: http://improbable.org/chris/ | |
| 533 .. _issue 21: http://bitbucket.org/ned/coveragepy/issue/21 | |
| 534 .. _issue 23: http://bitbucket.org/ned/coveragepy/issue/23 | |
| 535 .. _issue 14: http://bitbucket.org/ned/coveragepy/issue/14 | |
| 536 .. _issue 30: http://bitbucket.org/ned/coveragepy/issue/30 | |
| 537 .. _issue 31: http://bitbucket.org/ned/coveragepy/issue/31 | |
| 538 .. _issue 33: http://bitbucket.org/ned/coveragepy/issue/33 | |
| 539 | |
| 540 | |
| 541 Version 3.1 --- 4 October 2009 | |
| 542 ------------------------------ | |
| 543 | |
| 544 - Python 3.1 is now supported. | |
| 545 | |
| 546 - Coverage.py has a new command line syntax with sub-commands. This expands | |
| 547 the possibilities for adding features and options in the future. The old | |
| 548 syntax is still supported. Try ``coverage help`` to see the new commands. | |
| 549 Thanks to Ben Finney for early help. | |
| 550 | |
| 551 - Added an experimental ``coverage xml`` command for producing coverage reports | |
| 552 in a Cobertura-compatible XML format. Thanks, Bill Hart. | |
| 553 | |
| 554 - Added the ``--timid`` option to enable a simpler slower trace function that | |
| 555 works for DecoratorTools projects, including TurboGears. Fixed `issue 12`_ | |
| 556 and `issue 13`_. | |
| 557 | |
| 558 - HTML reports now display syntax-colored Python source. | |
| 559 | |
| 560 - Added a ``coverage debug`` command for getting diagnostic information about | |
| 561 the coverage.py installation. | |
| 562 | |
| 563 - Source code can now be read from eggs. Thanks, `Ross Lawley`_. Fixes | |
| 564 `issue 25`_. | |
| 565 | |
| 566 .. _Ross Lawley: http://agileweb.org/ | |
| 567 .. _issue 25: http://bitbucket.org/ned/coveragepy/issue/25 | |
| 568 .. _issue 12: http://bitbucket.org/ned/coveragepy/issue/12 | |
| 569 .. _issue 13: http://bitbucket.org/ned/coveragepy/issue/13 | |
| 570 | |
| 571 | |
| 572 Version 3.0.1 --- 7 July 2009 | |
| 573 ----------------------------- | |
| 574 | |
| 575 - Removed the recursion limit in the tracer function. Previously, code that | |
| 576 ran more than 500 frames deep would crash. | |
| 577 | |
| 578 - Fixed a bizarre problem involving pyexpat, whereby lines following XML parser | |
| 579 invocations could be overlooked. | |
| 580 | |
| 581 - On Python 2.3, coverage.py could mis-measure code with exceptions being | |
| 582 raised. This is now fixed. | |
| 583 | |
| 584 - The coverage.py code itself will now not be measured by coverage.py, and no | |
| 585 coverage modules will be mentioned in the nose ``--with-cover`` plugin. | |
| 586 | |
| 587 - When running source files, coverage.py now opens them in universal newline | |
| 588 mode just like Python does. This lets it run Windows files on Mac, for | |
| 589 example. | |
| 590 | |
| 591 | |
| 592 Version 3.0 --- 13 June 2009 | |
| 593 ---------------------------- | |
| 594 | |
| 595 - Coverage is now a package rather than a module. Functionality has been split | |
| 596 into classes. | |
| 597 | |
| 598 - HTML reports and annotation of source files: use the new ``-b`` (browser) | |
| 599 switch. Thanks to George Song for code, inspiration and guidance. | |
| 600 | |
| 601 - The trace function is implemented in C for speed. Coverage runs are now | |
| 602 much faster. Thanks to David Christian for productive micro-sprints and | |
| 603 other encouragement. | |
| 604 | |
| 605 - The minimum supported Python version is 2.3. | |
| 606 | |
| 607 - When using the object api (that is, constructing a coverage() object), data | |
| 608 is no longer saved automatically on process exit. You can re-enable it with | |
| 609 the ``auto_data=True`` parameter on the coverage() constructor. | |
| 610 The module-level interface still uses automatic saving. | |
| 611 | |
| 612 - Code in the Python standard library is not measured by default. If you need | |
| 613 to measure standard library code, use the ``-L`` command-line switch during | |
| 614 execution, or the ``cover_pylib=True`` argument to the coverage() | |
| 615 constructor. | |
| 616 | |
| 617 - API changes: | |
| 618 | |
| 619 - Added parameters to coverage.__init__ for options that had been set on | |
| 620 the coverage object itself. | |
| 621 | |
| 622 - Added clear_exclude() and get_exclude_list() methods for programmatic | |
| 623 manipulation of the exclude regexes. | |
| 624 | |
| 625 - Added coverage.load() to read previously-saved data from the data file. | |
| 626 | |
| 627 - coverage.annotate_file is no longer available. | |
| 628 | |
| 629 - Removed the undocumented cache_file argument to coverage.usecache(). | |
| OLD | NEW |