Mercurial > hg-stable
changeset 46485:768056549737
errors: use exit code 40 for when a hook fails
A hook can be used for checking inputs, state, configuration,
security, etc., so it's unclear which of the existing exit codes to
use. Let's instead add one specifically for failed hooks. I picked 40.
Differential Revision: https://phab.mercurial-scm.org/D9910
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Fri, 29 Jan 2021 12:16:55 -0800 |
parents | bc3f3b59d0a4 |
children | dc00324e80f4 |
files | mercurial/scmutil.py tests/test-bookmarks-pushpull.t tests/test-bookmarks.t tests/test-bundle2-exchange.t tests/test-commandserver.t tests/test-commit-amend.t tests/test-dispatch.t tests/test-histedit-edit.t tests/test-histedit-fold.t tests/test-hook.t tests/test-mactext.t tests/test-merge-tools.t tests/test-mq-qfold.t tests/test-mq-qnew.t tests/test-mq-qrefresh-replace-log-message.t tests/test-narrow-pull.t tests/test-narrow-widen.t tests/test-phases.t tests/test-rebase-interruptions.t tests/test-rollback.t tests/test-share-bookmarks.t tests/test-strip.t tests/test-tag.t tests/test-transplant.t tests/test-win32text.t |
diffstat | 25 files changed, 70 insertions(+), 68 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/scmutil.py Fri Jan 29 12:50:10 2021 -0500 +++ b/mercurial/scmutil.py Fri Jan 29 12:16:55 2021 -0800 @@ -229,6 +229,8 @@ detailed_exit_code = 20 elif isinstance(inst, error.ConfigError): detailed_exit_code = 30 + elif isinstance(inst, error.HookAbort): + detailed_exit_code = 40 elif isinstance(inst, error.SecurityError): detailed_exit_code = 150 elif isinstance(inst, error.CanceledError):
--- a/tests/test-bookmarks-pushpull.t Fri Jan 29 12:50:10 2021 -0500 +++ b/tests/test-bookmarks-pushpull.t Fri Jan 29 12:16:55 2021 -0800 @@ -1177,7 +1177,7 @@ searching for changes no changes found abort: prepushkey hook exited with status 1 - [255] + [40] #endif
--- a/tests/test-bookmarks.t Fri Jan 29 12:50:10 2021 -0500 +++ b/tests/test-bookmarks.t Fri Jan 29 12:16:55 2021 -0800 @@ -1125,7 +1125,7 @@ transaction abort! rollback completed abort: pretxnclose hook exited with status 1 - [255] + [40] $ cp .hg/bookmarks.pending.saved .hg/bookmarks.pending (check visible bookmarks while transaction running in repo) @@ -1158,7 +1158,7 @@ transaction abort! rollback completed abort: pretxnclose hook exited with status 1 - [255] + [40] Check pretxnclose-bookmark can abort a transaction -------------------------------------------------- @@ -1242,7 +1242,7 @@ transaction abort! rollback completed abort: pretxnclose-bookmark.force-public hook exited with status 1 - [255] + [40] create on a public changeset @@ -1254,4 +1254,4 @@ transaction abort! rollback completed abort: pretxnclose-bookmark.force-forward hook exited with status 1 - [255] + [40]
--- a/tests/test-bundle2-exchange.t Fri Jan 29 12:50:10 2021 -0500 +++ b/tests/test-bundle2-exchange.t Fri Jan 29 12:16:55 2021 -0800 @@ -638,7 +638,7 @@ remote: Cleaning up the mess... remote: rollback completed abort: pretxnclose.failpush hook exited with status 1 - [255] + [40] $ hg -R main push ssh://user@dummy/other -r e7ec4e813ba6 pushing to ssh://user@dummy/other @@ -699,7 +699,7 @@ remote: Cleaning up the mess... remote: rollback completed abort: pretxnchangegroup hook exited with status 1 - [255] + [40] $ hg -R main push ssh://user@dummy/other -r e7ec4e813ba6 pushing to ssh://user@dummy/other searching for changes @@ -747,7 +747,7 @@ Cleaning up the mess... rollback completed abort: pretxnchangegroup hook exited with status 1 - [255] + [40] $ hg -R main push ssh://user@dummy/other -r e7ec4e813ba6 pushing to ssh://user@dummy/other searching for changes
--- a/tests/test-commandserver.t Fri Jan 29 12:50:10 2021 -0500 +++ b/tests/test-commandserver.t Fri Jan 29 12:16:55 2021 -0800 @@ -522,7 +522,7 @@ transaction abort! rollback completed abort: pretxncommit hook exited with status 1 - [255] + [40] *** runcommand verify checking changesets checking manifests @@ -1013,7 +1013,7 @@ transaction abort! rollback completed abort: pretxncommit hook exited with status 1 - [255] + [40] *** runcommand log *** runcommand verify -q @@ -1057,7 +1057,7 @@ transaction abort! rollback completed abort: pretxncommit hook exited with status 1 - [255] + [40] *** runcommand log 0 bar (bar) *** runcommand verify -q
--- a/tests/test-commit-amend.t Fri Jan 29 12:50:10 2021 -0500 +++ b/tests/test-commit-amend.t Fri Jan 29 12:16:55 2021 -0800 @@ -209,7 +209,7 @@ transaction abort! rollback completed abort: pretxncommit.test-saving-last-message hook exited with status 1 - [255] + [40] $ cat .hg/last-message.txt message given from command line (no-eol) @@ -234,7 +234,7 @@ transaction abort! rollback completed abort: pretxncommit.test-saving-last-message hook exited with status 1 - [255] + [40] $ cat .hg/last-message.txt another precious commit message
--- a/tests/test-dispatch.t Fri Jan 29 12:50:10 2021 -0500 +++ b/tests/test-dispatch.t Fri Jan 29 12:16:55 2021 -0800 @@ -154,7 +154,7 @@ $ HGPLAIN=+strictflags hg --config='hooks.pre-log=false' log -b default abort: pre-log hook exited with status 1 - [255] + [40] $ HGPLAIN=+strictflags hg --cwd .. -q -Ra log -b default 0:cb9a9f314b8b $ HGPLAIN=+strictflags hg --cwd .. -q --repository a log -b default @@ -166,7 +166,7 @@ $ HGPLAIN= hg log --config='hooks.pre-log=false' -b default abort: pre-log hook exited with status 1 - [255] + [40] $ HGPLAINEXCEPT= hg log --cwd .. -q -Ra -b default 0:cb9a9f314b8b
--- a/tests/test-histedit-edit.t Fri Jan 29 12:50:10 2021 -0500 +++ b/tests/test-histedit-edit.t Fri Jan 29 12:16:55 2021 -0800 @@ -375,7 +375,7 @@ note: commit message saved in .hg/last-message.txt note: use 'hg commit --logfile .hg/last-message.txt --edit' to reuse it abort: pretxncommit.unexpectedabort hook exited with status 1 - [255] + [40] $ cat .hg/last-message.txt f @@ -400,7 +400,7 @@ note: commit message saved in .hg/last-message.txt note: use 'hg commit --logfile .hg/last-message.txt --edit' to reuse it abort: pretxncommit.unexpectedabort hook exited with status 1 - [255] + [40] $ cat >> .hg/hgrc <<EOF > [hooks]
--- a/tests/test-histedit-fold.t Fri Jan 29 12:50:10 2021 -0500 +++ b/tests/test-histedit-fold.t Fri Jan 29 12:16:55 2021 -0800 @@ -202,7 +202,7 @@ transaction abort! rollback completed abort: pretxncommit.abortfolding hook failed - [255] + [40] $ cat .hg/last-message.txt f
--- a/tests/test-hook.t Fri Jan 29 12:50:10 2021 -0500 +++ b/tests/test-hook.t Fri Jan 29 12:16:55 2021 -0800 @@ -227,7 +227,7 @@ HG_PATS=[] abort: pre-identify hook exited with status 1 - [255] + [40] $ hg cat b pre-cat hook: HG_ARGS=cat b HG_HOOKNAME=pre-cat @@ -390,7 +390,7 @@ HG_TAG=fa abort: pretag.forbid hook exited with status 1 - [255] + [40] $ hg tag -l fla pretag hook: HG_HOOKNAME=pretag HG_HOOKTYPE=pretag @@ -405,7 +405,7 @@ HG_TAG=fla abort: pretag.forbid hook exited with status 1 - [255] + [40] pretxncommit hook can see changeset, can roll back txn, changeset no more there after @@ -451,7 +451,7 @@ rollback completed abort: pretxncommit.forbid1 hook exited with status 1 - [255] + [40] $ hg -q tip 4:539e4b31b6dc @@ -485,7 +485,7 @@ HG_PARENT1=539e4b31b6dc99b3cfbaa6b53cbc1c1f9a1e3a10 abort: precommit.forbid hook exited with status 1 - [255] + [40] $ hg -q tip 4:539e4b31b6dc @@ -644,7 +644,7 @@ HG_URL=file:$TESTTMP/a abort: prepushkey hook exited with status 1 - [255] + [40] $ cd ../a test that prelistkeys can prevent listing keys @@ -679,7 +679,7 @@ HG_NAMESPACE=bookmarks abort: prelistkeys hook exited with status 1 - [255] + [40] $ cd ../a $ rm .hg/hgrc @@ -704,7 +704,7 @@ HG_URL=file:$TESTTMP/a abort: prechangegroup.forbid hook exited with status 1 - [255] + [40] pretxnchangegroup hook can see incoming changes, can roll back txn, incoming changes no longer there after @@ -735,7 +735,7 @@ transaction abort! rollback completed abort: pretxnchangegroup.forbid1 hook exited with status 1 - [255] + [40] $ hg -q tip 3:07f3376c1e65 @@ -786,7 +786,7 @@ HG_SOURCE=pull abort: preoutgoing.forbid hook exited with status 1 - [255] + [40] outgoing hooks work for local clones @@ -825,7 +825,7 @@ HG_SOURCE=clone abort: preoutgoing.forbid hook exited with status 1 - [255] + [40] $ cd "$TESTTMP/b" @@ -915,7 +915,7 @@ hooktype preoutgoing source pull abort: preoutgoing.fail hook failed - [255] + [40] $ echo '[hooks]' > ../a/.hg/hgrc $ echo 'preoutgoing.uncallable = python:hooktests.uncallable' >> ../a/.hg/hgrc @@ -1283,7 +1283,7 @@ rollback completed strip failed, backup bundle stored in * (glob) abort: pretxnclose.error hook exited with status 1 - [255] + [40] $ hg recover no interrupted transaction available [1] @@ -1306,7 +1306,7 @@ transaction abort! rollback completed abort: pretxnclose hook exited with status 1 - [255] + [40] $ cp .hg/store/00changelog.i.a.saved .hg/store/00changelog.i.a (check (in)visibility of new changeset while transaction running in @@ -1331,7 +1331,7 @@ transaction abort! rollback completed abort: pretxnclose hook exited with status 1 - [255] + [40] Hook from untrusted hgrc are reported as failure ================================================ @@ -1382,7 +1382,7 @@ rollback completed abort: untrusted hook pretxnclose.testing not executed (see 'hg help config.trusted') - [255] + [40] $ hg log changeset: 0:3903775176ed tag: tip
--- a/tests/test-mactext.t Fri Jan 29 12:50:10 2021 -0500 +++ b/tests/test-mactext.t Fri Jan 29 12:16:55 2021 -0800 @@ -27,7 +27,7 @@ transaction abort! rollback completed abort: pretxncommit.cr hook failed - [255] + [40] $ hg cat f | f --hexdump 0000: 68 65 6c 6c 6f 0a |hello.|
--- a/tests/test-merge-tools.t Fri Jan 29 12:50:10 2021 -0500 +++ b/tests/test-merge-tools.t Fri Jan 29 12:16:55 2021 -0800 @@ -377,7 +377,7 @@ merging f some fail message abort: $TESTTMP/mybrokenmerge.py hook failed - [255] + [40] $ aftermerge # cat f revision 1
--- a/tests/test-mq-qfold.t Fri Jan 29 12:50:10 2021 -0500 +++ b/tests/test-mq-qfold.t Fri Jan 29 12:16:55 2021 -0800 @@ -235,7 +235,7 @@ rollback completed qrefresh interrupted while patch was popped! (revert --all, qpush to recover) abort: pretxncommit.unexpectedabort hook exited with status 1 - [255] + [40] $ cat .hg/last-message.txt original message
--- a/tests/test-mq-qnew.t Fri Jan 29 12:50:10 2021 -0500 +++ b/tests/test-mq-qnew.t Fri Jan 29 12:16:55 2021 -0800 @@ -310,7 +310,7 @@ note: commit message saved in .hg/last-message.txt note: use 'hg commit --logfile .hg/last-message.txt --edit' to reuse it abort: pretxncommit.unexpectedabort hook exited with status 1 - [255] + [40] $ cat .hg/last-message.txt
--- a/tests/test-mq-qrefresh-replace-log-message.t Fri Jan 29 12:50:10 2021 -0500 +++ b/tests/test-mq-qrefresh-replace-log-message.t Fri Jan 29 12:16:55 2021 -0800 @@ -191,7 +191,7 @@ rollback completed qrefresh interrupted while patch was popped! (revert --all, qpush to recover) abort: pretxncommit.unexpectedabort hook exited with status 1 - [255] + [40] $ cat .hg/last-message.txt Fifth commit message This is the 5th log message @@ -235,7 +235,7 @@ rollback completed qrefresh interrupted while patch was popped! (revert --all, qpush to recover) abort: pretxncommit.unexpectedabort hook exited with status 1 - [255] + [40] (rebuilding at failure of qrefresh bases on rev #0, and it causes dropping status of "file2") @@ -273,7 +273,7 @@ rollback completed qrefresh interrupted while patch was popped! (revert --all, qpush to recover) abort: pretxncommit.unexpectedabort hook exited with status 1 - [255] + [40] $ sh "$TESTTMP/checkvisibility.sh" ==== @@ -315,7 +315,7 @@ rollback completed qrefresh interrupted while patch was popped! (revert --all, qpush to recover) abort: pretxncommit.unexpectedabort hook exited with status 1 - [255] + [40] $ sh "$TESTTMP/checkvisibility.sh" ====
--- a/tests/test-narrow-pull.t Fri Jan 29 12:50:10 2021 -0500 +++ b/tests/test-narrow-pull.t Fri Jan 29 12:16:55 2021 -0800 @@ -78,7 +78,7 @@ transaction abort! rollback completed abort: pretxnchangegroup.bad hook exited with status 1 - [255] + [40] $ hg id 223311e70a6f tip
--- a/tests/test-narrow-widen.t Fri Jan 29 12:50:10 2021 -0500 +++ b/tests/test-narrow-widen.t Fri Jan 29 12:16:55 2021 -0800 @@ -431,7 +431,7 @@ transaction abort! rollback completed abort: pretxnchangegroup.bad hook exited with status 1 - [255] + [40] $ hg l $ hg bookmarks no bookmarks set
--- a/tests/test-phases.t Fri Jan 29 12:50:10 2021 -0500 +++ b/tests/test-phases.t Fri Jan 29 12:16:55 2021 -0800 @@ -757,7 +757,7 @@ transaction abort! rollback completed abort: pretxnclose hook exited with status 1 - [255] + [40] $ cp .hg/store/phaseroots.pending.saved .hg/store/phaseroots.pending (check (in)visibility of phaseroot while transaction running in repo) @@ -780,7 +780,7 @@ transaction abort! rollback completed abort: pretxnclose hook exited with status 1 - [255] + [40] Check that pretxnclose-phase hook can control phase movement @@ -854,12 +854,12 @@ transaction abort! rollback completed abort: pretxnclose-phase.nopublish_D hook exited with status 1 - [255] + [40] $ hg phase --public a603bfb5a83e transaction abort! rollback completed abort: pretxnclose-phase.nopublish_D hook exited with status 1 - [255] + [40] $ hg phase --draft 17a481b3bccb test-debug-phase: move rev 3: 2 -> 1 test-debug-phase: move rev 4: 2 -> 1 @@ -871,7 +871,7 @@ transaction abort! rollback completed abort: pretxnclose-phase.nopublish_D hook exited with status 1 - [255] + [40] $ cd ..
--- a/tests/test-rebase-interruptions.t Fri Jan 29 12:50:10 2021 -0500 +++ b/tests/test-rebase-interruptions.t Fri Jan 29 12:16:55 2021 -0800 @@ -350,7 +350,7 @@ M A rebasing 6:a0b2430ebfb8 tip "F" abort: precommit hook exited with status 1 - [255] + [40] $ hg tglogp @ 7: 401ccec5e39f secret 'C' | @@ -401,7 +401,7 @@ transaction abort! rollback completed abort: pretxncommit hook exited with status 1 - [255] + [40] $ hg tglogp @ 7: 401ccec5e39f secret 'C' | @@ -451,7 +451,7 @@ transaction abort! rollback completed abort: pretxnclose hook exited with status 1 - [255] + [40] $ hg tglogp @ 7: 401ccec5e39f secret 'C' |
--- a/tests/test-rollback.t Fri Jan 29 12:50:10 2021 -0500 +++ b/tests/test-rollback.t Fri Jan 29 12:16:55 2021 -0800 @@ -103,7 +103,7 @@ transaction abort! rollback completed abort: pretxncommit hook exited with status * (glob) - [255] + [40] $ cat .hg/last-message.txt ; echo precious commit message @@ -118,7 +118,7 @@ note: commit message saved in .hg/last-message.txt note: use 'hg commit --logfile .hg/last-message.txt --edit' to reuse it abort: pretxncommit hook exited with status * (glob) - [255] + [40] $ cat .hg/last-message.txt another precious commit message @@ -380,7 +380,7 @@ warn during abort rollback completed abort: pretxncommit hook exited with status 1 - [255] + [40] $ hg commit -m 'commit 1' warn during pretxncommit @@ -405,7 +405,7 @@ transaction abort! rollback completed abort: pretxncommit hook exited with status 1 - [255] + [40] $ hg commit -m 'commit 1' warn during pretxncommit @@ -431,7 +431,7 @@ transaction abort! warn during abort abort: pretxncommit hook exited with status 1 - [255] + [40] $ hg verify checking changesets
--- a/tests/test-share-bookmarks.t Fri Jan 29 12:50:10 2021 -0500 +++ b/tests/test-share-bookmarks.t Fri Jan 29 12:16:55 2021 -0800 @@ -102,7 +102,7 @@ transaction abort! rollback completed abort: pretxnclose hook exited with status 1 - [255] + [40] $ hg book bm1 FYI, in contrast to above test, bmX is invisible in repo1 (= shared @@ -127,7 +127,7 @@ transaction abort! rollback completed abort: pretxnclose hook exited with status 1 - [255] + [40] $ hg book bm3 clean up bm2 since it's uninteresting (not shared in the vfs case and @@ -249,7 +249,7 @@ no changes found adding remote bookmark bm3 abort: forced failure by extension - [255] + [40] $ hg boo bm1 3:b87954705719 bm4 5:92793bfc8cad
--- a/tests/test-strip.t Fri Jan 29 12:50:10 2021 -0500 +++ b/tests/test-strip.t Fri Jan 29 12:16:55 2021 -0800 @@ -427,7 +427,7 @@ strip failed, unrecovered changes stored in '$TESTTMP/test/.hg/strip-backup/*-temp.hg' (glob) (fix the problem, then recover the changesets with "hg unbundle '$TESTTMP/test/.hg/strip-backup/*-temp.hg'") (glob) abort: pretxnchangegroup.bad hook exited with status 1 - [255] + [40] $ restore $ hg log -G o changeset: 4:443431ffac4f
--- a/tests/test-tag.t Fri Jan 29 12:50:10 2021 -0500 +++ b/tests/test-tag.t Fri Jan 29 12:16:55 2021 -0800 @@ -290,7 +290,7 @@ $ rm -f .hg/last-message.txt $ HGEDITOR="\"sh\" \"`pwd`/editor.sh\"" hg tag custom-tag -e abort: pretag.test-saving-lastmessage hook exited with status 1 - [255] + [40] $ test -f .hg/last-message.txt [1] @@ -325,7 +325,7 @@ note: commit message saved in .hg/last-message.txt note: use 'hg commit --logfile .hg/last-message.txt --edit' to reuse it abort: pretxncommit.unexpectedabort hook exited with status 1 - [255] + [40] $ cat .hg/last-message.txt custom tag message second line
--- a/tests/test-transplant.t Fri Jan 29 12:50:10 2021 -0500 +++ b/tests/test-transplant.t Fri Jan 29 12:16:55 2021 -0800 @@ -1091,7 +1091,7 @@ transaction abort! rollback completed abort: pretxncommit.abort hook exited with status 1 - [255] + [40] $ cat >> .hg/hgrc <<EOF > [hooks] > pretxncommit.abort = !
--- a/tests/test-win32text.t Fri Jan 29 12:50:10 2021 -0500 +++ b/tests/test-win32text.t Fri Jan 29 12:16:55 2021 -0800 @@ -38,7 +38,7 @@ transaction abort! rollback completed abort: pretxncommit.crlf hook failed - [255] + [40] $ mv .hg/hgrc .hg/hgrc.bak @@ -77,7 +77,7 @@ transaction abort! rollback completed abort: pretxnchangegroup.crlf hook failed - [255] + [40] $ mv .hg/hgrc.bak .hg/hgrc $ echo hello > f @@ -109,7 +109,7 @@ transaction abort! rollback completed abort: pretxncommit.crlf hook failed - [255] + [40] $ hg revert -a forgetting d/f2 $ rm d/f2 @@ -286,7 +286,7 @@ transaction abort! rollback completed abort: pretxnchangegroup.crlf hook failed - [255] + [40] $ hg log -v changeset: 5:f0b1c8d75fce