diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2019-07-06 17:17:07 -0400 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2019-07-06 17:21:57 -0400 |
commit | 9ae35a5f6a4fed487ef6c14edd6b4eb4f5c1b7f0 (patch) | |
tree | b7ffb1ea7045f75bcb78070e728693b7b0fd8023 /coverage/execfile.py | |
parent | e5a59865b038ac575c4f8ca9e79c5b4802018ff1 (diff) | |
download | python-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.py | 9 |
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): |