diff --git a/IPython/testing/iptest.py b/IPython/testing/iptest.py index 9d4f29a..593a713 100644 --- a/IPython/testing/iptest.py +++ b/IPython/testing/iptest.py @@ -59,6 +59,7 @@ from IPython.utils.importstring import import_item from IPython.utils.path import get_ipython_module_path, get_ipython_package_dir from IPython.utils.process import find_cmd, pycmd2argv from IPython.utils.sysinfo import sys_info +from IPython.utils.tempdir import TemporaryDirectory from IPython.utils.warn import warn from IPython.testing import globalipapp @@ -374,15 +375,18 @@ class IPTester(object): self.processes = [] def _run_cmd(self): - # print >> sys.stderr, '*** CMD:', ' '.join(self.call_args) # dbg - subp = subprocess.Popen(self.call_args) - self.processes.append(subp) - # If this fails, the process will be left in self.processes and cleaned - # up later, but if the wait call succeeds, then we can clear the - # stored process. - retcode = subp.wait() - self.processes.pop() - return retcode + with TemporaryDirectory() as IPYTHONDIR: + env = os.environ.copy() + env['IPYTHONDIR'] = IPYTHONDIR + # print >> sys.stderr, '*** CMD:', ' '.join(self.call_args) # dbg + subp = subprocess.Popen(self.call_args, env=env) + self.processes.append(subp) + # If this fails, the process will be left in self.processes and + # cleaned up later, but if the wait call succeeds, then we can + # clear the stored process. + retcode = subp.wait() + self.processes.pop() + return retcode def run(self): """Run the stored commands"""