diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2009-10-25 09:38:58 -0400 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2009-10-25 09:38:58 -0400 |
commit | a7f4c6c633a1ff02412f4f3e6695c12e2ba87808 (patch) | |
tree | d8e0beb3bd7d7a9bb4d50e698314246fcfeb4f08 /coverage/parser.py | |
parent | ffb82b1d4ce8553ac230d3ecabbf094c4c20d140 (diff) | |
download | python-coveragepy-git-a7f4c6c633a1ff02412f4f3e6695c12e2ba87808.tar.gz |
Treat missing source files nicer.
Diffstat (limited to 'coverage/parser.py')
-rw-r--r-- | coverage/parser.py | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/coverage/parser.py b/coverage/parser.py index 8957123a..433cb66c 100644 --- a/coverage/parser.py +++ b/coverage/parser.py @@ -4,7 +4,7 @@ import glob, opcode, os, re, sys, token, tokenize from coverage.backward import set, sorted, StringIO # pylint: disable-msg=W0622 from coverage.bytecode import ByteCodes, CodeObjects -from coverage.misc import nice_pair, CoverageException +from coverage.misc import nice_pair, CoverageException, NoSource class CodeParser(object): @@ -20,9 +20,13 @@ class CodeParser(object): assert text or filename, "CodeParser needs either text or filename" self.filename = filename or "<code>" if not text: - sourcef = open(self.filename, 'rU') - self.text = sourcef.read() - sourcef.close() + try: + sourcef = open(self.filename, 'rU') + self.text = sourcef.read() + sourcef.close() + except IOError: + _, err, _ = sys.exc_info() + raise NoSource("No source for code: %r: %s" % (self.filename, err)) self.text = self.text.replace('\r\n', '\n') self.exclude = exclude |