Mercurial > hg-stable
changeset 35419:b1959391a088
extdata: abort if external command exits with non-zero status (BC)
Per the last discussion, this is more reliable and consistent way than
suppressing an error. For grep, erroring out might be inconvenient, but
for curl, non-zero exit status should be detected. The latter wouldn't be
possible if non-zero status is ignored.
https://www.mercurial-scm.org/pipermail/mercurial-devel/2017-October/105727.html
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sun, 01 Oct 2017 12:21:50 +0100 |
parents | 0fe5d99804bb |
children | c8e8e14a5ee9 |
files | mercurial/scmutil.py tests/test-extdata.t |
diffstat | 2 files changed, 5 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/scmutil.py Thu Dec 14 21:30:00 2017 +0800 +++ b/mercurial/scmutil.py Sun Oct 01 12:21:50 2017 +0100 @@ -1100,12 +1100,11 @@ finally: if proc: proc.communicate() - if proc.returncode != 0: - # not an error so 'cmd | grep' can be empty - repo.ui.debug("extdata command '%s' %s\n" - % (cmd, util.explainexit(proc.returncode)[0])) if src: src.close() + if proc and proc.returncode != 0: + raise error.Abort(_("extdata command '%s' failed: %s") + % (cmd, util.explainexit(proc.returncode)[0])) return data
--- a/tests/test-extdata.t Thu Dec 14 21:30:00 2017 +0800 +++ b/tests/test-extdata.t Sun Oct 01 12:21:50 2017 +0100 @@ -46,8 +46,8 @@ test non-zero exit of shell command $ hg log -qr "extdata(emptygrep)" - $ hg log -qr "extdata(emptygrep)" --debug - extdata command 'cat extdata.txt | grep empty' exited with status * (glob) + abort: extdata command 'cat extdata.txt | grep empty' failed: exited with status 1 + [255] test bad extdata() revset source