summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--TODO.txt2
-rw-r--r--doc/branch.rst16
-rw-r--r--doc/changes.rst113
-rw-r--r--doc/cmd.rst7
-rw-r--r--doc/excluding.rst19
5 files changed, 111 insertions, 46 deletions
diff --git a/TODO.txt b/TODO.txt
index af52d63a..6c5dc46f 100644
--- a/TODO.txt
+++ b/TODO.txt
@@ -7,7 +7,7 @@ Coverage TODO
- parser is doing some redundant work.
- while TRUE claims to be partial?
+ Analysis class should do rolling up of stats also (actually Numbers)
-- Update docs for --branch.
++ Update docs for --branch.
- self.coverage.data.has_arcs is ugly.
+ Branches that never jump to nocover lines shouldn't be marked as partial.
(see top of test_cogapp for examples)
diff --git a/doc/branch.rst b/doc/branch.rst
index 28e8c778..087334ba 100644
--- a/doc/branch.rst
+++ b/doc/branch.rst
@@ -66,7 +66,21 @@ Thanks, Titus!
Excluding code
--------------
-If you have excluded
+If you have :ref:`excluded code <excluding>`, a condtional will not be
+counted as a branch if one of its choices is excluded::
+
+ def only_one_choice(x):
+ if x:
+ blah1()
+ blah2()
+ else: # pragma: no cover
+ # x is always true.
+ blah3()
+
+Because the ``else`` clause is excluded, the ``if`` only has one possible
+next line, so it isn't considered a branch at all.
+
+
Problems
--------
diff --git a/doc/changes.rst b/doc/changes.rst
index 9400d605..11bf07e2 100644
--- a/doc/changes.rst
+++ b/doc/changes.rst
@@ -1,17 +1,54 @@
.. _change:
+====================================
+Major change history for coverage.py
+====================================
+
:history: 20090524T134300, brand new docs.
:history: 20090613T164000, final touches for 3.0
:history: 20090706T205000, changes for 3.0.1
:history: 20091004T170700, changes for 3.1
+:history: 20091128T072200, changes for 3.2
-------------------------------------
-Major change history for coverage.py
-------------------------------------
-These are the major changes for coverage.py. For a more complete change history,
-see the `CHANGES.txt <http://bitbucket.org/ned/coveragepy/src/tip/CHANGES.txt>`_
-file.
+These are the major changes for coverage.py. For a more complete change
+history, see the `CHANGES.txt`_ file.
+
+.. _CHANGES.txt: http://bitbucket.org/ned/coveragepy/src/tip/CHANGES.txt
+
+
+Version 3.2
+-----------
+
+- Branch coverage: coverage.py can tell you which branches didn't have both
+ choices executed, even where the choice doesn't affect which lines were
+ executed. See :ref:`Branch Coverage <branch>` for more details.
+
+- The table of contents in the HTML report is now sortable: click the headers
+ on any column. The sorting is persisted so that subsequent reports are
+ sorted as you wish. Thanks, `Chris Adams`_.
+
+- XML reporting has file paths that let Cobertura find the source code, fixing
+ `issue 21`_.
+
+- The --omit option now works much better than before, fixing `issue 14` and
+ `issue 33`_. Thanks, Danek Duvall.
+
+- The tracer code has changed, it's a few percent faster.
+
+- Some exceptions reported by the command line interface have been cleaned up
+ so that tracebacks inside coverage.py aren't shown. Fixes `issue 23`_.
+
+- Fixed some problems syntax coloring sources with line continuations and
+ source with tabs: `issue 30`_ and `issue 31`_.
+
+.. _Chris Adams: http://improbable.org/chris/
+.. _issue 21: http://bitbucket.org/ned/coveragepy/issue/21
+.. _issue 23: http://bitbucket.org/ned/coveragepy/issue/23
+.. _issue 14: http://bitbucket.org/ned/coveragepy/issue/14
+.. _issue 30: http://bitbucket.org/ned/coveragepy/issue/30
+.. _issue 31: http://bitbucket.org/ned/coveragepy/issue/31
+.. _issue 33: http://bitbucket.org/ned/coveragepy/issue/33
Version 3.1, 4 October 2009
@@ -36,6 +73,11 @@ Version 3.1, 4 October 2009
- Added a "coverage debug" command for getting diagnostic information about the
coverage.py installation.
+- Source code can now be read from eggs. Thanks, `Ross Lawley`_. Fixes
+ `issue 25`_.
+
+.. _Ross Lawley: http://agileweb.org/
+.. _issue 25: http://bitbucket.org/ned/coveragepy/issue/25
.. _issue 12: http://bitbucket.org/ned/coveragepy/issue/12
.. _issue 13: http://bitbucket.org/ned/coveragepy/issue/13
@@ -60,51 +102,40 @@ Version 3.0.1, 7 July 2009
example.
-Version 3.0b3, 16 May 2009
---------------------------
+Version 3.0, 13 June 2009
+-------------------------
-- Added parameters to coverage.__init__ for options that had been set on the
- coverage object itself.
-
-- Added clear_exclude() and get_exclude_list() methods for programmatic
- manipulation of the exclude regexes.
+- Coverage is now a package rather than a module. Functionality has been split
+ into classes.
+
+- HTML reports and annotation of source files: use the new -b (browser) switch.
+ Thanks to George Song for code, inspiration and guidance.
-- Added coverage.load() to read previously-saved data from the data file.
+- The trace function is implemented in C for speed. Coverage runs are now
+ much faster. Thanks to David Christian for productive micro-sprints and
+ other encouragement.
+- The minimum supported Python version is 2.3.
+
- When using the object api (that is, constructing a coverage() object), data
is no longer saved automatically on process exit. You can re-enable it with
the auto_data=True parameter on the coverage() constructor. The module-level
interface still uses automatic saving.
-
-Version 3.0b2, 30 April 2009
-----------------------------
-
-HTML reporting, and continued refactoring.
-
-- HTML reports and annotation of source files: use the new -b (browser) switch.
- Thanks to George Song for code, inspiration and guidance.
-
- Code in the Python standard library is not measured by default. If you need
to measure standard library code, use the -L command-line switch during
execution, or the cover_pylib=True argument to the coverage() constructor.
-- coverage.annotate_file is no longer available.
-
-- Removed the undocumented cache_file argument to coverage.usecache().
-
-
-Version 3.0b1, 7 March 2009
----------------------------
-
-Major overhaul.
-
-- Coverage is now a package rather than a module. Functionality has been split
- into classes.
-
-- The trace function is implemented in C for speed. Coverage runs are now
- much faster. Thanks to David Christian for productive micro-sprints and
- other encouragement.
+- API changes:
-- The minimum supported Python version is 2.3.
-
+ - Added parameters to coverage.__init__ for options that had been set on
+ the coverage object itself.
+
+ - Added clear_exclude() and get_exclude_list() methods for programmatic
+ manipulation of the exclude regexes.
+
+ - Added coverage.load() to read previously-saved data from the data file.
+
+ - coverage.annotate_file is no longer available.
+
+ - Removed the undocumented cache_file argument to coverage.usecache().
diff --git a/doc/cmd.rst b/doc/cmd.rst
index 4c7db3b9..cfad0360 100644
--- a/doc/cmd.rst
+++ b/doc/cmd.rst
@@ -8,6 +8,7 @@ Coverage command line usage
:history: 20090613T164000, final touches for 3.0
:history: 20090913T084400, new command line syntax
:history: 20091004T170700, changes for 3.1
+:history: 20091127T200700, changes for 3.2
.. highlight:: console
@@ -23,12 +24,12 @@ which determine the action performed:
* **xml** -- Produce an XML report with coverage results.
+* **annotate** -- Annotate source files with coverage results.
+
* **erase** -- Erase previously collected coverage data.
* **combine** -- Combine together a number of data files.
-* **annotate** -- Annotate source files with coverage results.
-
* **debug** -- Get diagnostic information.
Help is available with ``coverage help``, or with the ``--help`` switch on any
@@ -192,7 +193,7 @@ XML reporting
-------------
The **xml** command writes coverage data to a "coverage.xml" file in a format
-compatible with `Cobertura`_. This command is still experimental.
+compatible with `Cobertura`_.
.. _Cobertura: http://cobertura.sourceforge.net
diff --git a/doc/excluding.rst b/doc/excluding.rst
index 1072e5b1..31aa6838 100644
--- a/doc/excluding.rst
+++ b/doc/excluding.rst
@@ -39,6 +39,24 @@ coverage data as usual. When producing reports though, coverage excludes it from
the list of missing code.
+Branch coverage
+---------------
+
+When measuring :ref:`branch coverage <branch>`, a condtional will not be
+counted as a branch if one of its choices is excluded::
+
+ def only_one_choice(x):
+ if x:
+ blah1()
+ blah2()
+ else: # pragma: no cover
+ # x is always true.
+ blah3()
+
+Because the ``else`` clause is excluded, the ``if`` only has one possible
+next line, so it isn't considered a branch at all.
+
+
Advanced exclusion
------------------
@@ -64,3 +82,4 @@ Here's a list of exclusions I've used::
coverage.exclude('if 0:')
coverage.exclude('if __name__ == .__main__.:')
+