summaryrefslogtreecommitdiff
path: root/coverage/cmdline.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2018-11-18 19:41:30 -0500
committerNed Batchelder <ned@nedbatchelder.com>2018-11-25 14:34:59 -0500
commitb7e0eec3d794ee350f8a4392a0c9cc90fff54fa0 (patch)
tree0ccbe08a6c6dd24f95789b1b402d1c418e735a39 /coverage/cmdline.py
parent41547862ba4a9a948023ade66e41d9f43d9d84c2 (diff)
downloadpython-coveragepy-git-b7e0eec3d794ee350f8a4392a0c9cc90fff54fa0.tar.gz
PyRunner knows how to run Python files.
Adjust sys.path to better emulate Python, but only if we should.
Diffstat (limited to 'coverage/cmdline.py')
-rw-r--r--coverage/cmdline.py14
1 files changed, 9 insertions, 5 deletions
diff --git a/coverage/cmdline.py b/coverage/cmdline.py
index be258b5e..67efa8db 100644
--- a/coverage/cmdline.py
+++ b/coverage/cmdline.py
@@ -19,7 +19,7 @@ from coverage import env
from coverage.collector import CTracer
from coverage.data import line_counts
from coverage.debug import info_formatter, info_header
-from coverage.execfile import run_python_file, run_python_module
+from coverage.execfile import PyRunner
from coverage.misc import BaseCoverageException, ExceptionDuringRun, NoSource
from coverage.results import should_fail_under
@@ -504,6 +504,10 @@ class CoverageScript(object):
include=include,
)
+ # We need to be able to import from the current directory, because
+ # plugins may try to, for example, to read Django settings.
+ sys.path.insert(0, '')
+
self.coverage.load()
total = None
@@ -633,6 +637,9 @@ class CoverageScript(object):
)
return ERR
+ runner = PyRunner(args, as_module=bool(options.module))
+ runner.prepare()
+
if options.append:
self.coverage.load()
@@ -640,10 +647,7 @@ class CoverageScript(object):
self.coverage.start()
code_ran = True
try:
- if options.module:
- run_python_module(args[0], args)
- else:
- run_python_file(args[0], args)
+ runner.run()
except NoSource:
code_ran = False
raise