diff --git a/ipykernel/zmqshell.py b/ipykernel/zmqshell.py index 9e9ded064..bd3f8ef41 100644 --- a/ipykernel/zmqshell.py +++ b/ipykernel/zmqshell.py @@ -21,6 +21,7 @@ import typing import warnings from pathlib import Path +from subprocess import CalledProcessError from IPython.core import page from IPython.core.autocall import ZMQExitAutocall @@ -783,9 +784,14 @@ def system_piped(self, cmd): with AvoidUNCPath() as path: if path is not None: cmd = f"pushd {path} &&{cmd}" - self.user_ns["_exit_code"] = system(cmd) + exit_code = system(cmd) + self.user_ns["_exit_code"] = exit_code else: - self.user_ns["_exit_code"] = system(self.var_expand(cmd, depth=1)) + exit_code = system(self.var_expand(cmd, depth=1)) + self.user_ns["_exit_code"] = exit_code + + if getattr(self, "system_raise_on_error", False) and exit_code != 0: + raise CalledProcessError(exit_code, cmd) # Ensure new system_piped implementation is used system = system_piped