Index: third_party/coverage-3.6/doc/excluding.rst |
diff --git a/third_party/coverage-3.6/doc/excluding.rst b/third_party/coverage-3.6/doc/excluding.rst |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f1262c35fcfc42fbc291884c1c503aac8f78069c |
--- /dev/null |
+++ b/third_party/coverage-3.6/doc/excluding.rst |
@@ -0,0 +1,105 @@ |
+.. _excluding: |
+ |
+============================ |
+Excluding code from coverage |
+============================ |
+ |
+:history: 20090613T090500, brand new docs. |
+:history: 20100224T200900, updated for 3.3. |
+:history: 20100725T211700, updated for 3.4. |
+:history: 20110604T184400, updated for 3.5. |
+ |
+ |
+You may have code in your project that you know won't be executed, and you want |
+to tell coverage to ignore it. For example, you may have debugging-only code |
+that won't be executed during your unit tests. You can tell coverage to exclude |
+this code during reporting so that it doesn't clutter your reports with noise |
+about code that you don't need to hear about. |
+ |
+Coverage will look for comments marking clauses for exclusion. In this code, |
+the "if debug" clause is excluded from reporting:: |
+ |
+ a = my_function1() |
+ if debug: # pragma: no cover |
+ msg = "blah blah" |
+ log_message(msg, a) |
+ b = my_function2() |
+ |
+Any line with a comment of "pragma: no cover" is excluded. If that line |
+introduces a clause, for example, an if clause, or a function or class |
+definition, then the entire clause is also excluded. Here the __repr__ |
+function is not reported as missing:: |
+ |
+ class MyObject(object): |
+ def __init__(self): |
+ blah1() |
+ blah2() |
+ |
+ def __repr__(self): # pragma: no cover |
+ return "<MyObject>" |
+ |
+Excluded code is executed as usual, and its execution is recorded in the |
+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 |
+------------------ |
+ |
+Coverage identifies exclusions by matching lines against a list of regular |
+expressions. Using :ref:`configuration files <config>` or the coverage |
+:ref:`API <api>`, you can add to that list. This is useful if you have |
+often-used constructs to exclude that can be matched with a regex. You can |
+exclude them all at once without littering your code with exclusion pragmas. |
+ |
+For example, you might decide that __repr__ functions are usually only used |
+in debugging code, and are uninteresting to test themselves. You could exclude |
+all of them by adding a regex to the exclusion list:: |
+ |
+ [report] |
+ exclude_lines = def __repr__ |
+ |
+For example, here's a list of exclusions I've used:: |
+ |
+ [report] |
+ exclude_lines = |
+ pragma: no cover |
+ def __repr__ |
+ if self.debug: |
+ if settings.DEBUG |
+ raise AssertionError |
+ raise NotImplementedError |
+ if 0: |
+ if __name__ == .__main__.: |
+ |
+Note that when using the ``exclude_lines`` option in a configuration file, you |
+are taking control of the entire list of regexes, so you need to re-specify the |
+default "pragma: no cover" match if you still want it to apply. |
+ |
+A similar pragma, "no branch", can be used to tailor branch coverage |
+measurement. See :ref:`branch` for details. |
+ |
+ |
+Excluding source files |
+---------------------- |
+ |
+See :ref:`source` for ways to limit what files coverage.py measures or reports |
+on. |