summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--coverage/data.py8
-rw-r--r--test/test_coverage.py25
2 files changed, 31 insertions, 2 deletions
diff --git a/coverage/data.py b/coverage/data.py
index 067dfd6b..06f46343 100644
--- a/coverage/data.py
+++ b/coverage/data.py
@@ -108,8 +108,12 @@ class CoverageData:
return self.executed.keys()
def executed_lines(self, filename):
- """A map containing all the line numbers executed in `filename`."""
- return self.executed[filename]
+ """A map containing all the line numbers executed in `filename`.
+
+ If `filename` hasn't been collected at all (because it wasn't executed)
+ then return an empty map.
+ """
+ return self.executed.get(filename) or {}
def summary(self):
"""Return a dict summarizing the coverage data.
diff --git a/test/test_coverage.py b/test/test_coverage.py
index 3fe3fe42..2974296d 100644
--- a/test/test_coverage.py
+++ b/test/test_coverage.py
@@ -1786,6 +1786,30 @@ class ApiTests(CoverageTest):
mycode3 7 4 57% 4-6
"""))
+ def testUnexecutedFile(self):
+ cov = coverage.coverage()
+
+ self.makeFile("mycode", """\
+ a = 1
+ b = 2
+ if b == 3:
+ c = 4
+ d = 5
+ """)
+
+ self.makeFile("not_run", """\
+ fooey = 17
+ """)
+
+ # Import the python file, executing it.
+ cov.start()
+ self.importModule("mycode")
+ cov.stop()
+
+ filename, statements, missing, readablemissing = cov.analysis("not_run.py")
+ self.assertEqual(statements, [1])
+ self.assertEqual(missing, [1])
+
class CmdLineTests(CoverageTest):
def help_fn(self, error=None):
@@ -1937,3 +1961,4 @@ if __name__ == '__main__':
# in an expression!)
# TODO: Generator comprehensions?
# TODO: Constant if tests ("if 1:"). Py 2.4 doesn't execute them.
+# TODO: There are no tests for analysis2 directly. \ No newline at end of file