summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES.txt4
-rw-r--r--coverage/execfile.py2
-rw-r--r--test/test_process.py7
3 files changed, 12 insertions, 1 deletions
diff --git a/CHANGES.txt b/CHANGES.txt
index 4d9bf1e2..a4ce47c3 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -25,6 +25,10 @@ Version 3.5
- Modules can now be run directly using ``coverage run -m modulename``, to
mirror Python's ``-m`` flag. Closes `issue 95`_, thanks, Brandon Rhodes.
+- ``coverage run`` didn't emulate Python accurately in one detail: the
+ current directory inserted into ``sys.path`` was relative rather than
+ absolute. This is now fixed.
+
- A little bit of Jython support: `coverage run` can now measure Jython
execution by adapting when $py.class files are traced. Thanks, Adi Roiban.
diff --git a/coverage/execfile.py b/coverage/execfile.py
index 01788bb5..71227b71 100644
--- a/coverage/execfile.py
+++ b/coverage/execfile.py
@@ -89,7 +89,7 @@ def run_python_file(filename, args, package=None):
old_argv = sys.argv
old_path0 = sys.path[0]
sys.argv = args
- sys.path[0] = os.path.dirname(filename)
+ sys.path[0] = os.path.abspath(os.path.dirname(filename))
try:
# Open the source file.
diff --git a/test/test_process.py b/test/test_process.py
index 47f3a088..a4e1a09d 100644
--- a/test/test_process.py
+++ b/test/test_process.py
@@ -6,6 +6,7 @@ import coverage
sys.path.insert(0, os.path.split(__file__)[0]) # Force relative import for Py3k
from coveragetest import CoverageTest
+here = os.path.dirname(__file__)
class ProcessTest(CoverageTest):
"""Tests of the per-process behavior of coverage.py."""
@@ -220,6 +221,12 @@ class ProcessTest(CoverageTest):
self.assertEqual(status, status2)
self.assertEqual(status, 0)
+ def test_coverage_run_is_like_python(self):
+ tryfile = os.path.join(here, "try_execfile.py")
+ self.make_file("run_me.py", open(tryfile).read())
+ out = self.run_command("coverage run run_me.py")
+ out2 = self.run_command("python run_me.py")
+ self.assertMultiLineEqual(out, out2)
if hasattr(os, 'fork'):
def test_fork(self):