summaryrefslogtreecommitdiff
path: root/coverage/execfile.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2019-07-06 17:17:07 -0400
committerNed Batchelder <ned@nedbatchelder.com>2019-07-06 17:21:57 -0400
commit9ae35a5f6a4fed487ef6c14edd6b4eb4f5c1b7f0 (patch)
treeb7ffb1ea7045f75bcb78070e728693b7b0fd8023 /coverage/execfile.py
parente5a59865b038ac575c4f8ca9e79c5b4802018ff1 (diff)
downloadpython-coveragepy-git-9ae35a5f6a4fed487ef6c14edd6b4eb4f5c1b7f0.tar.gz
Add tests of bug #806, and ensure it's fixed even if the program ends with an exception
Diffstat (limited to 'coverage/execfile.py')
-rw-r--r--coverage/execfile.py9
1 files changed, 5 insertions, 4 deletions
diff --git a/coverage/execfile.py b/coverage/execfile.py
index 4edbc8ac..972d8f1b 100644
--- a/coverage/execfile.py
+++ b/coverage/execfile.py
@@ -192,12 +192,11 @@ class PyRunner(object):
raise CoverageException(msg.format(filename=self.arg0, exc=exc))
# Execute the code object.
+ # Return to the original directory in case the test code exits in
+ # a non-existent directory.
+ cwd = os.getcwd()
try:
- # Return to the original directory in case the test code exits in
- # a non-existent directory.
- cwd = os.getcwd()
exec(code, main_mod.__dict__)
- os.chdir(cwd)
except SystemExit: # pylint: disable=try-except-raise
# The user called sys.exit(). Just pass it along to the upper
# layers, where it will be handled.
@@ -236,6 +235,8 @@ class PyRunner(object):
raise ExceptionDuringRun(typ, err, tb.tb_next)
else:
sys.exit(1)
+ finally:
+ os.chdir(cwd)
def run_python_module(args):