diff -r 51069bf6366b -r 49148d7868df tests/test-mq-qrefresh-replace-log-message.t --- a/tests/test-mq-qrefresh-replace-log-message.t Mon May 05 21:26:40 2014 +0900 +++ b/tests/test-mq-qrefresh-replace-log-message.t Mon May 05 21:26:40 2014 +0900 @@ -59,3 +59,86 @@ $ hg log -l1 --template "{desc}\n" Fifth commit message This is the 5th log message + +Test saving last-message.txt: + + $ cat > $TESTTMP/editor.sh << EOF + > echo "==== before editing" + > cat \$1 + > echo "====" + > (echo; echo "test saving last-message.txt") >> \$1 + > EOF + + $ cat > $TESTTMP/commitfailure.py < from mercurial import util + > def reposetup(ui, repo): + > class commitfailure(repo.__class__): + > def commit(self, *args, **kwargs): + > raise util.Abort('emulating unexpected abort') + > repo.__class__ = commitfailure + > EOF + + $ cat >> .hg/hgrc < [extensions] + > # this failure occurs before editor invocation + > commitfailure = $TESTTMP/commitfailure.py + > EOF + + $ hg qapplied + first-patch + second-patch + $ hg tip --template "{files}\n" + file2 + +(test that editor is not invoked before transaction starting) + + $ rm -f .hg/last-message.txt + $ HGEDITOR="sh $TESTTMP/editor.sh" hg qrefresh -e + refresh interrupted while patch was popped! (revert --all, qpush to recover) + abort: emulating unexpected abort + [255] + $ cat .hg/last-message.txt + cat: .hg/last-message.txt: No such file or directory + [1] + +(reset applied patches and directory status) + + $ cat >> .hg/hgrc < [extensions] + > commitfailure = ! + > EOF + + $ hg qapplied + first-patch + $ hg status -A file2 + ? file2 + $ rm file2 + $ hg qpush -q second-patch + now at: second-patch + +(test that editor is invoked and commit message is saved into +"last-message.txt") + + $ cat >> .hg/hgrc < [hooks] + > # this failure occurs after editor invocation + > pretxncommit.unexpectedabort = false + > EOF + + $ rm -f .hg/last-message.txt + $ HGEDITOR="sh $TESTTMP/editor.sh" hg qrefresh -e + ==== before editing + Fifth commit message + This is the 5th log message + ==== + transaction abort! + rollback completed + note: commit message saved in .hg/last-message.txt + refresh interrupted while patch was popped! (revert --all, qpush to recover) + abort: pretxncommit.unexpectedabort hook exited with status 1 + [255] + $ cat .hg/last-message.txt + Fifth commit message + This is the 5th log message + + test saving last-message.txt