OLD | NEW |
1 ------------------------------ | 1 .. Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 |
2 Change history for Coverage.py | 2 .. For details: https://bitbucket.org/ned/coveragepy/src/default/NOTICE.txt |
3 ------------------------------ | 3 |
4 | 4 .. _changes: |
5 3.7.1 -- 13 December 2013 | 5 |
6 ------------------------- | 6 ==================================== |
| 7 Major change history for coverage.py |
| 8 ==================================== |
| 9 |
| 10 .. :history: 20090524T134300, brand new docs. |
| 11 .. :history: 20090613T164000, final touches for 3.0 |
| 12 .. :history: 20090706T205000, changes for 3.0.1 |
| 13 .. :history: 20091004T170700, changes for 3.1 |
| 14 .. :history: 20091128T072200, changes for 3.2 |
| 15 .. :history: 20091205T161525, 3.2 final |
| 16 .. :history: 20100221T151900, changes for 3.3 |
| 17 .. :history: 20100306T181400, changes for 3.3.1 |
| 18 .. :history: 20100725T211700, updated for 3.4. |
| 19 .. :history: 20100820T151500, updated for 3.4b1 |
| 20 .. :history: 20100906T133800, updated for 3.4b2 |
| 21 .. :history: 20100919T163400, updated for 3.4 release. |
| 22 .. :history: 20110604T214100, updated for 3.5b1 |
| 23 .. :history: 20110629T082200, updated for 3.5 |
| 24 .. :history: 20110923T081600, updated for 3.5.1 |
| 25 .. :history: 20120429T162100, updated for 3.5.2b1 |
| 26 .. :history: 20120503T233700, updated for 3.5.2 |
| 27 .. :history: 20120929T093100, updated for 3.5.3 |
| 28 .. :history: 20121129T060100, updated for 3.6b1. |
| 29 .. :history: 20121223T180600, updated for 3.6b2. |
| 30 .. :history: 20130105T173500, updated for 3.6 |
| 31 .. :history: 20131005T205700, updated for 3.7 |
| 32 .. :history: 20131212T213100, updated for 3.7.1 |
| 33 .. :history: 20150124T134800, updated for 4.0a4 |
| 34 .. :history: 20150802T174700, updated for 4.0b1 |
| 35 .. :history: 20150822T092800, updated for 4.0b2 |
| 36 .. :history: 20150919T072700, updated for 4.0 |
| 37 |
| 38 |
| 39 These are the major changes for coverage.py. For a more complete change |
| 40 history, see the `CHANGES.txt`_ file in the source tree. |
| 41 |
| 42 .. _CHANGES.txt: http://bitbucket.org/ned/coveragepy/src/tip/CHANGES.txt |
| 43 |
| 44 .. module:: coverage |
| 45 |
| 46 .. _changes_40: |
| 47 |
| 48 Version 4.0 --- 20 September 2015 |
| 49 --------------------------------- |
| 50 |
| 51 |
| 52 Backward incompatibilities: |
| 53 |
| 54 - Python versions supported are now: |
| 55 |
| 56 - CPython 2.6, 2.7, 3.3, 3.4 and 3.5 |
| 57 - PyPy2 2.4, 2.6 |
| 58 - PyPy3 2.4 |
| 59 |
| 60 - The original command line switches (``-x`` to run a program, etc) are no |
| 61 longer supported. |
| 62 |
| 63 - The ``COVERAGE_OPTIONS`` environment variable is no longer supported. It was |
| 64 a hack for ``--timid`` before configuration files were available. |
| 65 |
| 66 - The original module-level function interface to coverage.py is no longer |
| 67 supported. You must now create a :class:`coverage.Coverage` object, and use |
| 68 methods on it. |
| 69 |
| 70 - The ``Coverage.use_cache`` method is no longer supported. |
| 71 |
| 72 - The private method ``Coverage._harvest_data`` is now called |
| 73 :meth:`Coverage.get_data`, and returns the :class:`CoverageData` containing |
| 74 the collected data. |
| 75 |
| 76 - Coverage.py is now licensed under the Apache 2.0 license. See `NOTICE.txt`_ |
| 77 for details. |
| 78 |
| 79 - Coverage.py kits no longer include tests and docs. If you were using them, |
| 80 get in touch and let me know how. |
| 81 |
| 82 .. _NOTICE.txt: https://bitbucket.org/ned/coveragepy/src/default/NOTICE.txt |
| 83 |
| 84 |
| 85 Major new features: |
| 86 |
| 87 - Plugins: third parties can write plugins to add file support for non-Python |
| 88 files, such as web application templating engines, or languages that compile |
| 89 down to Python. See :ref:`plugins` for how to use plugins, and |
| 90 :ref:`api_plugin` for details of how to write them. A plugin for measuring |
| 91 Django template coverage is available: `django_coverage_plugin`_ |
| 92 |
| 93 - Gevent, eventlet, and greenlet are now supported. The ``[run] concurrency`` |
| 94 setting, or the ``--concurrency`` command line switch, specifies the |
| 95 concurrency library in use. Huge thanks to Peter Portante for initial |
| 96 implementation, and to Joe Jevnik for the final insight that completed the |
| 97 work. |
| 98 |
| 99 - The data storage has been re-written, using JSON instead of pickle. The |
| 100 :class:`.CoverageData` class is a new supported API to the contents of the |
| 101 data file. Data files from older versions of coverage.py can be converted to |
| 102 the new format with ``python -m coverage.pickle2json``. |
| 103 |
| 104 - Wildly experimental: support for measuring processes started by the |
| 105 multiprocessing module. To use, set ``--concurrency=multiprocessing``, |
| 106 either on the command line or in the .coveragerc file. Thanks, Eduardo |
| 107 Schettino. Currently, this does not work on Windows. |
| 108 |
| 109 |
| 110 New features: |
| 111 |
| 112 - Options are now also read from a setup.cfg file, if any. Sections are |
| 113 prefixed with "coverage:", so the ``[run]`` options will be read from the |
| 114 ``[coverage:run]`` section of setup.cfg. |
| 115 |
| 116 - The HTML report now has filtering. Type text into the Filter box on the |
| 117 index page, and only modules with that text in the name will be shown. |
| 118 Thanks, Danny Allen. |
| 119 |
| 120 - A new option: ``coverage report --skip-covered`` (or ``[report] skip_covered``
) |
| 121 will reduce the number of files reported by skipping files with 100% |
| 122 coverage. Thanks, Krystian Kichewko. This means that empty ``__init__.py`` |
| 123 files will be skipped, since they are 100% covered. |
| 124 |
| 125 - You can now specify the ``--fail-under`` option in the ``.coveragerc`` file |
| 126 as the ``[report] fail_under`` option. |
| 127 |
| 128 - The ``report -m`` command now shows missing branches when reporting on branch |
| 129 coverage. Thanks, Steve Leonard. |
| 130 |
| 131 - The ``coverage combine`` command now accepts any number of directories or |
| 132 files as arguments, and will combine all the data from them. This means you |
| 133 don't have to copy the files to one directory before combining. Thanks, |
| 134 Christine Lytwynec. |
| 135 |
| 136 - A new configuration option for the XML report: ``[xml] package_depth`` |
| 137 controls which directories are identified as packages in the report. |
| 138 Directories deeper than this depth are not reported as packages. |
| 139 The default is that all directories are reported as packages. |
| 140 Thanks, Lex Berezhny. |
| 141 |
| 142 - A new configuration option, ``[run] note``, lets you set a note that will be |
| 143 stored in the ``runs`` section of the data file. You can use this to |
| 144 annotate the data file with any information you like. |
| 145 |
| 146 - The COVERAGE_DEBUG environment variable can be used to set the ``[run] debug`` |
| 147 configuration option to control what internal operations are logged. |
| 148 |
| 149 - A new version identifier is available, `coverage.version_info`, a plain tuple |
| 150 of values similar to `sys.version_info`_. |
| 151 |
| 152 |
| 153 Improvements: |
| 154 |
| 155 - Coverage.py now always adds the current directory to sys.path, so that |
| 156 plugins can import files in the current directory. |
| 157 |
| 158 - Coverage.py now accepts a directory name for ``coverage run`` and will run a |
| 159 ``__main__.py`` found there, just like Python will. Thanks, Dmitry Trofimov. |
| 160 |
| 161 - The ``--debug`` switch can now be used on any command. |
| 162 |
| 163 - Reports now use file names with extensions. Previously, a report would |
| 164 describe a/b/c.py as "a/b/c". Now it is shown as "a/b/c.py". This allows |
| 165 for better support of non-Python files. |
| 166 |
| 167 - Missing branches in the HTML report now have a bit more information in the |
| 168 right-hand annotations. Hopefully this will make their meaning clearer. |
| 169 |
| 170 - The XML report now contains a <source> element. Thanks Stan Hu. |
| 171 |
| 172 - The XML report now includes a ``missing-branches`` attribute. Thanks, Steve |
| 173 Peak. This is not a part of the Cobertura DTD, so the XML report no longer |
| 174 references the DTD. |
| 175 |
| 176 - The XML report now reports each directory as a package again. This was a bad |
| 177 regression, I apologize. |
| 178 |
| 179 - In parallel mode, ``coverage erase`` will now delete all of the data files. |
| 180 |
| 181 - A new warning is possible, if a desired file isn't measured because it was |
| 182 imported before coverage.py was started. |
| 183 |
| 184 - The :func:`coverage.process_startup` function now will start coverage |
| 185 measurement only once, no matter how many times it is called. This fixes |
| 186 problems due to unusual virtualenv configurations. |
| 187 |
| 188 - Unrecognized configuration options will now print an error message and stop |
| 189 coverage.py. This should help prevent configuration mistakes from passing |
| 190 silently. |
| 191 |
| 192 |
| 193 API changes: |
| 194 |
| 195 - The class defined in the coverage module is now called ``Coverage`` instead |
| 196 of ``coverage``, though the old name still works, for backward compatibility. |
| 197 |
| 198 - You can now programmatically adjust the configuration of coverage.py by |
| 199 calling :meth:`Coverage.set_option` after construction. |
| 200 :meth:`Coverage.get_option` reads the configuration values. |
| 201 |
| 202 - If the `config_file` argument to the Coverage constructor is specified as |
| 203 ".coveragerc", it is treated as if it were True. This means setup.cfg is |
| 204 also examined, and a missing file is not considered an error. |
| 205 |
| 206 |
| 207 Bug fixes: |
| 208 |
| 209 - The textual report and the HTML report used to report partial branches |
| 210 differently for no good reason. Now the text report's "missing branches" |
| 211 column is a "partial branches" column so that both reports show the same |
| 212 numbers. This closes `issue 342`_. |
| 213 |
| 214 - The ``fail-under`` value is now rounded the same as reported results, |
| 215 preventing paradoxical results, fixing `issue 284`_. |
| 216 |
| 217 - Branch coverage couldn't properly handle certain extremely long files. This |
| 218 is now fixed, closing `issue 359`_. |
| 219 |
| 220 - Branch coverage didn't understand yield statements properly. Mickie Betz |
| 221 persisted in pursuing this despite Ned's pessimism. Fixes `issue 308`_ and |
| 222 `issue 324`_. |
| 223 |
| 224 - Files with incorrect encoding declaration comments are no longer ignored by |
| 225 the reporting commands. |
| 226 |
| 227 - Empty files are now reported as 100% covered in the XML report, not 0% |
| 228 covered. |
| 229 |
| 230 - The XML report will now create the output directory if need be. Thanks, Chris |
| 231 Rose. |
| 232 |
| 233 - HTML reports no longer raise UnicodeDecodeError if a Python file has |
| 234 undecodable characters. |
| 235 |
| 236 - The annotate command will now annotate all files, not just ones relative to |
| 237 the current directory. |
| 238 |
| 239 |
| 240 .. _django_coverage_plugin: https://pypi.python.org/pypi/django_coverage_plugin |
| 241 .. _issue 284: https://bitbucket.org/ned/coveragepy/issue/284/fail-under-should-
show-more-precision |
| 242 .. _issue 308: https://bitbucket.org/ned/coveragepy/issue/308/yield-lambda-branc
h-coverage |
| 243 .. _issue 324: https://bitbucket.org/ned/coveragepy/issue/324/yield-in-loop-conf
uses-branch-coverage |
| 244 .. _issue 342: https://bitbucket.org/ned/coveragepy/issue/342/console-and-html-c
overage-reports-differ |
| 245 .. _issue 359: https://bitbucket.org/ned/coveragepy/issue/359/xml-report-chunk-e
rror |
| 246 .. _sys.version_info: https://docs.python.org/3/library/sys.html#sys.version_inf
o |
| 247 |
| 248 |
| 249 .. _changes_371: |
| 250 |
| 251 Version 3.7.1 --- 13 December 2013 |
| 252 ---------------------------------- |
7 | 253 |
8 - Improved the speed of HTML report generation by about 20%. | 254 - Improved the speed of HTML report generation by about 20%. |
9 | 255 |
10 - Fixed the mechanism for finding OS-installed static files for the HTML report | 256 - Fixed the mechanism for finding OS-installed static files for the HTML report |
11 so that it will actually find OS-installed static files. | 257 so that it will actually find OS-installed static files. |
12 | 258 |
13 | 259 |
14 3.7 --- 6 October 2013 | 260 .. _changes_37: |
15 ---------------------- | 261 |
| 262 Version 3.7 --- 6 October 2013 |
| 263 ------------------------------ |
16 | 264 |
17 - Added the ``--debug`` switch to ``coverage run``. It accepts a list of | 265 - Added the ``--debug`` switch to ``coverage run``. It accepts a list of |
18 options indicating the type of internal activity to log to stderr. | 266 options indicating the type of internal activity to log to stderr. For |
| 267 details, see :ref:`the run --debug options <cmd_run_debug>`. |
19 | 268 |
20 - Improved the branch coverage facility, fixing `issue 92`_ and `issue 175`_. | 269 - Improved the branch coverage facility, fixing `issue 92`_ and `issue 175`_. |
21 | 270 |
22 - Running code with ``coverage run -m`` now behaves more like Python does, | 271 - Running code with ``coverage run -m`` now behaves more like Python does, |
23 setting sys.path properly, which fixes `issue 207`_ and `issue 242`_. | 272 setting sys.path properly, which fixes `issue 207`_ and `issue 242`_. |
24 | 273 |
25 - Coverage can now run .pyc files directly, closing `issue 264`_. | 274 - Coverage.py can now run .pyc files directly, closing `issue 264`_. |
26 | 275 |
27 - Coverage properly supports .pyw files, fixing `issue 261`_. | 276 - Coverage.py properly supports .pyw files, fixing `issue 261`_. |
28 | 277 |
29 - Omitting files within a tree specified with the ``source`` option would | 278 - Omitting files within a tree specified with the ``source`` option would |
30 cause them to be incorrectly marked as unexecuted, as described in | 279 cause them to be incorrectly marked as unexecuted, as described in |
31 `issue 218`_. This is now fixed. | 280 `issue 218`_. This is now fixed. |
32 | 281 |
33 - When specifying paths to alias together during data combining, you can now | 282 - When specifying paths to alias together during data combining, you can now |
34 specify relative paths, fixing `issue 267`_. | 283 specify relative paths, fixing `issue 267`_. |
35 | 284 |
36 - Most file paths can now be specified with username expansion (``~/src``, or | 285 - Most file paths can now be specified with username expansion (``~/src``, or |
37 ``~build/src``, for example), and with environment variable expansion | 286 ``~build/src``, for example), and with environment variable expansion |
38 (``build/$BUILDNUM/src``). | 287 (``build/$BUILDNUM/src``). |
39 | 288 |
40 - Trying to create an XML report with no files to report on, would cause a | 289 - Trying to create an XML report with no files to report on, would cause a |
41 ZeroDivideError, but no longer does, fixing `issue 250`_. | 290 ZeroDivideError, but no longer does, fixing `issue 250`_. |
42 | 291 |
43 - When running a threaded program under the Python tracer, coverage no longer | 292 - When running a threaded program under the Python tracer, coverage.py no |
44 issues a spurious warning about the trace function changing: "Trace function | 293 longer issues a spurious warning about the trace function changing: "Trace |
45 changed, measurement is likely wrong: None." This fixes `issue 164`_. | 294 function changed, measurement is likely wrong: None." This fixes |
| 295 `issue 164`_. |
46 | 296 |
47 - Static files necessary for HTML reports are found in system-installed places, | 297 - Static files necessary for HTML reports are found in system-installed places, |
48 to ease OS-level packaging of coverage.py. Closes `issue 259`_. | 298 to ease OS-level packaging of coverage.py. Closes `issue 259`_. |
49 | 299 |
50 - Source files with encoding declarations, but a blank first line, were not | 300 - Source files with encoding declarations, but a blank first line, were not |
51 decoded properly. Now they are. Thanks, Roger Hu. | 301 decoded properly. Now they are. Thanks, Roger Hu. |
52 | 302 |
53 - The source kit now includes the ``__main__.py`` file in the root coverage | 303 - The source kit now includes the ``__main__.py`` file in the root coverage |
54 directory, fixing `issue 255`_. | 304 directory, fixing `issue 255`_. |
55 | 305 |
56 .. _issue 92: https://bitbucket.org/ned/coveragepy/issue/92/finally-clauses-aren
t-treated-properly-in | 306 .. _issue 92: https://bitbucket.org/ned/coveragepy/issue/92/finally-clauses-aren
t-treated-properly-in |
57 .. _issue 164: https://bitbucket.org/ned/coveragepy/issue/164/trace-function-cha
nged-warning-when-using | 307 .. _issue 164: https://bitbucket.org/ned/coveragepy/issue/164/trace-function-cha
nged-warning-when-using |
58 .. _issue 175: https://bitbucket.org/ned/coveragepy/issue/175/branch-coverage-ge
ts-confused-in-certain | 308 .. _issue 175: https://bitbucket.org/ned/coveragepy/issue/175/branch-coverage-ge
ts-confused-in-certain |
59 .. _issue 207: https://bitbucket.org/ned/coveragepy/issue/207/run-m-cannot-find-
module-or-package-in | 309 .. _issue 207: https://bitbucket.org/ned/coveragepy/issue/207/run-m-cannot-find-
module-or-package-in |
60 .. _issue 242: https://bitbucket.org/ned/coveragepy/issue/242/running-a-two-leve
l-package-doesnt-work | 310 .. _issue 242: https://bitbucket.org/ned/coveragepy/issue/242/running-a-two-leve
l-package-doesnt-work |
61 .. _issue 218: https://bitbucket.org/ned/coveragepy/issue/218/run-command-does-n
ot-respect-the-omit-flag | 311 .. _issue 218: https://bitbucket.org/ned/coveragepy/issue/218/run-command-does-n
ot-respect-the-omit-flag |
62 .. _issue 250: https://bitbucket.org/ned/coveragepy/issue/250/uncaught-zerodivis
ionerror-when-generating | 312 .. _issue 250: https://bitbucket.org/ned/coveragepy/issue/250/uncaught-zerodivis
ionerror-when-generating |
63 .. _issue 255: https://bitbucket.org/ned/coveragepy/issue/255/directory-level-__
main__py-not-included-in | 313 .. _issue 255: https://bitbucket.org/ned/coveragepy/issue/255/directory-level-__
main__py-not-included-in |
64 .. _issue 259: https://bitbucket.org/ned/coveragepy/issue/259/allow-use-of-syste
m-installed-third-party | 314 .. _issue 259: https://bitbucket.org/ned/coveragepy/issue/259/allow-use-of-syste
m-installed-third-party |
65 .. _issue 261: https://bitbucket.org/ned/coveragepy/issue/261/pyw-files-arent-re
ported-properly | 315 .. _issue 261: https://bitbucket.org/ned/coveragepy/issue/261/pyw-files-arent-re
ported-properly |
66 .. _issue 264: https://bitbucket.org/ned/coveragepy/issue/264/coverage-wont-run-
pyc-files | 316 .. _issue 264: https://bitbucket.org/ned/coveragepy/issue/264/coverage-wont-run-
pyc-files |
67 .. _issue 267: https://bitbucket.org/ned/coveragepy/issue/267/relative-path-alia
ses-dont-work | 317 .. _issue 267: https://bitbucket.org/ned/coveragepy/issue/267/relative-path-alia
ses-dont-work |
68 | 318 |
69 | 319 |
70 Version 3.6 --- 5 January 2013 | 320 Version 3.6 --- 5 January 2013 |
71 ------------------------------ | 321 ------------------------------ |
72 | 322 |
73 - Added a page to the docs about troublesome situations, closing `issue 226`_, | 323 Features: |
74 and added some info to the TODO file, closing `issue 227`_. | |
75 | 324 |
76 .. _issue 226: https://bitbucket.org/ned/coveragepy/issue/226/make-readme-sectio
n-to-describe-when | 325 - The **report**, **html**, and **xml** commands now accept a ``--fail-under`` |
77 .. _issue 227: https://bitbucket.org/ned/coveragepy/issue/227/update-todo | 326 switch that indicates in the exit status whether the coverage percentage was |
| 327 less than a particular value. Closes `issue 139`_. |
78 | 328 |
| 329 - The reporting functions coverage.report(), coverage.html_report(), and |
| 330 coverage.xml_report() now all return a float, the total percentage covered |
| 331 measurement. |
79 | 332 |
80 Version 3.6b3 --- 29 December 2012 | 333 - The HTML report's title can now be set in the configuration file, with the |
81 ---------------------------------- | 334 ``--title`` switch on the command line, or via the API. |
82 | 335 |
83 - Beta 2 broke the nose plugin. It's fixed again, closing `issue 224`_. | 336 - Configuration files now support substitution of environment variables, using |
| 337 syntax like ``${WORD}``. Closes `issue 97`_. |
84 | 338 |
85 .. _issue 224: https://bitbucket.org/ned/coveragepy/issue/224/36b2-breaks-nosexc
over | 339 Packaging: |
86 | |
87 | |
88 Version 3.6b2 --- 23 December 2012 | |
89 ---------------------------------- | |
90 | |
91 - Coverage.py runs on Python 2.3 and 2.4 again. It was broken in 3.6b1. | |
92 | 340 |
93 - The C extension is optionally compiled using a different more widely-used | 341 - The C extension is optionally compiled using a different more widely-used |
94 technique, taking another stab at fixing `issue 80`_ once and for all. | 342 technique, taking another stab at fixing `issue 80`_ once and for all. |
95 | 343 |
96 - Combining data files would create entries for phantom files if used with | 344 - When installing, now in addition to creating a "coverage" command, two new |
97 ``source`` and path aliases. It no longer does. | 345 aliases are also installed. A "coverage2" or "coverage3" command will be |
| 346 created, depending on whether you are installing in Python 2.x or 3.x. |
| 347 A "coverage-X.Y" command will also be created corresponding to your specific |
| 348 version of Python. Closes `issue 111`_. |
98 | 349 |
99 - ``debug sys`` now shows the configuration file path that was read. | 350 - The coverage.py installer no longer tries to bootstrap setuptools or |
| 351 Distribute. You must have one of them installed first, as `issue 202`_ |
| 352 recommended. |
100 | 353 |
101 - If an oddly-behaved package claims that code came from an empty-string | 354 - The coverage.py kit now includes docs (closing `issue 137`_) and tests. |
102 filename, coverage.py no longer associates it with the directory name, | |
103 fixing `issue 221`_. | |
104 | 355 |
105 .. _issue 80: https://bitbucket.org/ned/coveragepy/issue/80/is-there-a-duck-typi
ng-way-to-know-we-cant | 356 Docs: |
106 .. _issue 221: https://bitbucket.org/ned/coveragepy/issue/221/coveragepy-incompa
tible-with-pyratemp | |
107 | 357 |
| 358 - Added a page to the docs about :doc:`contributing <contributing>` to |
| 359 coverage.py, closing `issue 171`_. |
108 | 360 |
109 Version 3.6b1 --- 28 November 2012 | 361 - Added a page to the docs about :doc:`troublesome situations <trouble>`, |
110 ---------------------------------- | 362 closing `issue 226`_. |
| 363 |
| 364 - Docstrings for the legacy singleton methods are more helpful. Thanks Marius |
| 365 Gedminas. Closes `issue 205`_. |
| 366 |
| 367 - The pydoc tool can now show documentation for the class `coverage.coverage`. |
| 368 Closes `issue 206`_. |
| 369 |
| 370 - Added some info to the TODO file, closing `issue 227`_. |
| 371 |
| 372 Fixes: |
111 | 373 |
112 - Wildcards in ``include=`` and ``omit=`` arguments were not handled properly | 374 - Wildcards in ``include=`` and ``omit=`` arguments were not handled properly |
113 in reporting functions, though they were when running. Now they are handled | 375 in reporting functions, though they were when running. Now they are handled |
114 uniformly, closing `issue 143`_ and `issue 163`_. **NOTE**: it is possible | 376 uniformly, closing `issue 143`_ and `issue 163`_. **NOTE**: it is possible |
115 that your configurations may now be incorrect. If you use ``include`` or | 377 that your configurations may now be incorrect. If you use ``include`` or |
116 ``omit`` during reporting, whether on the command line, through the API, or | 378 ``omit`` during reporting, whether on the command line, through the API, or |
117 in a configuration file, please check carefully that you were not relying on | 379 in a configuration file, please check carefully that you were not relying on |
118 the old broken behavior. | 380 the old broken behavior. |
119 | 381 |
120 - The **report**, **html**, and **xml** commands now accept a ``--fail-under`` | |
121 switch that indicates in the exit status whether the coverage percentage was | |
122 less than a particular value. Closes `issue 139`_. | |
123 | |
124 - The reporting functions coverage.report(), coverage.html_report(), and | |
125 coverage.xml_report() now all return a float, the total percentage covered | |
126 measurement. | |
127 | |
128 - The HTML report's title can now be set in the configuration file, with the | |
129 ``--title`` switch on the command line, or via the API. | |
130 | |
131 - Configuration files now support substitution of environment variables, using | |
132 syntax like ``${WORD}``. Closes `issue 97`_. | |
133 | |
134 - Embarrassingly, the `[xml] output=` setting in the .coveragerc file simply | 382 - Embarrassingly, the `[xml] output=` setting in the .coveragerc file simply |
135 didn't work. Now it does. | 383 didn't work. Now it does. |
136 | 384 |
137 - The XML report now consistently uses filenames for the filename attribute, | 385 - Combining data files would create entries for phantom files if used with |
| 386 ``source`` and path aliases. It no longer does. |
| 387 |
| 388 - ``debug sys`` now shows the configuration file path that was read. |
| 389 |
| 390 - If an oddly-behaved package claims that code came from an empty-string |
| 391 file name, coverage.py no longer associates it with the directory name, |
| 392 fixing `issue 221`_. |
| 393 |
| 394 - The XML report now consistently uses file names for the filename attribute, |
138 rather than sometimes using module names. Fixes `issue 67`_. | 395 rather than sometimes using module names. Fixes `issue 67`_. |
139 Thanks, Marcus Cobden. | 396 Thanks, Marcus Cobden. |
140 | 397 |
141 - Coverage percentage metrics are now computed slightly differently under | 398 - Coverage percentage metrics are now computed slightly differently under |
142 branch coverage. This means that completely unexecuted files will now | 399 branch coverage. This means that completely unexecuted files will now |
143 correctly have 0% coverage, fixing `issue 156`_. This also means that your | 400 correctly have 0% coverage, fixing `issue 156`_. This also means that your |
144 total coverage numbers will generally now be lower if you are measuring | 401 total coverage numbers will generally now be lower if you are measuring |
145 branch coverage. | 402 branch coverage. |
146 | 403 |
147 - When installing, now in addition to creating a "coverage" command, two new | |
148 aliases are also installed. A "coverage2" or "coverage3" command will be | |
149 created, depending on whether you are installing in Python 2.x or 3.x. | |
150 A "coverage-X.Y" command will also be created corresponding to your specific | |
151 version of Python. Closes `issue 111`_. | |
152 | |
153 - The coverage.py installer no longer tries to bootstrap setuptools or | |
154 Distribute. You must have one of them installed first, as `issue 202`_ | |
155 recommended. | |
156 | |
157 - The coverage.py kit now includes docs (closing `issue 137`_) and tests. | |
158 | |
159 - On Windows, files are now reported in their correct case, fixing `issue 89`_ | 404 - On Windows, files are now reported in their correct case, fixing `issue 89`_ |
160 and `issue 203`_. | 405 and `issue 203`_. |
161 | 406 |
162 - If a file is missing during reporting, the path shown in the error message | 407 - If a file is missing during reporting, the path shown in the error message |
163 is now correct, rather than an incorrect path in the current directory. | 408 is now correct, rather than an incorrect path in the current directory. |
164 Fixes `issue 60`_. | 409 Fixes `issue 60`_. |
165 | 410 |
166 - Running an HTML report in Python 3 in the same directory as an old Python 2 | 411 - Running an HTML report in Python 3 in the same directory as an old Python 2 |
167 HTML report would fail with a UnicodeDecodeError. This issue (`issue 193`_) | 412 HTML report would fail with a UnicodeDecodeError. This issue (`issue 193`_) |
168 is now fixed. | 413 is now fixed. |
169 | 414 |
170 - Fixed yet another error trying to parse non-Python files as Python, this | 415 - Fixed yet another error trying to parse non-Python files as Python, this |
171 time an IndentationError, closing `issue 82`_ for the fourth time... | 416 time an IndentationError, closing `issue 82`_ for the fourth time... |
172 | 417 |
173 - If `coverage xml` fails because there is no data to report, it used to | 418 - 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`_. | 419 create a zero-length XML file. Now it doesn't, fixing `issue 210`_. |
175 | 420 |
176 - Jython files now work with the ``--source`` option, fixing `issue 100`_. | 421 - Jython files now work with the ``--source`` option, fixing `issue 100`_. |
177 | 422 |
178 - Running coverage under a debugger is unlikely to work, but it shouldn't fail | 423 - 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`_. | 424 fail with "TypeError: 'NoneType' object is not iterable". Fixes |
| 425 `issue 201`_. |
180 | 426 |
181 - On some Linux distributions, when installed with the OS package manager, | 427 - 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, | 428 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 | 429 fixing `issue 214`_, though this will take some time to be repackaged by the |
184 operating systems. | 430 operating systems. |
185 | 431 |
186 - Docstrings for the legacy singleton methods are more helpful. Thanks Marius | |
187 Gedminas. Closes `issue 205`_. | |
188 | |
189 - The pydoc tool can now show docmentation for the class `coverage.coverage`. | |
190 Closes `issue 206`_. | |
191 | |
192 - Added a page to the docs about contributing to coverage.py, closing | |
193 `issue 171`_. | |
194 | |
195 - When coverage.py ended unsuccessfully, it may have reported odd errors like | 432 - When coverage.py ended unsuccessfully, it may have reported odd errors like |
196 ``'NoneType' object has no attribute 'isabs'``. It no longer does, | 433 ``'NoneType' object has no attribute 'isabs'``. It no longer does, |
197 so kiss `issue 153`_ goodbye. | 434 so kiss `issue 153`_ goodbye. |
198 | 435 |
| 436 |
199 .. _issue 60: https://bitbucket.org/ned/coveragepy/issue/60/incorrect-path-to-or
phaned-pyc-files | 437 .. _issue 60: https://bitbucket.org/ned/coveragepy/issue/60/incorrect-path-to-or
phaned-pyc-files |
200 .. _issue 67: https://bitbucket.org/ned/coveragepy/issue/67/xml-report-filenames
-may-be-generated | 438 .. _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-gene
rating-html-report | 439 .. _issue 80: https://bitbucket.org/ned/coveragepy/issue/80/is-there-a-duck-typi
ng-way-to-know-we-cant |
202 .. _issue 89: https://bitbucket.org/ned/coveragepy/issue/89/on-windows-all-packa
ges-are-reported-in | 440 .. _issue 89: https://bitbucket.org/ned/coveragepy/issue/89/on-windows-all-packa
ges-are-reported-in |
203 .. _issue 97: https://bitbucket.org/ned/coveragepy/issue/97/allow-environment-va
riables-to-be | 441 .. _issue 97: https://bitbucket.org/ned/coveragepy/issue/97/allow-environment-va
riables-to-be |
204 .. _issue 100: https://bitbucket.org/ned/coveragepy/issue/100/source-directive-d
oesnt-work-for-packages | 442 .. _issue 100: https://bitbucket.org/ned/coveragepy/issue/100/source-directive-d
oesnt-work-for-packages |
205 .. _issue 111: https://bitbucket.org/ned/coveragepy/issue/111/when-installing-co
verage-with-pip-not | 443 .. _issue 111: https://bitbucket.org/ned/coveragepy/issue/111/when-installing-co
verage-with-pip-not |
206 .. _issue 137: https://bitbucket.org/ned/coveragepy/issue/137/provide-docs-with-
source-distribution | 444 .. _issue 137: https://bitbucket.org/ned/coveragepy/issue/137/provide-docs-with-
source-distribution |
207 .. _issue 139: https://bitbucket.org/ned/coveragepy/issue/139/easy-check-for-a-c
ertain-coverage-in-tests | 445 .. _issue 139: https://bitbucket.org/ned/coveragepy/issue/139/easy-check-for-a-c
ertain-coverage-in-tests |
208 .. _issue 143: https://bitbucket.org/ned/coveragepy/issue/143/omit-doesnt-seem-t
o-work-in-coverage | 446 .. _issue 143: https://bitbucket.org/ned/coveragepy/issue/143/omit-doesnt-seem-t
o-work-in-coverage |
209 .. _issue 153: https://bitbucket.org/ned/coveragepy/issue/153/non-existent-filen
ame-triggers | 447 .. _issue 153: https://bitbucket.org/ned/coveragepy/issue/153/non-existent-filen
ame-triggers |
210 .. _issue 156: https://bitbucket.org/ned/coveragepy/issue/156/a-completely-unexe
cuted-file-shows-14 | 448 .. _issue 156: https://bitbucket.org/ned/coveragepy/issue/156/a-completely-unexe
cuted-file-shows-14 |
211 .. _issue 163: https://bitbucket.org/ned/coveragepy/issue/163/problem-with-inclu
de-and-omit-filename | 449 .. _issue 163: https://bitbucket.org/ned/coveragepy/issue/163/problem-with-inclu
de-and-omit-filename |
212 .. _issue 171: https://bitbucket.org/ned/coveragepy/issue/171/how-to-contribute-
and-run-tests | 450 .. _issue 171: https://bitbucket.org/ned/coveragepy/issue/171/how-to-contribute-
and-run-tests |
213 .. _issue 193: https://bitbucket.org/ned/coveragepy/issue/193/unicodedecodeerror
-on-htmlpy | 451 .. _issue 193: https://bitbucket.org/ned/coveragepy/issue/193/unicodedecodeerror
-on-htmlpy |
214 .. _issue 201: https://bitbucket.org/ned/coveragepy/issue/201/coverage-using-dja
ngo-14-with-pydb-on | 452 .. _issue 201: https://bitbucket.org/ned/coveragepy/issue/201/coverage-using-dja
ngo-14-with-pydb-on |
215 .. _issue 202: https://bitbucket.org/ned/coveragepy/issue/202/get-rid-of-ez_setu
ppy-and | 453 .. _issue 202: https://bitbucket.org/ned/coveragepy/issue/202/get-rid-of-ez_setu
ppy-and |
216 .. _issue 203: https://bitbucket.org/ned/coveragepy/issue/203/duplicate-filename
s-reported-when-filename | 454 .. _issue 203: https://bitbucket.org/ned/coveragepy/issue/203/duplicate-filename
s-reported-when-filename |
217 .. _issue 205: https://bitbucket.org/ned/coveragepy/issue/205/make-pydoc-coverag
e-more-friendly | 455 .. _issue 205: https://bitbucket.org/ned/coveragepy/issue/205/make-pydoc-coverag
e-more-friendly |
218 .. _issue 206: https://bitbucket.org/ned/coveragepy/issue/206/pydoc-coveragecove
rage-fails-with-an-error | 456 .. _issue 206: https://bitbucket.org/ned/coveragepy/issue/206/pydoc-coveragecove
rage-fails-with-an-error |
219 .. _issue 210: https://bitbucket.org/ned/coveragepy/issue/210/if-theres-no-cover
age-data-coverage-xml | 457 .. _issue 210: https://bitbucket.org/ned/coveragepy/issue/210/if-theres-no-cover
age-data-coverage-xml |
220 .. _issue 214: https://bitbucket.org/ned/coveragepy/issue/214/coveragepy-measure
s-itself-on-precise | 458 .. _issue 214: https://bitbucket.org/ned/coveragepy/issue/214/coveragepy-measure
s-itself-on-precise |
| 459 .. _issue 221: https://bitbucket.org/ned/coveragepy/issue/221/coveragepy-incompa
tible-with-pyratemp |
| 460 .. _issue 226: https://bitbucket.org/ned/coveragepy/issue/226/make-readme-sectio
n-to-describe-when |
| 461 .. _issue 227: https://bitbucket.org/ned/coveragepy/issue/227/update-todo |
221 | 462 |
222 | 463 |
223 Version 3.5.3 --- 29 September 2012 | 464 Version 3.5.3 --- 29 September 2012 |
224 ----------------------------------- | 465 ----------------------------------- |
225 | 466 |
226 - Line numbers in the HTML report line up better with the source lines, fixing | 467 - Line numbers in the HTML report line up better with the source lines, fixing |
227 `issue 197`_, thanks Marius Gedminas. | 468 `issue 197`_, thanks Marius Gedminas. |
228 | 469 |
229 - When specifying a directory as the source= option, the directory itself no | 470 - 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 | 471 longer needs to have a ``__init__.py`` file, though its sub-directories do, |
231 be considered as source files. | 472 to be considered as source files. |
232 | 473 |
233 - Files encoded as UTF-8 with a BOM are now properly handled, fixing | 474 - Files encoded as UTF-8 with a BOM are now properly handled, fixing |
234 `issue 179`_. Thanks, Pablo Carballo. | 475 `issue 179`_. Thanks, Pablo Carballo. |
235 | 476 |
236 - Fixed more cases of non-Python files being reported as Python source, and | 477 - Fixed more cases of non-Python files being reported as Python source, and |
237 then not being able to parse them as Python. Closes `issue 82`_ (again). | 478 then not being able to parse them as Python. Closes `issue 82`_ (again). |
238 Thanks, Julian Berman. | 479 Thanks, Julian Berman. |
239 | 480 |
240 - Fixed memory leaks under Python 3, thanks, Brett Cannon. Closes `issue 147`_. | 481 - Fixed memory leaks under Python 3, thanks, Brett Cannon. Closes `issue 147`_. |
241 | 482 |
242 - Optimized .pyo files may not have been handled correctly, `issue 195`_. | 483 - Optimized .pyo files may not have been handled correctly, `issue 195`_. |
243 Thanks, Marius Gedminas. | 484 Thanks, Marius Gedminas. |
244 | 485 |
245 - Certain unusually named file paths could have been mangled during reporting, | 486 - Certain unusually named file paths could have been mangled during reporting, |
246 `issue 194`_. Thanks, Marius Gedminas. | 487 `issue 194`_. Thanks, Marius Gedminas. |
247 | 488 |
248 - Try to do a better job of the impossible task of detecting when we can't | 489 - Try to do a better job of the impossible task of detecting when we can't |
249 build the C extension, fixing `issue 183`_. | 490 build the C extension, fixing `issue 183`_. |
250 | 491 |
251 - Testing is now done with `tox`_, thanks, Marc Abramowitz. | |
252 | |
253 .. _issue 82: https://bitbucket.org/ned/coveragepy/issue/82/tokenerror-when-gene
rating-html-report | |
254 .. _issue 147: https://bitbucket.org/ned/coveragepy/issue/147/massive-memory-usa
ge-by-ctracer | 492 .. _issue 147: https://bitbucket.org/ned/coveragepy/issue/147/massive-memory-usa
ge-by-ctracer |
255 .. _issue 179: https://bitbucket.org/ned/coveragepy/issue/179/htmlreporter-fails
-when-source-file-is | 493 .. _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 | 494 .. _issue 183: https://bitbucket.org/ned/coveragepy/issue/183/install-fails-for-
python-23 |
257 .. _issue 194: https://bitbucket.org/ned/coveragepy/issue/194/filelocatorrelativ
e_filename-could-mangle | 495 .. _issue 194: https://bitbucket.org/ned/coveragepy/issue/194/filelocatorrelativ
e_filename-could-mangle |
258 .. _issue 195: https://bitbucket.org/ned/coveragepy/issue/195/pyo-file-handling-
in-codeunit | 496 .. _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-ht
ml-report-do-not-align | 497 .. _issue 197: https://bitbucket.org/ned/coveragepy/issue/197/line-numbers-in-ht
ml-report-do-not-align |
260 .. _tox: http://tox.readthedocs.org/ | |
261 | |
262 | 498 |
263 | 499 |
264 Version 3.5.2 --- 4 May 2012 | 500 Version 3.5.2 --- 4 May 2012 |
265 ---------------------------- | 501 ---------------------------- |
266 | 502 |
267 No changes since 3.5.2.b1 | |
268 | |
269 | |
270 Version 3.5.2b1 --- 29 April 2012 | |
271 --------------------------------- | |
272 | |
273 - The HTML report has slightly tweaked controls: the buttons at the top of | 503 - 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. | 504 the page are color-coded to the source lines they affect. |
275 | 505 |
276 - Custom CSS can be applied to the HTML report by specifying a CSS file as | 506 - 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. | 507 the extra_css configuration value in the [html] section. |
278 | 508 |
279 - Source files with custom encodings declared in a comment at the top are now | 509 - 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 | 510 properly handled during reporting on Python 2. Python 3 always handled them |
281 properly. This fixes `issue 157`_. | 511 properly. This fixes `issue 157`_. |
282 | 512 |
283 - Backup files left behind by editors are no longer collected by the source= | 513 - Backup files left behind by editors are no longer collected by the source= |
284 option, fixing `issue 168`_. | 514 option, fixing `issue 168`_. |
285 | 515 |
286 - If a file doesn't parse properly as Python, we don't report it as an error | 516 - 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 | 517 if the file name seems like maybe it wasn't meant to be Python. This is a |
288 pragmatic fix for `issue 82`_. | 518 pragmatic fix for `issue 82`_. |
289 | 519 |
290 - The ``-m`` switch on ``coverage report``, which includes missing line numbers | 520 - 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 | 521 in the summary report, can now be specified as ``show_missing`` in the |
292 config file. Closes `issue 173`_. | 522 config file. Closes `issue 173`_. |
293 | 523 |
294 - When running a module with ``coverage run -m <modulename>``, certain details | 524 - When running a module with ``coverage run -m <modulename>``, certain details |
295 of the execution environment weren't the same as for | 525 of the execution environment weren't the same as for |
296 ``python -m <modulename>``. This had the unfortunate side-effect of making | 526 ``python -m <modulename>``. This had the unfortunate side-effect of making |
297 ``coverage run -m unittest discover`` not work if you had tests in a | 527 ``coverage run -m unittest discover`` not work if you had tests in a |
298 directory named "test". This fixes `issue 155`_ and `issue 142`_. | 528 directory named "test". This fixes `issue 155`_. |
299 | 529 |
300 - Now the exit status of your product code is properly used as the process | 530 - Now the exit status of your product code is properly used as the process |
301 status when running ``python -m coverage run ...``. Thanks, JT Olds. | 531 status when running ``python -m coverage run ...``. Thanks, JT Olds. |
302 | 532 |
303 - When installing into pypy, we no longer attempt (and fail) to compile | 533 - When installing into pypy, we no longer attempt (and fail) to compile |
304 the C tracer function, closing `issue 166`_. | 534 the C tracer function, closing `issue 166`_. |
305 | 535 |
306 .. _issue 82: https://bitbucket.org/ned/coveragepy/issue/82/tokenerror-when-gene
rating-html-report | 536 .. _issue 82: https://bitbucket.org/ned/coveragepy/issue/82/tokenerror-when-gene
rating-html-report |
307 .. _issue 142: https://bitbucket.org/ned/coveragepy/issue/142/executing-python-f
ile-syspath-is-replaced | |
308 .. _issue 155: https://bitbucket.org/ned/coveragepy/issue/155/cant-use-coverage-
run-m-unittest-discover | 537 .. _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-f
iles-with-non-utf-8 | 538 .. _issue 157: https://bitbucket.org/ned/coveragepy/issue/157/chokes-on-source-f
iles-with-non-utf-8 |
310 .. _issue 166: https://bitbucket.org/ned/coveragepy/issue/166/dont-try-to-compil
e-c-extension-on-pypy | 539 .. _issue 166: https://bitbucket.org/ned/coveragepy/issue/166/dont-try-to-compil
e-c-extension-on-pypy |
311 .. _issue 168: https://bitbucket.org/ned/coveragepy/issue/168/dont-be-alarmed-by
-emacs-droppings | 540 .. _issue 168: https://bitbucket.org/ned/coveragepy/issue/168/dont-be-alarmed-by
-emacs-droppings |
312 .. _issue 173: https://bitbucket.org/ned/coveragepy/issue/173/theres-no-way-to-s
pecify-show-missing-in | 541 .. _issue 173: https://bitbucket.org/ned/coveragepy/issue/173/theres-no-way-to-s
pecify-show-missing-in |
313 | 542 |
314 | 543 |
315 Version 3.5.1 --- 23 September 2011 | 544 Version 3.5.1 --- 23 September 2011 |
316 ----------------------------------- | 545 ----------------------------------- |
317 | 546 |
318 - The ``[paths]`` feature unfortunately didn't work in real world situations | 547 - When combining data files from parallel runs, you can now instruct |
319 where you wanted to, you know, report on the combined data. Now all paths | 548 coverage.py about which directories are equivalent on different machines. A |
320 stored in the combined file are canonicalized properly. | 549 ``[paths]`` section in the configuration file lists paths that are to be |
321 | 550 considered equivalent. Finishes `issue 17`_. |
322 | |
323 Version 3.5.1b1 --- 28 August 2011 | |
324 ---------------------------------- | |
325 | |
326 - When combining data files from parallel runs, you can now instruct coverage | |
327 about which directories are equivalent on different machines. A ``[paths]`` | |
328 section in the configuration file lists paths that are to be considered | |
329 equivalent. Finishes `issue 17`_. | |
330 | 551 |
331 - for-else constructs are understood better, and don't cause erroneous partial | 552 - for-else constructs are understood better, and don't cause erroneous partial |
332 branch warnings. Fixes `issue 122`_. | 553 branch warnings. Fixes `issue 122`_. |
333 | 554 |
334 - Branch coverage for ``with`` statements is improved, fixing `issue 128`_. | 555 - Branch coverage for ``with`` statements is improved, fixing `issue 128`_. |
335 | 556 |
336 - The number of partial branches reported on the HTML summary page was | 557 - The number of partial branches reported on the HTML summary page was |
337 different than the number reported on the individual file pages. This is | 558 different than the number reported on the individual file pages. This is |
338 now fixed. | 559 now fixed. |
339 | 560 |
340 - An explicit include directive to measure files in the Python installation | 561 - An explicit include directive to measure files in the Python installation |
341 wouldn't work because of the standard library exclusion. Now the include | 562 wouldn't work because of the standard library exclusion. Now the include |
342 directive takes precendence, and the files will be measured. Fixes | 563 directive takes precedence, and the files will be measured. Fixes |
343 `issue 138`_. | 564 `issue 138`_. |
344 | 565 |
345 - The HTML report now handles Unicode characters in Python source files | 566 - The HTML report now handles Unicode characters in Python source files |
346 properly. This fixes `issue 124`_ and `issue 144`_. Thanks, Devin | 567 properly. This fixes `issue 124`_ and `issue 144`_. Thanks, Devin |
347 Jeanpierre. | 568 Jeanpierre. |
348 | 569 |
349 - In order to help the core developers measure the test coverage of the | 570 - 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 | 571 standard library, Brandon Rhodes devised an aggressive hack to trick Python |
351 into running some coverage code before anything else in the process. | 572 into running some coverage.py code before anything else in the process. |
352 See the coverage/fullcoverage directory if you are interested. | 573 See the coverage/fullcoverage directory if you are interested. |
353 | 574 |
354 .. _issue 17: http://bitbucket.org/ned/coveragepy/issue/17/support-combining-cov
erage-data-from | 575 .. _issue 17: http://bitbucket.org/ned/coveragepy/issue/17/support-combining-cov
erage-data-from |
355 .. _issue 122: http://bitbucket.org/ned/coveragepy/issue/122/for-else-always-rep
orts-missing-branch | 576 .. _issue 122: http://bitbucket.org/ned/coveragepy/issue/122/for-else-always-rep
orts-missing-branch |
356 .. _issue 124: http://bitbucket.org/ned/coveragepy/issue/124/no-arbitrary-unicod
e-in-html-reports-in | 577 .. _issue 124: http://bitbucket.org/ned/coveragepy/issue/124/no-arbitrary-unicod
e-in-html-reports-in |
357 .. _issue 128: http://bitbucket.org/ned/coveragepy/issue/128/branch-coverage-of-
with-statement-in-27 | 578 .. _issue 128: http://bitbucket.org/ned/coveragepy/issue/128/branch-coverage-of-
with-statement-in-27 |
358 .. _issue 138: http://bitbucket.org/ned/coveragepy/issue/138/include-should-take
-precedence-over-is | 579 .. _issue 138: http://bitbucket.org/ned/coveragepy/issue/138/include-should-take
-precedence-over-is |
359 .. _issue 144: http://bitbucket.org/ned/coveragepy/issue/144/failure-generating-
html-output-for | 580 .. _issue 144: http://bitbucket.org/ned/coveragepy/issue/144/failure-generating-
html-output-for |
360 | 581 |
361 | 582 |
362 Version 3.5 --- 29 June 2011 | 583 Version 3.5 --- 29 June 2011 |
363 ---------------------------- | 584 ---------------------------- |
364 | 585 |
365 - The HTML report hotkeys now behave slightly differently when the current | 586 HTML reporting: |
366 chunk isn't visible at all: a chunk on the screen will be selected, | |
367 instead of the old behavior of jumping to the literal next chunk. | |
368 The hotkeys now work in Google Chrome. Thanks, Guido van Rossum. | |
369 | |
370 | |
371 Version 3.5b1 --- 5 June 2011 | |
372 ----------------------------- | |
373 | 587 |
374 - The HTML report now has hotkeys. Try ``n``, ``s``, ``m``, ``x``, ``b``, | 588 - The HTML report now has hotkeys. Try ``n``, ``s``, ``m``, ``x``, ``b``, |
375 ``p``, and ``c`` on the overview page to change the column sorting. | 589 ``p``, and ``c`` on the overview page to change the column sorting. |
376 On a file page, ``r``, ``m``, ``x``, and ``p`` toggle the run, missing, | 590 On a file page, ``r``, ``m``, ``x``, and ``p`` toggle the run, missing, |
377 excluded, and partial line markings. You can navigate the highlighted | 591 excluded, and partial line markings. You can navigate the highlighted |
378 sections of code by using the ``j`` and ``k`` keys for next and previous. | 592 sections of code by using the ``j`` and ``k`` keys for next and previous. |
379 The ``1`` (one) key jumps to the first highlighted section in the file, | 593 The ``1`` (one) key jumps to the first highlighted section in the file, |
380 and ``0`` (zero) scrolls to the top of the file. | 594 and ``0`` (zero) scrolls to the top of the file. |
381 | 595 |
382 - The ``--omit`` and ``--include`` switches now interpret their values more | |
383 usefully. If the value starts with a wildcard character, it is used as-is. | |
384 If it does not, it is interpreted relative to the current directory. | |
385 Closes `issue 121`_. | |
386 | |
387 - Partial branch warnings can now be pragma'd away. The configuration option | |
388 ``partial_branches`` is a list of regular expressions. Lines matching any of | |
389 those expressions will never be marked as a partial branch. In addition, | |
390 there's a built-in list of regular expressions marking statements which should | |
391 never be marked as partial. This list includes ``while True:``, ``while 1:``, | |
392 ``if 1:``, and ``if 0:``. | |
393 | |
394 - The ``coverage()`` constructor accepts single strings for the ``omit=`` and | |
395 ``include=`` arguments, adapting to a common error in programmatic use. | |
396 | |
397 - Modules can now be run directly using ``coverage run -m modulename``, to | |
398 mirror Python's ``-m`` flag. Closes `issue 95`_, thanks, Brandon Rhodes. | |
399 | |
400 - ``coverage run`` didn't emulate Python accurately in one small detail: the | |
401 current directory inserted into ``sys.path`` was relative rather than | |
402 absolute. This is now fixed. | |
403 | |
404 - HTML reporting is now incremental: a record is kept of the data that | 596 - HTML reporting is now incremental: a record is kept of the data that |
405 produced the HTML reports, and only files whose data has changed will | 597 produced the HTML reports, and only files whose data has changed will |
406 be generated. This should make most HTML reporting faster. | 598 be generated. This should make most HTML reporting faster. |
407 | 599 |
| 600 |
| 601 Running Python files |
| 602 |
| 603 - Modules can now be run directly using ``coverage run -m modulename``, to |
| 604 mirror Python's ``-m`` flag. Closes `issue 95`_, thanks, Brandon Rhodes. |
| 605 |
| 606 - ``coverage run`` didn't emulate Python accurately in one detail: the |
| 607 current directory inserted into ``sys.path`` was relative rather than |
| 608 absolute. This is now fixed. |
| 609 |
408 - Pathological code execution could disable the trace function behind our | 610 - Pathological code execution could disable the trace function behind our |
409 backs, leading to incorrect code measurement. Now if this happens, | 611 backs, leading to incorrect code measurement. Now if this happens, |
410 coverage.py will issue a warning, at least alerting you to the problem. | 612 coverage.py will issue a warning, at least alerting you to the problem. |
411 Closes `issue 93`_. Thanks to Marius Gedminas for the idea. | 613 Closes `issue 93`_. Thanks to Marius Gedminas for the idea. |
412 | 614 |
413 - The C-based trace function now behaves properly when saved and restored | 615 - The C-based trace function now behaves properly when saved and restored |
414 with ``sys.gettrace()`` and ``sys.settrace()``. This fixes `issue 125`_ | 616 with ``sys.gettrace()`` and ``sys.settrace()``. This fixes `issue 125`_ |
415 and `issue 123`_. Thanks, Devin Jeanpierre. | 617 and `issue 123`_. Thanks, Devin Jeanpierre. |
416 | 618 |
417 - Source files are now opened with Python 3.2's ``tokenize.open()`` where | |
418 possible, to get the best handling of Python source files with encodings. | |
419 Closes `issue 107`_, thanks, Brett Cannon. | |
420 | |
421 - Syntax errors in supposed Python files can now be ignored during reporting | |
422 with the ``-i`` switch just like other source errors. Closes `issue 115`_. | |
423 | |
424 - Installation from source now succeeds on machines without a C compiler, | |
425 closing `issue 80`_. | |
426 | |
427 - Coverage.py can now be run directly from a working tree by specifying | 619 - Coverage.py can now be run directly from a working tree by specifying |
428 the directory name to python: ``python coverage_py_working_dir run ...``. | 620 the directory name to python: ``python coverage_py_working_dir run ...``. |
429 Thanks, Brett Cannon. | 621 Thanks, Brett Cannon. |
430 | 622 |
431 - A little bit of Jython support: `coverage run` can now measure Jython | 623 - A little bit of Jython support: `coverage run` can now measure Jython |
432 execution by adapting when $py.class files are traced. Thanks, Adi Roiban. | 624 execution by adapting when $py.class files are traced. Thanks, Adi Roiban. |
433 Jython still doesn't provide the Python libraries needed to make | |
434 coverage reporting work, unfortunately. | |
435 | 625 |
436 - Internally, files are now closed explicitly, fixing `issue 104`_. Thanks, | |
437 Brett Cannon. | |
438 | 626 |
439 .. _issue 80: https://bitbucket.org/ned/coveragepy/issue/80/is-there-a-duck-typi
ng-way-to-know-we-cant | 627 Reporting |
| 628 |
| 629 - Partial branch warnings can now be pragma'd away. The configuration option |
| 630 ``partial_branches`` is a list of regular expressions. Lines matching any of |
| 631 those expressions will never be marked as a partial branch. In addition, |
| 632 there's a built-in list of regular expressions marking statements which should |
| 633 never be marked as partial. This list includes ``while True:``, ``while 1:``, |
| 634 ``if 1:``, and ``if 0:``. |
| 635 |
| 636 - The ``--omit`` and ``--include`` switches now interpret their values more |
| 637 usefully. If the value starts with a wildcard character, it is used as-is. |
| 638 If it does not, it is interpreted relative to the current directory. |
| 639 Closes `issue 121`_. |
| 640 |
| 641 - Syntax errors in supposed Python files can now be ignored during reporting |
| 642 with the ``-i`` switch just like other source errors. Closes `issue 115`_. |
| 643 |
440 .. _issue 93: http://bitbucket.org/ned/coveragepy/issue/93/copying-a-mock-object
-breaks-coverage | 644 .. _issue 93: http://bitbucket.org/ned/coveragepy/issue/93/copying-a-mock-object
-breaks-coverage |
441 .. _issue 95: https://bitbucket.org/ned/coveragepy/issue/95/run-subcommand-shoul
d-take-a-module-name | 645 .. _issue 95: https://bitbucket.org/ned/coveragepy/issue/95/run-subcommand-shoul
d-take-a-module-name |
442 .. _issue 104: https://bitbucket.org/ned/coveragepy/issue/104/explicitly-close-f
iles | |
443 .. _issue 107: https://bitbucket.org/ned/coveragepy/issue/107/codeparser-not-ope
ning-source-files-with | |
444 .. _issue 115: https://bitbucket.org/ned/coveragepy/issue/115/fail-gracefully-wh
en-reporting-on-file | 646 .. _issue 115: https://bitbucket.org/ned/coveragepy/issue/115/fail-gracefully-wh
en-reporting-on-file |
445 .. _issue 121: https://bitbucket.org/ned/coveragepy/issue/121/filename-patterns-
are-applied-stupidly | 647 .. _issue 121: https://bitbucket.org/ned/coveragepy/issue/121/filename-patterns-
are-applied-stupidly |
446 .. _issue 123: https://bitbucket.org/ned/coveragepy/issue/123/pyeval_settrace-us
ed-in-way-that-breaks | 648 .. _issue 123: https://bitbucket.org/ned/coveragepy/issue/123/pyeval_settrace-us
ed-in-way-that-breaks |
447 .. _issue 125: https://bitbucket.org/ned/coveragepy/issue/125/coverage-removes-d
ecoratortoolss-tracing | 649 .. _issue 125: https://bitbucket.org/ned/coveragepy/issue/125/coverage-removes-d
ecoratortoolss-tracing |
448 | 650 |
449 | 651 |
450 Version 3.4 --- 19 September 2010 | 652 Version 3.4 --- 19 September 2010 |
451 --------------------------------- | 653 --------------------------------- |
452 | 654 |
453 - The XML report is now sorted by package name, fixing `issue 88`_. | 655 Controlling source: |
454 | 656 |
455 - Programs that exited with ``sys.exit()`` with no argument weren't handled | 657 - BACKWARD INCOMPATIBILITY: the ``--omit`` and ``--include`` switches now take |
456 properly, producing a coverage.py stack trace. That is now fixed. | 658 file patterns rather than file prefixes, closing `issue 34`_ and `issue 36`_. |
457 | 659 |
458 .. _issue 88: http://bitbucket.org/ned/coveragepy/issue/88/xml-report-lists-pack
ages-in-random-order | 660 - BACKWARD INCOMPATIBILITY: the `omit_prefixes` argument is gone throughout |
| 661 coverage.py, replaced with `omit`, a list of file name patterns suitable for |
| 662 `fnmatch`. A parallel argument `include` controls what files are included. |
459 | 663 |
| 664 - The run command now has a ``--source`` switch, a list of directories or |
| 665 module names. If provided, coverage.py will only measure execution in those |
| 666 source files. The run command also now supports ``--include`` and ``--omit`` |
| 667 to control what modules it measures. This can speed execution and reduce the |
| 668 amount of data during reporting. Thanks Zooko. |
460 | 669 |
461 Version 3.4b2 --- 6 September 2010 | 670 - The reporting commands (report, annotate, html, and xml) now have an |
462 ---------------------------------- | 671 ``--include`` switch to restrict reporting to modules matching those file |
| 672 patterns, similar to the existing ``--omit`` switch. Thanks, Zooko. |
| 673 |
| 674 Reporting: |
463 | 675 |
464 - Completely unexecuted files can now be included in coverage results, reported | 676 - Completely unexecuted files can now be included in coverage results, reported |
465 as 0% covered. This only happens if the --source option is specified, since | 677 as 0% covered. This only happens if the --source option is specified, since |
466 coverage.py needs guidance about where to look for source files. | 678 coverage.py needs guidance about where to look for source files. |
467 | 679 |
468 - The XML report output now properly includes a percentage for branch coverage, | |
469 fixing `issue 65`_ and `issue 81`_. | |
470 | |
471 - Coverage percentages are now displayed uniformly across reporting methods. | |
472 Previously, different reports could round percentages differently. Also, | |
473 percentages are only reported as 0% or 100% if they are truly 0 or 100, and | |
474 are rounded otherwise. Fixes `issue 41`_ and `issue 70`_. | |
475 | |
476 - The precision of reported coverage percentages can be set with the | |
477 ``[report] precision`` config file setting. Completes `issue 16`_. | |
478 | |
479 - Threads derived from ``threading.Thread`` with an overridden `run` method | |
480 would report no coverage for the `run` method. This is now fixed, closing | |
481 `issue 85`_. | |
482 | |
483 .. _issue 16: http://bitbucket.org/ned/coveragepy/issue/16/allow-configuration-o
f-accuracy-of-percentage-totals | |
484 .. _issue 41: http://bitbucket.org/ned/coveragepy/issue/41/report-says-100-when-
it-isnt-quite-there | |
485 .. _issue 65: http://bitbucket.org/ned/coveragepy/issue/65/branch-option-not-rep
orted-in-cobertura | |
486 .. _issue 70: http://bitbucket.org/ned/coveragepy/issue/70/text-report-and-html-
report-disagree-on-coverage | |
487 .. _issue 81: http://bitbucket.org/ned/coveragepy/issue/81/xml-report-does-not-h
ave-condition-coverage-attribute-for-lines-with-a | |
488 .. _issue 85: http://bitbucket.org/ned/coveragepy/issue/85/threadrun-isnt-measur
ed | |
489 | |
490 | |
491 Version 3.4b1 --- 21 August 2010 | |
492 -------------------------------- | |
493 | |
494 - BACKWARD INCOMPATIBILITY: the ``--omit`` and ``--include`` switches now take | |
495 file patterns rather than file prefixes, closing `issue 34`_ and `issue 36`_. | |
496 | |
497 - BACKWARD INCOMPATIBILITY: the `omit_prefixes` argument is gone throughout | |
498 coverage.py, replaced with `omit`, a list of filename patterns suitable for | |
499 `fnmatch`. A parallel argument `include` controls what files are included. | |
500 | |
501 - 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 | |
503 source files. | |
504 | |
505 - Various warnings are printed to stderr for problems encountered during data | |
506 measurement: if a ``--source`` module has no Python source to measure, or is | |
507 never encountered at all, or if no data is collected. | |
508 | |
509 - The reporting commands (report, annotate, html, and xml) now have an | |
510 ``--include`` switch to restrict reporting to modules matching those file | |
511 patterns, similar to the existing ``--omit`` switch. Thanks, Zooko. | |
512 | |
513 - The run command now supports ``--include`` and ``--omit`` to control what | |
514 modules it measures. This can speed execution and reduce the amount of data | |
515 during reporting. Thanks Zooko. | |
516 | |
517 - Since coverage.py 3.1, using the Python trace function has been slower than | |
518 it needs to be. A cache of tracing decisions was broken, but has now been | |
519 fixed. | |
520 | |
521 - Python 2.7 and 3.2 have introduced new opcodes that are now supported. | |
522 | |
523 - Python files with no statements, for example, empty ``__init__.py`` files, | 680 - Python files with no statements, for example, empty ``__init__.py`` files, |
524 are now reported as having zero statements instead of one. Fixes `issue 1`_. | 681 are now reported as having zero statements instead of one. Fixes `issue 1`_. |
525 | 682 |
526 - Reports now have a column of missed line counts rather than executed line | 683 - Reports now have a column of missed line counts rather than executed line |
527 counts, since developers should focus on reducing the missed lines to zero, | 684 counts, since developers should focus on reducing the missed lines to zero, |
528 rather than increasing the executed lines to varying targets. Once | 685 rather than increasing the executed lines to varying targets. Once |
529 suggested, this seemed blindingly obvious. | 686 suggested, this seemed blindingly obvious. |
530 | 687 |
| 688 - Coverage percentages are now displayed uniformly across reporting methods. |
| 689 Previously, different reports could round percentages differently. Also, |
| 690 percentages are only reported as 0% or 100% if they are truly 0 or 100, and |
| 691 are rounded otherwise. Fixes `issue 41`_ and `issue 70`_. |
| 692 |
| 693 - The XML report output now properly includes a percentage for branch coverage, |
| 694 fixing `issue 65`_ and `issue 81`_, and the report is sorted by package |
| 695 name, fixing `issue 88`_. |
| 696 |
| 697 - The XML report is now sorted by package name, fixing `issue 88`_. |
| 698 |
| 699 - The precision of reported coverage percentages can be set with the |
| 700 ``[report] precision`` config file setting. Completes `issue 16`_. |
| 701 |
531 - Line numbers in HTML source pages are clickable, linking directly to that | 702 - Line numbers in HTML source pages are clickable, linking directly to that |
532 line, which is highlighted on arrival. Added a link back to the index page | 703 line, which is highlighted on arrival. Added a link back to the index page |
533 at the bottom of each HTML page. | 704 at the bottom of each HTML page. |
534 | 705 |
| 706 Execution and measurement: |
| 707 |
| 708 - Various warnings are printed to stderr for problems encountered during data |
| 709 measurement: if a ``--source`` module has no Python source to measure, or is |
| 710 never encountered at all, or if no data is collected. |
| 711 |
| 712 - Doctest text files are no longer recorded in the coverage data, since they |
| 713 can't be reported anyway. Fixes `issue 52`_ and `issue 61`_. |
| 714 |
| 715 - Threads derived from ``threading.Thread`` with an overridden `run` method |
| 716 would report no coverage for the `run` method. This is now fixed, closing |
| 717 `issue 85`_. |
| 718 |
| 719 - Programs that exited with ``sys.exit()`` with no argument weren't handled |
| 720 properly, producing a coverage.py stack trace. This is now fixed. |
| 721 |
535 - Programs that call ``os.fork`` will properly collect data from both the child | 722 - 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 | 723 and parent processes. Use ``coverage run -p`` to get two data files that can |
537 be combined with ``coverage combine``. Fixes `issue 56`_. | 724 be combined with ``coverage combine``. Fixes `issue 56`_. |
538 | 725 |
539 - Coverage is now runnable as a module: ``python -m coverage``. Thanks, | |
540 Brett Cannon. | |
541 | |
542 - When measuring code running in a virtualenv, most of the system library was | 726 - 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. | 727 being measured when it shouldn't have been. This is now fixed. |
544 | 728 |
545 - Doctest text files are no longer recorded in the coverage data, since they | 729 - Coverage.py can now be run as a module: ``python -m coverage``. Thanks, |
546 can't be reported anyway. Fixes `issue 52`_ and `issue 61`_. | 730 Brett Cannon. |
547 | |
548 - Jinja HTML templates compile into Python code using the HTML filename, | |
549 which confused coverage.py. Now these files are no longer traced, fixing | |
550 `issue 82`_. | |
551 | |
552 - Source files can have more than one dot in them (foo.test.py), and will be | |
553 treated properly while reporting. Fixes `issue 46`_. | |
554 | |
555 - Source files with DOS line endings are now properly tokenized for syntax | |
556 coloring on non-DOS machines. Fixes `issue 53`_. | |
557 | |
558 - Unusual code structure that confused exits from methods with exits from | |
559 classes is now properly analyzed. See `issue 62`_. | |
560 | |
561 - Asking for an HTML report with no files now shows a nice error message rather | |
562 than a cryptic failure ('int' object is unsubscriptable). Fixes `issue 59`_. | |
563 | 731 |
564 .. _issue 1: http://bitbucket.org/ned/coveragepy/issue/1/empty-__init__py-files
-are-reported-as-1-executable | 732 .. _issue 1: http://bitbucket.org/ned/coveragepy/issue/1/empty-__init__py-files
-are-reported-as-1-executable |
| 733 .. _issue 16: http://bitbucket.org/ned/coveragepy/issue/16/allow-configuration-o
f-accuracy-of-percentage-totals |
565 .. _issue 34: http://bitbucket.org/ned/coveragepy/issue/34/enhanced-omit-globbin
g-handling | 734 .. _issue 34: http://bitbucket.org/ned/coveragepy/issue/34/enhanced-omit-globbin
g-handling |
566 .. _issue 36: http://bitbucket.org/ned/coveragepy/issue/36/provide-regex-style-o
mit | 735 .. _issue 36: http://bitbucket.org/ned/coveragepy/issue/36/provide-regex-style-o
mit |
567 .. _issue 46: http://bitbucket.org/ned/coveragepy/issue/46 | 736 .. _issue 41: http://bitbucket.org/ned/coveragepy/issue/41/report-says-100-when-
it-isnt-quite-there |
568 .. _issue 53: http://bitbucket.org/ned/coveragepy/issue/53 | |
569 .. _issue 52: http://bitbucket.org/ned/coveragepy/issue/52/doctesttestfile-confu
ses-source-detection | 737 .. _issue 52: http://bitbucket.org/ned/coveragepy/issue/52/doctesttestfile-confu
ses-source-detection |
570 .. _issue 56: http://bitbucket.org/ned/coveragepy/issue/56 | 738 .. _issue 56: http://bitbucket.org/ned/coveragepy/issue/56/coveragepy-cant-trace
-child-processes-of-a |
571 .. _issue 61: http://bitbucket.org/ned/coveragepy/issue/61/annotate-i-doesnt-wor
k | 739 .. _issue 61: http://bitbucket.org/ned/coveragepy/issue/61/annotate-i-doesnt-wor
k |
572 .. _issue 62: http://bitbucket.org/ned/coveragepy/issue/62 | 740 .. _issue 65: http://bitbucket.org/ned/coveragepy/issue/65/branch-option-not-rep
orted-in-cobertura |
573 .. _issue 59: http://bitbucket.org/ned/coveragepy/issue/59/html-report-fails-wit
h-int-object-is | 741 .. _issue 70: http://bitbucket.org/ned/coveragepy/issue/70/text-report-and-html-
report-disagree-on-coverage |
574 .. _issue 82: http://bitbucket.org/ned/coveragepy/issue/82/tokenerror-when-gener
ating-html-report | 742 .. _issue 81: http://bitbucket.org/ned/coveragepy/issue/81/xml-report-does-not-h
ave-condition-coverage-attribute-for-lines-with-a |
| 743 .. _issue 85: http://bitbucket.org/ned/coveragepy/issue/85/threadrun-isnt-measur
ed |
| 744 .. _issue 88: http://bitbucket.org/ned/coveragepy/issue/88/xml-report-lists-pack
ages-in-random-order |
575 | 745 |
576 | 746 |
577 Version 3.3.1 --- 6 March 2010 | 747 Version 3.3.1 --- 6 March 2010 |
578 ------------------------------ | 748 ------------------------------ |
579 | 749 |
580 - Using `parallel=True` in .coveragerc file prevented reporting, but now does | 750 - Using ``parallel=True`` in a .coveragerc file prevented reporting, but now |
581 not, fixing `issue 49`_. | 751 does not, fixing `issue 49`_. |
582 | 752 |
583 - When running your code with "coverage run", if you call `sys.exit()`, | 753 - When running your code with ``coverage run``, if you call ``sys.exit()``, |
584 coverage.py will exit with that status code, fixing `issue 50`_. | 754 coverage.py will exit with that status code, fixing `issue 50`_. |
585 | 755 |
586 .. _issue 49: http://bitbucket.org/ned/coveragepy/issue/49 | 756 .. _issue 49: http://bitbucket.org/ned/coveragepy/issue/49 |
587 .. _issue 50: http://bitbucket.org/ned/coveragepy/issue/50 | 757 .. _issue 50: http://bitbucket.org/ned/coveragepy/issue/50 |
588 | 758 |
589 | 759 |
590 Version 3.3 --- 24 February 2010 | 760 Version 3.3 --- 24 February 2010 |
591 -------------------------------- | 761 -------------------------------- |
592 | 762 |
593 - Settings are now read from a .coveragerc file. A specific file can be | 763 - Settings are now read from a .coveragerc file. A specific file can be |
594 specified on the command line with --rcfile=FILE. The name of the file can | 764 specified on the command line with ``--rcfile=FILE``. The name of the file |
595 be programmatically set with the `config_file` argument to the coverage() | 765 can be programmatically set with the ``config_file`` argument to the |
596 constructor, or reading a config file can be disabled with | 766 coverage() constructor, or reading a config file can be disabled with |
597 `config_file=False`. | 767 ``config_file=False``. |
598 | |
599 - Fixed a problem with nested loops having their branch possibilities | |
600 mischaracterized: `issue 39`_. | |
601 | 768 |
602 - Added coverage.process_start to enable coverage measurement when Python | 769 - Added coverage.process_start to enable coverage measurement when Python |
603 starts. | 770 starts. |
604 | 771 |
605 - Parallel data file names now have a random number appended to them in | 772 - Parallel data file names now have a random number appended to them in |
606 addition to the machine name and process id. | 773 addition to the machine name and process id. Also, parallel data files |
| 774 combined with ``coverage combine`` are deleted after they're combined, to |
| 775 clean up unneeded files. Fixes `issue 40`_. |
607 | 776 |
608 - Parallel data files combined with "coverage combine" are deleted after | 777 - Exceptions thrown from product code run with ``coverage run`` are now |
609 they're combined, to clean up unneeded files. Fixes `issue 40`_. | 778 displayed without internal coverage.py frames, so the output is the same as |
| 779 when the code is run without coverage.py. |
610 | 780 |
611 - Exceptions thrown from product code run with "coverage run" are now displayed | 781 - Fixed `issue 39`_ and `issue 47`_. |
612 without internal coverage.py frames, so the output is the same as when the | |
613 code is run without coverage.py. | |
614 | |
615 - The `data_suffix` argument to the coverage constructor is now appended with | |
616 an added dot rather than simply appended, so that .coveragerc files will not | |
617 be confused for data files. | |
618 | |
619 - Python source files that don't end with a newline can now be executed, fixing | |
620 `issue 47`_. | |
621 | |
622 - Added an AUTHORS.txt file. | |
623 | 782 |
624 .. _issue 39: http://bitbucket.org/ned/coveragepy/issue/39 | 783 .. _issue 39: http://bitbucket.org/ned/coveragepy/issue/39 |
625 .. _issue 40: http://bitbucket.org/ned/coveragepy/issue/40 | 784 .. _issue 40: http://bitbucket.org/ned/coveragepy/issue/40 |
626 .. _issue 47: http://bitbucket.org/ned/coveragepy/issue/47 | 785 .. _issue 47: http://bitbucket.org/ned/coveragepy/issue/47 |
627 | 786 |
628 | 787 |
629 Version 3.2 --- 5 December 2009 | 788 Version 3.2 --- 5 December 2009 |
630 ------------------------------- | 789 ------------------------------- |
631 | 790 |
| 791 - Branch coverage: coverage.py can tell you which branches didn't have both (or |
| 792 all) choices executed, even where the choice doesn't affect which lines were |
| 793 executed. See :ref:`branch` for more details. |
| 794 |
| 795 - The table of contents in the HTML report is now sortable: click the headers |
| 796 on any column. The sorting is persisted so that subsequent reports are |
| 797 sorted as you wish. Thanks, `Chris Adams`_. |
| 798 |
| 799 - XML reporting has file paths that let Cobertura find the source code, fixing |
| 800 `issue 21`_. |
| 801 |
| 802 - The ``--omit`` option now works much better than before, fixing `issue 14`_ |
| 803 and `issue 33`_. Thanks, Danek Duvall. |
| 804 |
632 - Added a ``--version`` option on the command line. | 805 - Added a ``--version`` option on the command line. |
633 | 806 |
| 807 - Program execution under coverage.py is a few percent faster. |
634 | 808 |
635 Version 3.2b4 --- 1 December 2009 | 809 - Some exceptions reported by the command line interface have been cleaned up |
636 --------------------------------- | 810 so that tracebacks inside coverage.py aren't shown. Fixes `issue 23`_. |
637 | |
638 - Branch coverage improvements: | |
639 | |
640 - The XML report now includes branch information. | |
641 | |
642 - Click-to-sort HTML report columns are now persisted in a cookie. Viewing | |
643 a report will sort it first the way you last had a coverage report sorted. | |
644 Thanks, `Chris Adams`_. | |
645 | |
646 - On Python 3.x, setuptools has been replaced by `Distribute`_. | |
647 | |
648 .. _Distribute: http://packages.python.org/distribute/ | |
649 | |
650 | |
651 Version 3.2b3 --- 23 November 2009 | |
652 ---------------------------------- | |
653 | |
654 - Fixed a memory leak in the C tracer that was introduced in 3.2b1. | |
655 | |
656 - Branch coverage improvements: | |
657 | |
658 - Branches to excluded code are ignored. | |
659 | |
660 - The table of contents in the HTML report is now sortable: click the headers | |
661 on any column. Thanks, `Chris Adams`_. | |
662 | |
663 .. _Chris Adams: http://improbable.org/chris/ | |
664 | |
665 | |
666 Version 3.2b2 --- 19 November 2009 | |
667 ---------------------------------- | |
668 | |
669 - Branch coverage improvements: | |
670 | |
671 - Classes are no longer incorrectly marked as branches: `issue 32`_. | |
672 | |
673 - "except" clauses with types are no longer incorrectly marked as branches: | |
674 `issue 35`_. | |
675 | 811 |
676 - Fixed some problems syntax coloring sources with line continuations and | 812 - Fixed some problems syntax coloring sources with line continuations and |
677 source with tabs: `issue 30`_ and `issue 31`_. | 813 source with tabs: `issue 30`_ and `issue 31`_. |
678 | 814 |
679 - The --omit option now works much better than before, fixing `issue 14`_ and | 815 .. _Chris Adams: http://improbable.org/chris/ |
680 `issue 33`_. Thanks, Danek Duvall. | 816 .. _issue 21: http://bitbucket.org/ned/coveragepy/issue/21 |
681 | 817 .. _issue 23: http://bitbucket.org/ned/coveragepy/issue/23 |
682 .. _issue 14: http://bitbucket.org/ned/coveragepy/issue/14 | 818 .. _issue 14: http://bitbucket.org/ned/coveragepy/issue/14 |
683 .. _issue 30: http://bitbucket.org/ned/coveragepy/issue/30 | 819 .. _issue 30: http://bitbucket.org/ned/coveragepy/issue/30 |
684 .. _issue 31: http://bitbucket.org/ned/coveragepy/issue/31 | 820 .. _issue 31: http://bitbucket.org/ned/coveragepy/issue/31 |
685 .. _issue 32: http://bitbucket.org/ned/coveragepy/issue/32 | |
686 .. _issue 33: http://bitbucket.org/ned/coveragepy/issue/33 | 821 .. _issue 33: http://bitbucket.org/ned/coveragepy/issue/33 |
687 .. _issue 35: http://bitbucket.org/ned/coveragepy/issue/35 | |
688 | |
689 | |
690 Version 3.2b1 --- 10 November 2009 | |
691 ---------------------------------- | |
692 | |
693 - Branch coverage! | |
694 | |
695 - XML reporting has file paths that let Cobertura find the source code. | |
696 | |
697 - The tracer code has changed, it's a few percent faster. | |
698 | |
699 - Some exceptions reported by the command line interface have been cleaned up | |
700 so that tracebacks inside coverage.py aren't shown. Fixes `issue 23`_. | |
701 | |
702 .. _issue 23: http://bitbucket.org/ned/coveragepy/issue/23 | |
703 | 822 |
704 | 823 |
705 Version 3.1 --- 4 October 2009 | 824 Version 3.1 --- 4 October 2009 |
706 ------------------------------ | 825 ------------------------------ |
707 | 826 |
708 - Source code can now be read from eggs. Thanks, Ross Lawley. Fixes | |
709 `issue 25`_. | |
710 | |
711 .. _issue 25: http://bitbucket.org/ned/coveragepy/issue/25 | |
712 | |
713 | |
714 Version 3.1b1 --- 27 September 2009 | |
715 ----------------------------------- | |
716 | |
717 - Python 3.1 is now supported. | 827 - Python 3.1 is now supported. |
718 | 828 |
719 - Coverage.py has a new command line syntax with sub-commands. This expands | 829 - Coverage.py has a new command line syntax with sub-commands. This expands |
720 the possibilities for adding features and options in the future. The old | 830 the possibilities for adding features and options in the future. The old |
721 syntax is still supported. Try "coverage help" to see the new commands. | 831 syntax is still supported. Try ``coverage help`` to see the new commands. |
722 Thanks to Ben Finney for early help. | 832 Thanks to Ben Finney for early help. |
723 | 833 |
724 - Added an experimental "coverage xml" command for producing coverage reports | 834 - Added an experimental ``coverage xml`` command for producing coverage reports |
725 in a Cobertura-compatible XML format. Thanks, Bill Hart. | 835 in a Cobertura-compatible XML format. Thanks, Bill Hart. |
726 | 836 |
727 - Added the --timid option to enable a simpler slower trace function that works | 837 - Added the ``--timid`` option to enable a simpler slower trace function that |
728 for DecoratorTools projects, including TurboGears. Fixed `issue 12`_ and | 838 works for DecoratorTools projects, including TurboGears. Fixed `issue 12`_ |
729 `issue 13`_. | 839 and `issue 13`_. |
730 | |
731 - HTML reports show modules from other directories. Fixed `issue 11`_. | |
732 | 840 |
733 - HTML reports now display syntax-colored Python source. | 841 - HTML reports now display syntax-colored Python source. |
734 | 842 |
735 - Programs that change directory will still write .coverage files in the | 843 - Added a ``coverage debug`` command for getting diagnostic information about |
736 directory where execution started. Fixed `issue 24`_. | 844 the coverage.py installation. |
737 | 845 |
738 - Added a "coverage debug" command for getting diagnostic information about the | 846 - Source code can now be read from eggs. Thanks, `Ross Lawley`_. Fixes |
739 coverage.py installation. | 847 `issue 25`_. |
740 | 848 |
741 .. _issue 11: http://bitbucket.org/ned/coveragepy/issue/11 | 849 .. _Ross Lawley: http://agileweb.org/ |
| 850 .. _issue 25: http://bitbucket.org/ned/coveragepy/issue/25 |
742 .. _issue 12: http://bitbucket.org/ned/coveragepy/issue/12 | 851 .. _issue 12: http://bitbucket.org/ned/coveragepy/issue/12 |
743 .. _issue 13: http://bitbucket.org/ned/coveragepy/issue/13 | 852 .. _issue 13: http://bitbucket.org/ned/coveragepy/issue/13 |
744 .. _issue 24: http://bitbucket.org/ned/coveragepy/issue/24 | |
745 | 853 |
746 | 854 |
747 Version 3.0.1 --- 7 July 2009 | 855 Version 3.0.1 --- 7 July 2009 |
748 ----------------------------- | 856 ----------------------------- |
749 | 857 |
750 - Removed the recursion limit in the tracer function. Previously, code that | 858 - Removed the recursion limit in the tracer function. Previously, code that |
751 ran more than 500 frames deep would crash. Fixed `issue 9`_. | 859 ran more than 500 frames deep would crash. |
752 | 860 |
753 - Fixed a bizarre problem involving pyexpat, whereby lines following XML parser | 861 - Fixed a bizarre problem involving pyexpat, whereby lines following XML parser |
754 invocations could be overlooked. Fixed `issue 10`_. | 862 invocations could be overlooked. |
755 | 863 |
756 - On Python 2.3, coverage.py could mis-measure code with exceptions being | 864 - On Python 2.3, coverage.py could mis-measure code with exceptions being |
757 raised. This is now fixed. | 865 raised. This is now fixed. |
758 | 866 |
759 - The coverage.py code itself will now not be measured by coverage.py, and no | 867 - 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 | 868 coverage.py modules will be mentioned in the nose ``--with-cover`` plugin. |
761 `issue 8`_. | |
762 | 869 |
763 - When running source files, coverage.py now opens them in universal newline | 870 - 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 | 871 mode just like Python does. This lets it run Windows files on Mac, for |
765 example. | 872 example. |
766 | 873 |
767 .. _issue 9: http://bitbucket.org/ned/coveragepy/issue/9 | |
768 .. _issue 10: http://bitbucket.org/ned/coveragepy/issue/10 | |
769 .. _issue 8: http://bitbucket.org/ned/coveragepy/issue/8 | |
770 | |
771 | 874 |
772 Version 3.0 --- 13 June 2009 | 875 Version 3.0 --- 13 June 2009 |
773 ---------------------------- | 876 ---------------------------- |
774 | 877 |
775 - Fixed the way the Python library was ignored. Too much code was being | 878 - Coverage.py is now a package rather than a module. Functionality has been |
776 excluded the old way. | 879 split into classes. |
777 | 880 |
778 - Tabs are now properly converted in HTML reports. Previously indentation was | 881 - HTML reports and annotation of source files: use the new ``-b`` (browser) |
779 lost. Fixed `issue 6`_. | 882 switch. Thanks to George Song for code, inspiration and guidance. |
780 | 883 |
781 - Nested modules now get a proper flat_rootname. Thanks, Christian Heimes. | 884 - The trace function is implemented in C for speed. Coverage.py runs are now |
| 885 much faster. Thanks to David Christian for productive micro-sprints and |
| 886 other encouragement. |
782 | 887 |
783 .. _issue 6: http://bitbucket.org/ned/coveragepy/issue/6 | 888 - The minimum supported Python version is 2.3. |
784 | |
785 | |
786 Version 3.0b3 --- 16 May 2009 | |
787 ----------------------------- | |
788 | |
789 - Added parameters to coverage.__init__ for options that had been set on the | |
790 coverage object itself. | |
791 | |
792 - Added clear_exclude() and get_exclude_list() methods for programmatic | |
793 manipulation of the exclude regexes. | |
794 | |
795 - Added coverage.load() to read previously-saved data from the data file. | |
796 | |
797 - Improved the finding of code files. For example, .pyc files that have been | |
798 installed after compiling are now located correctly. Thanks, Detlev | |
799 Offenbach. | |
800 | 889 |
801 - When using the object API (that is, constructing a coverage() object), data | 890 - When using the object API (that is, constructing a coverage() object), data |
802 is no longer saved automatically on process exit. You can re-enable it with | 891 is no longer saved automatically on process exit. You can re-enable it with |
803 the auto_data=True parameter on the coverage() constructor. The module-level | 892 the ``auto_data=True`` parameter on the coverage() constructor. |
804 interface still uses automatic saving. | 893 The module-level interface still uses automatic saving. |
805 | |
806 | |
807 Version 3.0b --- 30 April 2009 | |
808 ------------------------------ | |
809 | |
810 HTML reporting, and continued refactoring. | |
811 | |
812 - HTML reports and annotation of source files: use the new -b (browser) switch. | |
813 Thanks to George Song for code, inspiration and guidance. | |
814 | 894 |
815 - Code in the Python standard library is not measured by default. If you need | 895 - Code in the Python standard library is not measured by default. If you need |
816 to measure standard library code, use the -L command-line switch during | 896 to measure standard library code, use the ``-L`` command-line switch during |
817 execution, or the cover_pylib=True argument to the coverage() constructor. | 897 execution, or the ``cover_pylib=True`` argument to the coverage() |
| 898 constructor. |
818 | 899 |
819 - Source annotation into a directory (-a -d) behaves differently. The | 900 - API changes: |
820 annotated files are named with their hierarchy flattened so that same-named | |
821 files from different directories no longer collide. Also, only files in the | |
822 current tree are included. | |
823 | 901 |
824 - coverage.annotate_file is no longer available. | 902 - Added parameters to coverage.__init__ for options that had been set on |
| 903 the coverage object itself. |
825 | 904 |
826 - Programs executed with -x now behave more as they should, for example, | 905 - Added clear_exclude() and get_exclude_list() methods for programmatic |
827 __file__ has the correct value. | 906 manipulation of the exclude regexes. |
828 | 907 |
829 - .coverage data files have a new pickle-based format designed for better | 908 - Added coverage.load() to read previously-saved data from the data file. |
830 extensibility. | |
831 | 909 |
832 - Removed the undocumented cache_file argument to coverage.usecache(). | 910 - coverage.annotate_file is no longer available. |
833 | 911 |
834 | 912 - Removed the undocumented cache_file argument to coverage.usecache(). |
835 Version 3.0b1 --- 7 March 2009 | |
836 ------------------------------ | |
837 | |
838 Major overhaul. | |
839 | |
840 - Coverage is now a package rather than a module. Functionality has been split | |
841 into classes. | |
842 | |
843 - The trace function is implemented in C for speed. Coverage runs are now | |
844 much faster. Thanks to David Christian for productive micro-sprints and | |
845 other encouragement. | |
846 | |
847 - Executable lines are identified by reading the line number tables in the | |
848 compiled code, removing a great deal of complicated analysis code. | |
849 | |
850 - Precisely which lines are considered executable has changed in some cases. | |
851 Therefore, your coverage stats may also change slightly. | |
852 | |
853 - The singleton coverage object is only created if the module-level functions | |
854 are used. This maintains the old interface while allowing better | |
855 programmatic use of Coverage. | |
856 | |
857 - The minimum supported Python version is 2.3. | |
858 | |
859 | |
860 Version 2.85 --- 14 September 2008 | |
861 ---------------------------------- | |
862 | |
863 - Add support for finding source files in eggs. Don't check for | |
864 morf's being instances of ModuleType, instead use duck typing so that | |
865 pseudo-modules can participate. Thanks, Imri Goldberg. | |
866 | |
867 - Use os.realpath as part of the fixing of file names so that symlinks won't | |
868 confuse things. Thanks, Patrick Mezard. | |
869 | |
870 | |
871 Version 2.80 --- 25 May 2008 | |
872 ---------------------------- | |
873 | |
874 - Open files in rU mode to avoid line ending craziness. Thanks, Edward Loper. | |
875 | |
876 | |
877 Version 2.78 --- 30 September 2007 | |
878 ---------------------------------- | |
879 | |
880 - Don't try to predict whether a file is Python source based on the extension. | |
881 Extension-less files are often Pythons scripts. Instead, simply parse the file | |
882 and catch the syntax errors. Hat tip to Ben Finney. | |
883 | |
884 | |
885 Version 2.77 --- 29 July 2007 | |
886 ----------------------------- | |
887 | |
888 - Better packaging. | |
889 | |
890 | |
891 Version 2.76 --- 23 July 2007 | |
892 ----------------------------- | |
893 | |
894 - Now Python 2.5 is *really* fully supported: the body of the new with | |
895 statement is counted as executable. | |
896 | |
897 | |
898 Version 2.75 --- 22 July 2007 | |
899 ----------------------------- | |
900 | |
901 - Python 2.5 now fully supported. The method of dealing with multi-line | |
902 statements is now less sensitive to the exact line that Python reports during | |
903 execution. Pass statements are handled specially so that their disappearance | |
904 during execution won't throw off the measurement. | |
905 | |
906 | |
907 Version 2.7 --- 21 July 2007 | |
908 ---------------------------- | |
909 | |
910 - "#pragma: nocover" is excluded by default. | |
911 | |
912 - Properly ignore docstrings and other constant expressions that appear in the | |
913 middle of a function, a problem reported by Tim Leslie. | |
914 | |
915 - coverage.erase() shouldn't clobber the exclude regex. Change how parallel | |
916 mode is invoked, and fix erase() so that it erases the cache when called | |
917 programmatically. | |
918 | |
919 - In reports, ignore code executed from strings, since we can't do anything | |
920 useful with it anyway. | |
921 | |
922 - Better file handling on Linux, thanks Guillaume Chazarain. | |
923 | |
924 - Better shell support on Windows, thanks Noel O'Boyle. | |
925 | |
926 - Python 2.2 support maintained, thanks Catherine Proulx. | |
927 | |
928 - Minor changes to avoid lint warnings. | |
929 | |
930 | |
931 Version 2.6 --- 23 August 2006 | |
932 ------------------------------ | |
933 | |
934 - Applied Joseph Tate's patch for function decorators. | |
935 | |
936 - Applied Sigve Tjora and Mark van der Wal's fixes for argument handling. | |
937 | |
938 - Applied Geoff Bache's parallel mode patch. | |
939 | |
940 - Refactorings to improve testability. Fixes to command-line logic for parallel | |
941 mode and collect. | |
942 | |
943 | |
944 Version 2.5 --- 4 December 2005 | |
945 ------------------------------- | |
946 | |
947 - Call threading.settrace so that all threads are measured. Thanks Martin | |
948 Fuzzey. | |
949 | |
950 - Add a file argument to report so that reports can be captured to a different | |
951 destination. | |
952 | |
953 - coverage.py can now measure itself. | |
954 | |
955 - Adapted Greg Rogers' patch for using relative file names, and sorting and | |
956 omitting files to report on. | |
957 | |
958 | |
959 Version 2.2 --- 31 December 2004 | |
960 -------------------------------- | |
961 | |
962 - Allow for keyword arguments in the module global functions. Thanks, Allen. | |
963 | |
964 | |
965 Version 2.1 --- 14 December 2004 | |
966 -------------------------------- | |
967 | |
968 - Return 'analysis' to its original behavior and add 'analysis2'. Add a global | |
969 for 'annotate', and factor it, adding 'annotate_file'. | |
970 | |
971 | |
972 Version 2.0 --- 12 December 2004 | |
973 -------------------------------- | |
974 | |
975 Significant code changes. | |
976 | |
977 - Finding executable statements has been rewritten so that docstrings and | |
978 other quirks of Python execution aren't mistakenly identified as missing | |
979 lines. | |
980 | |
981 - Lines can be excluded from consideration, even entire suites of lines. | |
982 | |
983 - The file system cache of covered lines can be disabled programmatically. | |
984 | |
985 - Modernized the code. | |
986 | |
987 | |
988 Earlier History | |
989 --------------- | |
990 | |
991 2001-12-04 GDR Created. | |
992 | |
993 2001-12-06 GDR Added command-line interface and source code annotation. | |
994 | |
995 2001-12-09 GDR Moved design and interface to separate documents. | |
996 | |
997 2001-12-10 GDR Open cache file as binary on Windows. Allow simultaneous -e and | |
998 -x, or -a and -r. | |
999 | |
1000 2001-12-12 GDR Added command-line help. Cache analysis so that it only needs to | |
1001 be done once when you specify -a and -r. | |
1002 | |
1003 2001-12-13 GDR Improved speed while recording. Portable between Python 1.5.2 | |
1004 and 2.1.1. | |
1005 | |
1006 2002-01-03 GDR Module-level functions work correctly. | |
1007 | |
1008 2002-01-07 GDR Update sys.path when running a file with the -x option, so that | |
1009 it matches the value the program would get if it were run on its own. | |
OLD | NEW |