diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2011-05-21 21:18:38 -0400 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2011-05-21 21:18:38 -0400 |
commit | 511abdd3a251eb2d5c9a0dd8912c9c52c6fb52b8 (patch) | |
tree | fb1efe5c7b86d22bd535738d0633a5dc8db05501 | |
parent | 34413aab8a61579789faa342331ac9c8a55ee5a4 (diff) | |
download | python-coveragepy-git-511abdd3a251eb2d5c9a0dd8912c9c52c6fb52b8.tar.gz |
The current directory auto-inserted into sys.path is now absolute, to better mimic Python execution.
-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): |