diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2009-10-25 12:09:05 -0400 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2009-10-25 12:09:05 -0400 |
commit | 4b65b820c1ebbc7f270c6909884a5ffa1f64a341 (patch) | |
tree | 9ea458ce936b67b47050f8b8391d1e9eab518bc3 | |
parent | 0ad0062c5b17c94db1fae7cb073b0b6b417e6c4f (diff) | |
download | python-coveragepy-4b65b820c1ebbc7f270c6909884a5ffa1f64a341.tar.gz |
Report errors finding source files to execute more nicely. Fixes issue #23.
-rw-r--r-- | coverage/execfile.py | 6 | ||||
-rw-r--r-- | test/test_coverage.py | 6 | ||||
-rw-r--r-- | test/test_execfile.py | 3 |
3 files changed, 14 insertions, 1 deletions
diff --git a/coverage/execfile.py b/coverage/execfile.py index cf8e1ec..ddcfa14 100644 --- a/coverage/execfile.py +++ b/coverage/execfile.py @@ -3,6 +3,7 @@ import imp, os, sys from coverage.backward import exec_function +from coverage.misc import NoSource try: @@ -35,7 +36,10 @@ def run_python_file(filename, args): sys.path[0] = os.path.dirname(filename) try: - source = open(filename, 'rU').read() + try: + source = open(filename, 'rU').read() + except IOError: + raise NoSource("No file to run: %r" % filename) exec_function(source, filename, main_mod.__dict__) finally: # Restore the old __main__ diff --git a/test/test_coverage.py b/test/test_coverage.py index 92aef08..4225c46 100644 --- a/test/test_coverage.py +++ b/test/test_coverage.py @@ -1748,6 +1748,12 @@ class ProcessTest(CoverageTest): self.assert_matches(out, "No source for code: '.*fleeting'") self.assert_("Traceback" not in out) + def test_running_missing_file(self): + out = self.run_command("coverage run xyzzy.py") + self.assert_matches(out, "No file to run: .*xyzzy.py") + self.assert_("Traceback" not in out) + + class RecursionTest(CoverageTest): """Check what happens when recursive code gets near limits.""" diff --git a/test/test_execfile.py b/test/test_execfile.py index 1dde705..5e9f4fd 100644 --- a/test/test_execfile.py +++ b/test/test_execfile.py @@ -3,6 +3,7 @@ import os, sys from coverage.execfile import run_python_file +from coverage.misc import NoSource sys.path.insert(0, os.path.split(__file__)[0]) # Force relative import for Py3k from coveragetest import CoverageTest @@ -59,3 +60,5 @@ class RunTest(CoverageTest): run_python_file('nl.py', ['nl.py']) self.assertEqual(self.stdout(), "Hello, world!\n"*3) + def test_no_such_file(self): + self.assertRaises(NoSource, run_python_file, "xyzzy.py", []) |