Skip to content

Commit

Permalink
Merge pull request ipython#1895 from takluyver/testing-ip.system-depth
Browse files Browse the repository at this point in the history
Fix error in test suite with ip.system()
  • Loading branch information
fperez committed Jun 10, 2012
2 parents 9d29756 + 8a2d4eb commit b7f2d71
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 5 deletions.
11 changes: 7 additions & 4 deletions IPython/core/interactiveshell.py
Original file line number Diff line number Diff line change
Expand Up @@ -2210,7 +2210,7 @@ def system_raw(self, cmd):
# use piped system by default, because it is better behaved
system = system_piped

def getoutput(self, cmd, split=True):
def getoutput(self, cmd, split=True, depth=0):
"""Get output (possibly including stderr) from a subprocess.
Parameters
Expand All @@ -2219,17 +2219,20 @@ def getoutput(self, cmd, split=True):
Command to execute (can not end in '&', as background processes are
not supported.
split : bool, optional
If True, split the output into an IPython SList. Otherwise, an
IPython LSString is returned. These are objects similar to normal
lists and strings, with a few convenience attributes for easier
manipulation of line-based output. You can use '?' on them for
details.
"""
depth : int, optional
How many frames above the caller are the local variables which should
be expanded in the command string? The default (0) assumes that the
expansion variables are in the stack frame calling this function.
"""
if cmd.rstrip().endswith('&'):
# this is *far* from a rigorous test
raise OSError("Background processes not supported.")
out = getoutput(self.var_expand(cmd, depth=1))
out = getoutput(self.var_expand(cmd, depth=depth+1))
if split:
out = SList(out.splitlines())
else:
Expand Down
2 changes: 1 addition & 1 deletion IPython/testing/globalipapp.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ def xsys(self, cmd):
"""
# We use getoutput, but we need to strip it because pexpect captures
# the trailing newline differently from commands.getoutput
print(self.getoutput(cmd, split=False).rstrip(), end='', file=sys.stdout)
print(self.getoutput(cmd, split=False, depth=1).rstrip(), end='', file=sys.stdout)
sys.stdout.flush()


Expand Down

0 comments on commit b7f2d71

Please sign in to comment.