def do_shell(tmpdir, action):
if action['cwd']:
cwd = action['file'].dirpath().join(action['cwd'])
else:
cwd = tmpdir
proc = subprocess.Popen(
action['target'],
shell=True,
cwd=str(cwd),
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
)
out, err = proc.communicate()
out = strip_ansi_codes(out)
out = out.decode('ascii')
# XXX join with err?
if out != action['content']:
import difflib
differ = difflib.Differ()
outl = out.splitlines(True)
contl = action['content'].splitlines(True)
result = differ.compare(contl, outl)
printdiff(result)
return out
评论列表
文章目录