summaryrefslogtreecommitdiff
path: root/coverage/cmdline.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2013-04-20 19:10:51 -0400
committerNed Batchelder <ned@nedbatchelder.com>2013-04-20 19:10:51 -0400
commitf5cfe193a73b08990fddd888167b6c6336b6803c (patch)
treea42f9e8a104eca8763ce0ded47b594c4891b1415 /coverage/cmdline.py
parent351264bd7deff3fdf6e393581560b4d994c1dbfa (diff)
downloadpython-coveragepy-git-f5cfe193a73b08990fddd888167b6c6336b6803c.tar.gz
Get sys.path right when running modules with -m, fixes #207 and #242.
Diffstat (limited to 'coverage/cmdline.py')
-rw-r--r--coverage/cmdline.py13
1 files changed, 11 insertions, 2 deletions
diff --git a/coverage/cmdline.py b/coverage/cmdline.py
index cb1d7a3e..ac803109 100644
--- a/coverage/cmdline.py
+++ b/coverage/cmdline.py
@@ -1,6 +1,6 @@
"""Command-line support for Coverage."""
-import optparse, sys, traceback
+import optparse, os, sys, traceback
from coverage.backward import sorted # pylint: disable=W0622
from coverage.execfile import run_python_file, run_python_module
@@ -549,15 +549,21 @@ class CoverageScript(object):
def do_execute(self, options, args):
"""Implementation of 'coverage run'."""
+ # Set the first path element properly.
+ old_path0 = sys.path[0]
+
# Run the script.
self.coverage.start()
code_ran = True
try:
try:
if options.module:
+ sys.path[0] = ''
self.run_python_module(args[0], args)
else:
- self.run_python_file(args[0], args)
+ filename = args[0]
+ sys.path[0] = os.path.abspath(os.path.dirname(filename))
+ self.run_python_file(filename, args)
except NoSource:
code_ran = False
raise
@@ -566,6 +572,9 @@ class CoverageScript(object):
if code_ran:
self.coverage.save()
+ # Restore the old path
+ sys.path[0] = old_path0
+
def do_debug(self, args):
"""Implementation of 'coverage debug'."""