--- a/tests/test-histedit-edit.t Tue Apr 29 12:54:01 2014 +0900
+++ b/tests/test-histedit-edit.t Mon May 05 21:26:40 2014 +0900
@@ -200,8 +200,9 @@
> raise util.Abort('emulating unexpected abort')
> repo.__class__ = commitfailure
> EOF
- $ cat > .hg/hgrc <<EOF
+ $ cat >> .hg/hgrc <<EOF
> [extensions]
+ > # this failure occurs before editor invocation
> commitfailure = $TESTTMP/commitfailure.py
> EOF
@@ -211,6 +212,34 @@
> echo "===="
> echo "check saving last-message.txt" >> \$1
> EOF
+
+(test that editor is not invoked before transaction starting)
+
+ $ rm -f .hg/last-message.txt
+ $ HGEDITOR="sh $TESTTMP/editor.sh" hg histedit tip --commands - 2>&1 << EOF | fixbundle
+ > mess 1fd3b2fe7754 f
+ > EOF
+ 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ abort: emulating unexpected abort
+ $ cat .hg/last-message.txt
+ cat: .hg/last-message.txt: No such file or directory
+ [1]
+
+ $ cat >> .hg/hgrc <<EOF
+ > [extensions]
+ > commitfailure = !
+ > EOF
+ $ hg histedit --abort -q
+
+(test that editor is invoked and commit message is saved into
+"last-message.txt")
+
+ $ cat >> .hg/hgrc <<EOF
+ > [hooks]
+ > # this failure occurs after editor invocation
+ > pretxncommit.unexpectedabort = false
+ > EOF
+
$ rm -f .hg/last-message.txt
$ HGEDITOR="sh $TESTTMP/editor.sh" hg histedit tip --commands - 2>&1 << EOF | fixbundle
> mess 1fd3b2fe7754 f
@@ -219,14 +248,17 @@
==== before editing
f
====
- abort: emulating unexpected abort
+ transaction abort!
+ rollback completed
+ note: commit message saved in .hg/last-message.txt
+ abort: pretxncommit.unexpectedabort hook exited with status 1
$ cat .hg/last-message.txt
f
check saving last-message.txt
- $ cat > .hg/hgrc <<EOF
- > [extensions]
- > commitfailure = !
+ $ cat >> .hg/hgrc <<EOF
+ > [hooks]
+ > pretxncommit.unexpectedabort =
> EOF
$ hg histedit --abort -q