diff --git a/mercurial/utils/procutil.py b/mercurial/utils/procutil.py --- a/mercurial/utils/procutil.py +++ b/mercurial/utils/procutil.py @@ -174,12 +174,12 @@ def tempfilter(s, cmd): os.close(outfd) cmd = cmd.replace('INFILE', inname) cmd = cmd.replace('OUTFILE', outname) - code = os.system(cmd) + code = system(cmd) if pycompat.sysplatform == 'OpenVMS' and code & 1: code = 0 if code: raise error.Abort(_("command '%s' failed: %s") % - (cmd, explainexit(code))) + (cmd, explainexit(code)[0])) with open(outname, 'rb') as fp: return fp.read() finally: diff --git a/tests/test-encode.t b/tests/test-encode.t --- a/tests/test-encode.t +++ b/tests/test-encode.t @@ -59,5 +59,14 @@ check hg cat operation this is a test $ hg -R .. cat --decode ../a.gz | gunzip this is a test + $ cd .. + +check tempfile filter + + $ hg cat a.gz --decode --config 'decode.*.gz=tempfile:gzip -c INFILE > OUTFILE' | gunzip + this is a test + $ hg cat a.gz --decode --config 'decode.*.gz=tempfile:sh -c "exit 1"' + abort: command '*' failed: exited with status 1 (glob) + [255] $ cd ..