[PATCH 4 of 7] procutil: fix error message of tempfile filter

Yuya Nishihara yuya at tcha.org
Sat Apr 7 09:39:40 EDT 2018


# HG changeset patch
# User Yuya Nishihara <yuya at tcha.org>
# Date 1523103470 -32400
#      Sat Apr 07 21:17:50 2018 +0900
# Node ID 91d6e908f4703e421c887f24ae8c23bf98c32202
# Parent  7ab4ebc2c6d6b71b540258c0eaeb840b3bc322a5
procutil: fix error message of tempfile filter

First, we need to use procutil.system() to get an exit code compatible with
explainexit(). Second, explainexit() returns (msg, code) tuple.

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 ..


More information about the Mercurial-devel mailing list