From a7f4c6c633a1ff02412f4f3e6695c12e2ba87808 Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Sun, 25 Oct 2009 09:38:58 -0400 Subject: Treat missing source files nicer. --- coverage/parser.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'coverage/parser.py') 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 "" 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 -- cgit v1.2.1