diff options
-rw-r--r-- | CHANGES.txt | 4 | ||||
-rw-r--r-- | coverage/execfile.py | 2 | ||||
-rw-r--r-- | test/test_process.py | 7 |
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): |