summaryrefslogtreecommitdiff
path: root/doc/branches.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2012-11-17 23:32:01 -0500
committerNed Batchelder <ned@nedbatchelder.com>2012-11-17 23:32:01 -0500
commit9c8f90d69a8fc5b9712528e49254a3e9bdce4c34 (patch)
tree157990c696d33daff5258c31ea301b306c6c5558 /doc/branches.py
parent99919c394b697ed0f260cfe338b5283e842073eb (diff)
downloadpython-coveragepy-git-9c8f90d69a8fc5b9712528e49254a3e9bdce4c34.tar.gz
Add tests and docs to the kit, though they are not installed. #137
--HG-- rename : doc/branches.py => lab/branches.py
Diffstat (limited to 'doc/branches.py')
-rw-r--r--doc/branches.py78
1 files changed, 0 insertions, 78 deletions
diff --git a/doc/branches.py b/doc/branches.py
deleted file mode 100644
index 1fa705f0..00000000
--- a/doc/branches.py
+++ /dev/null
@@ -1,78 +0,0 @@
-# Demonstrate some issues with coverage.py branch testing.
-
-def my_function(x):
- """This isn't real code, just snippets..."""
-
- # An infinite loop is structurally still a branch: it can next execute the
- # first line of the loop, or the first line after the loop. But
- # "while True" will never jump to the line after the loop, so the line
- # is shown as a partial branch:
-
- i = 0
- while True:
- print "In while True"
- if i > 0:
- break
- i += 1
- print "Left the True loop"
-
- # Notice that "while 1" also has this problem. Even though the compiler
- # knows there's no computation at the top of the loop, it's still expressed
- # in byte code as a branch with two possibilities.
-
- i = 0
- while 1:
- print "In while 1"
- if i > 0:
- break
- i += 1
- print "Left the 1 loop"
-
- # Coverage.py lets the developer exclude lines that he knows will not be
- # executed. So far, the branch coverage doesn't use all that information
- # when deciding which lines are partially executed.
- #
- # Here, even though the else line is explicitly marked as never executed,
- # the if line complains that it never branched to the else:
-
- if x < 1000:
- # This branch is always taken
- print "x is reasonable"
- else: # pragma: nocover
- print "this never happens"
-
- # try-except structures are complex branches. An except clause with a
- # type is a three-way branch: there could be no exception, there could be
- # a matching exception, and there could be a non-matching exception.
- #
- # Here we run the code twice: once with no exception, and once with a
- # matching exception. The "except" line is marked as partial because we
- # never executed its third case: a non-matching exception.
-
- for y in (1, 2):
- try:
- if y % 2:
- raise ValueError("y is odd!")
- except ValueError:
- print "y must have been odd"
- print "done with y"
- print "done with 1, 2"
-
- # Another except clause, but this time all three cases are executed. No
- # partial lines are shown:
-
- for y in (0, 1, 2):
- try:
- if y % 2:
- raise ValueError("y is odd!")
- if y == 0:
- raise Exception("zero!")
- except ValueError:
- print "y must have been odd"
- except:
- print "y is something else"
- print "done with y"
- print "done with 0, 1, 2"
-
-
-my_function(1)