summaryrefslogtreecommitdiff
path: root/coverage/execfile.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2016-12-17 16:14:58 -0500
committerNed Batchelder <ned@nedbatchelder.com>2016-12-17 16:14:58 -0500
commit3f320139291a93beccea0089c5a843c1e38bd356 (patch)
treef096c09fcd54ccf8e475cb967b08a2b3d23d2465 /coverage/execfile.py
parent51ee731f82f2e562741d91e930bb59358bc64805 (diff)
downloadpython-coveragepy-git-3f320139291a93beccea0089c5a843c1e38bd356.tar.gz
Provide a more useful error message if failing to run a non-Python file. #514
Diffstat (limited to 'coverage/execfile.py')
-rw-r--r--coverage/execfile.py18
1 files changed, 12 insertions, 6 deletions
diff --git a/coverage/execfile.py b/coverage/execfile.py
index 3e20a527..58b05402 100644
--- a/coverage/execfile.py
+++ b/coverage/execfile.py
@@ -10,7 +10,7 @@ import types
from coverage.backward import BUILTINS
from coverage.backward import PYC_MAGIC_NUMBER, imp, importlib_util_find_spec
-from coverage.misc import ExceptionDuringRun, NoCode, NoSource, isolate_module
+from coverage.misc import CoverageException, ExceptionDuringRun, NoCode, NoSource, isolate_module
from coverage.phystokens import compile_unicode
from coverage.python import get_python_source
@@ -166,11 +166,17 @@ def run_python_file(filename, args, package=None, modulename=None, path0=None):
sys.path[0] = path0 if path0 is not None else my_path0
try:
- # Make a code object somehow.
- if filename.endswith((".pyc", ".pyo")):
- code = make_code_from_pyc(filename)
- else:
- code = make_code_from_py(filename)
+ try:
+ # Make a code object somehow.
+ if filename.endswith((".pyc", ".pyo")):
+ code = make_code_from_pyc(filename)
+ else:
+ code = make_code_from_py(filename)
+ except CoverageException:
+ raise
+ except Exception as exc:
+ msg = "Couldn't run {filename!r} as Python code: {exc.__class__.__name__}: {exc}"
+ raise CoverageException(msg.format(filename=filename, exc=exc))
# Execute the code object.
try: