Patchwork [2,of,2] tests: use histedit helpers

login
register
mail settings
Submitter timeless@mozdev.org
Date Feb. 29, 2016, 11:08 p.m.
Message ID <4b4f3d0eb39709a225d4.1456787283@waste.org>
Download mbox | patch
Permalink /patch/13479/
State Superseded
Headers show

Comments

timeless@mozdev.org - Feb. 29, 2016, 11:08 p.m.
# HG changeset patch
# User timeless <timeless@mozdev.org>
# Date 1456782735 0
#      Mon Feb 29 21:52:15 2016 +0000
# Node ID 4b4f3d0eb39709a225d45ed760e093a445086231
# Parent  92cdfcfa8fcea1fcda0f1ab762d0c23835dd7213
tests: use histedit helpers

Reduce reliance on changeset hashes

Patch

diff --git a/tests/test-histedit-arguments.t b/tests/test-histedit-arguments.t
--- a/tests/test-histedit-arguments.t
+++ b/tests/test-histedit-arguments.t
@@ -1,6 +1,7 @@ 
 Test argument handling and various data parsing
 ==================================================
 
+  $ . "$TESTDIR/histedit-helpers.sh"
 
 Enable extensions used by this test.
   $ cat >>$HGRCPATH <<EOF
@@ -87,27 +88,27 @@ 
 Test that we pick the minimum of a revrange
 ---------------------------------------
 
-  $ HGEDITOR=cat hg histedit '2::' --commands - << EOF
-  > pick eb57da33312f 2 three
-  > pick c8e68270e35a 3 four
-  > pick 08d98a8350f3 4 five
-  > EOF
+  $ plan
+  $ pick 'desc(three)'
+  $ pick 'desc(four)'
+  $ pick 'desc(five)'
+  $ HGEDITOR=cat hg histedit '2::' --commands $PLAN
   $ hg up --quiet
 
-  $ HGEDITOR=cat hg histedit 'tip:2' --commands - << EOF
-  > pick eb57da33312f 2 three
-  > pick c8e68270e35a 3 four
-  > pick 08d98a8350f3 4 five
-  > EOF
+  $ plan
+  $ pick 'desc(three)'
+  $ pick 'desc(four)'
+  $ pick 'desc(five)'
+  $ cat $PLAN | HGEDITOR=cat hg histedit 'tip:2' --commands -
   $ hg up --quiet
 
 Test config specified default
 -----------------------------
 
-  $ HGEDITOR=cat hg histedit --config "histedit.defaultrev=only(.) - ::eb57da33312f" --commands - << EOF
-  > pick c8e68270e35a 3 four
-  > pick 08d98a8350f3 4 five
-  > EOF
+  $ plan
+  $ pick 'desc(four)'
+  $ pick 'desc(five)'
+  $ HGEDITOR=cat hg histedit --config "histedit.defaultrev=only(.) - ::eb57da33312f" --commands $PLAN
 
 Run on a revision not descendants of the initial parent
 --------------------------------------------------------------------
@@ -124,9 +125,9 @@ 
   |
   o  2 eb57 three
   |
-  $ HGEDITOR=cat hg histedit -r 4 --commands - << EOF
-  > edit 08d98a8350f3 4 five
-  > EOF
+  $ plan
+  $ edit 'desc(five)'
+  $ HGEDITOR=cat hg histedit -r 4 --commands $PLAN
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   reverting alpha
   Editing (08d98a8350f3), you may commit or record as needed now.
@@ -160,10 +161,10 @@ 
 Test that missing revisions are detected
 ---------------------------------------
 
-  $ HGEDITOR=cat hg histedit "tip^^" --commands - << EOF
-  > pick eb57da33312f 2 three
-  > pick 08d98a8350f3 4 five
-  > EOF
+  $ plan
+  $ pick 'desc(three)'
+  $ pick 'desc(five)'
+  $ HGEDITOR=cat hg histedit "tip^^" --commands $PLAN
   hg: parse error: missing rules for changeset c8e68270e35a
   (use "drop c8e68270e35a" to discard, see also: "hg help -e histedit.config")
   [255]
@@ -171,11 +172,11 @@ 
 Test that extra revisions are detected
 ---------------------------------------
 
-  $ HGEDITOR=cat hg histedit "tip^^" --commands - << EOF
-  > pick 6058cbb6cfd7 0 one
-  > pick c8e68270e35a 3 four
-  > pick 08d98a8350f3 4 five
-  > EOF
+  $ plan
+  $ pick 'desc(one)'
+  $ pick 'desc(four)'
+  $ pick 'desc(five)'
+  $ HGEDITOR=cat hg histedit "tip^^" --commands $PLAN
   hg: parse error: pick "6058cbb6cfd7" changeset was not a candidate
   (only use listed changesets)
   [255]
@@ -183,33 +184,33 @@ 
 Test malformed line
 ---------------------------------------
 
-  $ HGEDITOR=cat hg histedit "tip^^" --commands - << EOF
-  > pickeb57da33312f2three
-  > pick c8e68270e35a 3 four
-  > pick 08d98a8350f3 4 five
-  > EOF
+  $ plan
+  $ echo pickeb57da33312f2three >> $PLAN
+  $ pick 'desc(four)'
+  $ pick 'desc(five)'
+  $ HGEDITOR=cat hg histedit "tip^^" --commands $PLAN
   hg: parse error: malformed line "pickeb57da33312f2three"
   [255]
 
 Test unknown changeset
 ---------------------------------------
 
-  $ HGEDITOR=cat hg histedit "tip^^" --commands - << EOF
-  > pick 0123456789ab 2 three
-  > pick c8e68270e35a 3 four
-  > pick 08d98a8350f3 4 five
-  > EOF
+  $ plan
+  $ echo pick 0123456789ab 2 three >> $PLAN
+  $ pick 'desc(four)'
+  $ pick 'desc(five)'
+  $ HGEDITOR=cat hg histedit "tip^^" --commands $PLAN
   hg: parse error: unknown changeset 0123456789ab listed
   [255]
 
 Test unknown command
 ---------------------------------------
 
-  $ HGEDITOR=cat hg histedit "tip^^" --commands - << EOF
-  > coin eb57da33312f 2 three
-  > pick c8e68270e35a 3 four
-  > pick 08d98a8350f3 4 five
-  > EOF
+  $ plan
+  $ echo coin eb57da33312f 2 three >> $PLAN
+  $ pick 'desc(four)'
+  $ pick 'desc(five)'
+  $ HGEDITOR=cat hg histedit "tip^^" --commands $PLAN
   hg: parse error: unknown action "coin"
   [255]
 
@@ -218,22 +219,22 @@ 
 
 So one is missing and one appear twice.
 
-  $ HGEDITOR=cat hg histedit "tip^^" --commands - << EOF
-  > pick eb57da33312f 2 three
-  > pick eb57da33312f 2 three
-  > pick 08d98a8350f3 4 five
-  > EOF
+  $ plan
+  $ pick 'desc(three)'
+  $ pick 'desc(three)'
+  $ pick 'desc(five)'
+  $ HGEDITOR=cat hg histedit "tip^^" --commands $PLAN
   hg: parse error: duplicated command for changeset eb57da33312f
   [255]
 
 Test bogus rev
 ---------------------------------------
 
-  $ HGEDITOR=cat hg histedit "tip^^" --commands - << EOF
-  > pick eb57da33312f 2 three
-  > pick 0
-  > pick 08d98a8350f3 4 five
-  > EOF
+  $ plan
+  $ pick 'desc(three)'
+  $ echo pick 0 >> $PLAN
+  $ pick 'desc(five)'
+  $ HGEDITOR=cat hg histedit "tip^^" --commands $PLAN
   hg: parse error: invalid changeset 0
   [255]
 
@@ -243,11 +244,11 @@ 
 Note: we use varying amounts of white space between command name and changeset
 short hash. This tests issue3893.
 
-  $ HGEDITOR=cat hg histedit "tip^^" --commands - << EOF
-  > pick eb57da33312f 2 three
-  > p    c8e68270e35a 3 four
-  > f 08d98a8350f3 4 five
-  > EOF
+  $ plan
+  $ pick 'desc(three)'
+  $ echo p    c8e68270e35a 3 four >> $PLAN
+  $ echo f 08d98a8350f3 4 five >> $PLAN
+  $ HGEDITOR=cat hg histedit "tip^^" --commands $PLAN
   four
   ***
   five
@@ -308,10 +309,10 @@ 
 Test --continue with --keep
 
   $ hg strip -q -r . --config extensions.strip=
-  $ hg histedit '.^' -q --keep --commands - << EOF
-  > edit eb57da33312f 2 three
-  > pick f3cfcca30c44 4 x
-  > EOF
+  $ plan
+  $ edit 'desc(three)'
+  $ pick 'desc(x)'
+  $ hg histedit '.^' -q --keep --commands $PLAN
   Editing (eb57da33312f), you may commit or record as needed now.
   (hg histedit --continue to resume)
   [1]
@@ -336,9 +337,9 @@ 
 
 Test that abort fails gracefully on exception
 ----------------------------------------------
-  $ hg histedit . -q --commands - << EOF
-  > edit 8fda0c726bf2 6 x
-  > EOF
+  $ plan
+  $ edit 'desc(x)'
+  $ hg histedit . -q --commands $PLAN
   Editing (8fda0c726bf2), you may commit or record as needed now.
   (hg histedit --continue to resume)
   [1]
@@ -430,23 +431,23 @@ 
 Default base revision should stop at public changesets
 
   $ hg -q up 8cdc02b9bc63
-  $ hg histedit --commands - <<EOF
-  > pick 463b8c0d2973
-  > pick 8cdc02b9bc63
-  > EOF
+  $ plan
+  $ pick 4
+  $ pick 5
+  $ hg histedit --commands $PLAN
 
 Default base revision should stop at branchpoint
 
   $ hg -q up 4c35cdf97d5e
-  $ hg histedit --commands - <<EOF
-  > pick 931820154288
-  > pick 4c35cdf97d5e
-  > EOF
+  $ plan
+  $ pick 6
+  $ pick 7
+  $ hg histedit --commands $PLAN
 
 Default base revision should stop at merge commit
 
   $ hg -q up 8cde254db839
-  $ hg histedit --commands - <<EOF
-  > pick 6f2f0241f119
-  > pick 8cde254db839
-  > EOF
+  $ plan
+  $ pick 11
+  $ pick 12
+  $ hg histedit --commands $PLAN
diff --git a/tests/test-histedit-base.t b/tests/test-histedit-base.t
--- a/tests/test-histedit-base.t
+++ b/tests/test-histedit-base.t
@@ -48,12 +48,12 @@ 
 
 
 Rebase B onto H
-  $ hg histedit 1 --commands - 2>&1 << EOF | fixbundle
-  > base 02de42196ebe
-  > pick 42ccdea3bb16 B
-  > pick 5fddd98957c8 C
-  > pick 32af7686d403 D
-  > EOF
+  $ plan
+  $ base 'desc(H)'
+  $ pick 'desc(B)'
+  $ pick 'desc(C)'
+  $ pick 'desc(D)'
+  $ hg histedit 'desc(B)' --commands $PLAN 2>&1 | fixbundle
 
   $ hg tglog
   @  7:0937e82309df47d14176ee15e45dbec5fbdef340:draft 'D'
@@ -73,12 +73,12 @@ 
   o  0:cd010b8cd998f3981a5a8115f94f8da4ab506089:draft 'A'
   
 Rebase back and drop something
-  $ hg histedit 5 --commands - 2>&1 << EOF | fixbundle
-  > base cd010b8cd998
-  > pick 3d41b7cc7085 B
-  > drop f778d1cbddac C
-  > pick 0937e82309df D
-  > EOF
+  $ plan
+  $ base 'desc(A)'
+  $ pick 'desc(B)'
+  $ drop 'desc(C)'
+  $ pick 'desc(D)'
+  $ hg histedit 'desc(B)' --commands $PLAN 2>&1 | fixbundle
 
   $ hg tglog
   @  6:476cc3e4168da2d036b141f7f7dcff7f8e3fe846:draft 'D'
@@ -96,12 +96,12 @@ 
   o  0:cd010b8cd998f3981a5a8115f94f8da4ab506089:draft 'A'
   
 Split stack
-  $ hg histedit 5 --commands - 2>&1 << EOF | fixbundle
-  > base cd010b8cd998
-  > pick d273e35dcdf2 B
-  > base cd010b8cd998
-  > pick 476cc3e4168d D
-  > EOF
+  $ plan
+  $ base 'desc(A)'
+  $ pick 'desc(B)'
+  $ base 'desc(A)'
+  $ pick 'desc(D)'
+  $ hg histedit 'desc(B)' --commands $PLAN 2>&1 | fixbundle
 
   $ hg tglog
   @  6:d7a6f907a822c4ce6f15662ae45a42aa46d3818a:draft 'D'
@@ -139,11 +139,11 @@ 
   |/
   o  0:cd010b8cd998f3981a5a8115f94f8da4ab506089:draft 'A'
   
-  $ hg histedit 6 --commands - 2>&1 << EOF | fixbundle
-  > base d273e35dcdf2 B
-  > drop d7a6f907a822 D
-  > pick 591369deedfd X
-  > EOF
+  $ plan
+  $ base 'desc(B)'
+  $ drop 'desc(D)'
+  $ pick 'desc(X)'
+  $ hg histedit 'desc(D)' --commands $PLAN 2>&1 | fixbundle
   merging B
   warning: conflicts while merging B! (edit, then use 'hg resolve --mark')
   Fix up the change (pick 591369deedfd)
@@ -168,11 +168,11 @@ 
   o  0:cd010b8cd998f3981a5a8115f94f8da4ab506089:draft 'A'
   
 Continue
-  $ hg histedit 6 --commands - 2>&1 << EOF | fixbundle
-  > base d273e35dcdf2 B
-  > drop d7a6f907a822 D
-  > pick 591369deedfd X
-  > EOF
+  $ plan
+  $ base 'desc(B)'
+  $ drop 'desc(D)'
+  $ pick 'desc(X)'
+  $ hg histedit 'desc(D)' --commands $PLAN 2>&1 | fixbundle
   merging B
   warning: conflicts while merging B! (edit, then use 'hg resolve --mark')
   Fix up the change (pick 591369deedfd)
@@ -224,24 +224,24 @@ 
   |/
   o  0:cd010b8cd998f3981a5a8115f94f8da4ab506089:draft 'A'
   
-  $ hg histedit 5 --commands - 2>&1 << EOF | fixbundle
-  > pick d273e35dcdf2 B
-  > pick 03772da75548 X
-  > base d273e35dcdf2 B
-  > pick e8c55b19d366 J
-  > base d273e35dcdf2 B
-  > pick b2f90fd8aa85 I
-  > EOF
+  $ plan
+  $ pick 'desc(B)'
+  $ pick 'desc(X)'
+  $ base 'desc(B)'
+  $ pick 'desc(J)'
+  $ base 'desc(B)'
+  $ pick 'desc(I)'
+  $ hg histedit 'desc(B)' --commands $PLAN 2>&1 | fixbundle
   hg: parse error: base "d273e35dcdf2" changeset was not an edited list candidate
   (only use listed changesets)
 
-  $ hg --config experimental.histeditng=False histedit 5 --commands - 2>&1 << EOF | fixbundle
-  > base cd010b8cd998 A
-  > pick d273e35dcdf2 B
-  > pick 03772da75548 X
-  > pick b2f90fd8aa85 I
-  > pick e8c55b19d366 J
-  > EOF
+  $ plan
+  $ base 'desc(A)'
+  $ pick 'desc(B)'
+  $ pick 'desc(X)'
+  $ pick 'desc(I)'
+  $ pick 'desc(J)'
+  $ hg --config experimental.histeditng=False histedit 'desc(B)' --commands $PLAN 2>&1 | fixbundle
   hg: parse error: unknown action "base"
 
   $ hg tglog
diff --git a/tests/test-histedit-bookmark-motion.t b/tests/test-histedit-bookmark-motion.t
--- a/tests/test-histedit-bookmark-motion.t
+++ b/tests/test-histedit-bookmark-motion.t
@@ -78,13 +78,13 @@ 
   #  f, fold = use commit, but combine it with the one above
   #  r, roll = like fold, but discard this commit's description
   #
-  $ hg histedit 1 --commands - --verbose << EOF | grep histedit
-  > pick 177f92b77385 2 c
-  > drop d2ae7f538514 1 b
-  > pick 055a42cdd887 3 d
-  > fold e860deea161a 4 e
-  > pick 652413bf663e 5 f
-  > EOF
+  $ plan
+  $ pick 'desc(c)'
+  $ drop 'desc(b)'
+  $ pick 'desc(d)'
+  $ fold 'desc(e)'
+  $ pick 'desc(f)'
+  $ hg histedit 1 --commands $PLAN --verbose | grep histedit
   saved backup bundle to $TESTTMP/r/.hg/strip-backup/96e494a2d553-3c6c5d92-backup.hg (glob)
   histedit: moving bookmarks also-two from 177f92b77385 to b346ab9a313d
   histedit: moving bookmarks five from 652413bf663e to cacdfd884a93
@@ -139,11 +139,11 @@ 
   #  f, fold = use commit, but combine it with the one above
   #  r, roll = like fold, but discard this commit's description
   #
-  $ hg histedit 1 --commands - --verbose << EOF | grep histedit
-  > pick b346ab9a313d 1 c
-  > pick cacdfd884a93 3 f
-  > pick 59d9f330561f 2 d
-  > EOF
+  $ plan
+  $ pick 'desc(c)'
+  $ pick 'desc(f)'
+  $ pick 'desc(d)'
+  $ hg histedit 1 --commands $PLAN --verbose | grep histedit
   histedit: moving bookmarks five from cacdfd884a93 to c04e50810e4b
   histedit: moving bookmarks four from 59d9f330561f to c04e50810e4b
   histedit: moving bookmarks three from 59d9f330561f to c04e50810e4b
diff --git a/tests/test-histedit-commute.t b/tests/test-histedit-commute.t
--- a/tests/test-histedit-commute.t
+++ b/tests/test-histedit-commute.t
@@ -141,12 +141,12 @@ 
 
 put things back
 
-  $ hg histedit 177f92b77385 --commands - 2>&1 << EOF | fixbundle
-  > pick 177f92b77385 c
-  > pick 07114f51870f d
-  > pick d8249471110a e
-  > pick 8ade9693061e f
-  > EOF
+  $ plan
+  $ pick 'desc(c)'
+  $ pick 'desc(d)'
+  $ pick 'desc(e)'
+  $ pick 'desc(f)'
+  $ hg histedit 'desc(c)' --commands $PLAN 2>&1 | fixbundle
 
   $ hg log --graph
   @  changeset:   5:7eca9b5b1148
@@ -183,12 +183,12 @@ 
 
 slightly different this time
 
-  $ hg histedit 177f92b77385 --commands - << EOF 2>&1 | fixbundle
-  > pick 10517e47bbbb d
-  > pick 7eca9b5b1148 f
-  > pick 915da888f2de e
-  > pick 177f92b77385 c
-  > EOF
+  $ plan
+  $ pick 'desc(d)'
+  $ pick 'desc(f)'
+  $ pick 'desc(e)'
+  $ pick 'desc(c)'
+  $ hg histedit 'desc(c)' --commands $PLAN  2>&1 | fixbundle
   $ hg log --graph
   @  changeset:   5:38b92f448761
   |  tag:         tip
@@ -223,12 +223,12 @@ 
   
 
 keep prevents stripping dead revs
-  $ hg histedit 799205341b6b --keep --commands - 2>&1 << EOF | fixbundle
-  > pick 799205341b6b d
-  > pick be9ae3a309c6 f
-  > pick 38b92f448761 c
-  > pick de71b079d9ce e
-  > EOF
+  $ plan
+  $ pick 'desc(d)'
+  $ pick 'desc(f)'
+  $ pick 'desc(c)'
+  $ pick 'desc(e)'
+  $ hg histedit 'desc(d)' --keep --commands $PLAN 2>&1 | fixbundle
   $ hg log --graph
   @  changeset:   7:803ef1c6fcfd
   |  tag:         tip
@@ -274,10 +274,10 @@ 
   
 
 try with --rev
-  $ hg histedit --commands - --rev -2 2>&1 <<EOF | fixbundle
-  > pick de71b079d9ce e
-  > pick 38b92f448761 c
-  > EOF
+  $ plan
+  $ pick 4
+  $ pick 5
+  $ hg histedit --commands $PLAN --rev -2 2>&1 | fixbundle
   hg: parse error: pick "de71b079d9ce" changeset was not a candidate
   (only use listed changesets)
   $ hg log --graph
diff --git a/tests/test-histedit-drop.t b/tests/test-histedit-drop.t
--- a/tests/test-histedit-drop.t
+++ b/tests/test-histedit-drop.t
@@ -53,12 +53,12 @@ 
   
 
 edit the history
-  $ hg histedit 177f92b77385 --commands - 2>&1 << EOF | fixbundle
-  > drop 177f92b77385 c
-  > pick e860deea161a e
-  > pick 652413bf663e f
-  > pick 055a42cdd887 d
-  > EOF
+  $ plan
+  $ drop 'desc(c)'
+  $ pick 'desc(e)'
+  $ pick 'desc(f)'
+  $ pick 'desc(d)'
+  $ hg histedit -r 2 --commands $PLAN 2>&1 | fixbundle
 
 log after edit
   $ hg log --graph
@@ -118,11 +118,11 @@ 
 
 Drop the last changeset
 
-  $ hg histedit ee283cb5f2d5 --commands - 2>&1 << EOF | fixbundle
-  > pick ee283cb5f2d5 e
-  > pick a4f7421b80f7 f
-  > drop f518305ce889 d
-  > EOF
+  $ plan
+  $ pick 'desc(e)'
+  $ pick 'desc(f)'
+  $ drop 'desc(d)'
+  $ hg histedit -r 2 --commands $PLAN 2>&1 | fixbundle
   $ hg log --graph
   @  changeset:   3:a4f7421b80f7
   |  tag:         tip
@@ -146,16 +146,16 @@ 
      summary:     a
   
 
-  $ hg histedit cb9a9f314b8b --commands - 2>&1 << EOF | fixbundle
-  > pick cb9a9f314b8b a
-  > pick ee283cb5f2d5 e
-  > EOF
+  $ plan
+  $ pick 'desc(a)'
+  $ pick 'desc(e)'
+  $ hg histedit -r 0 --commands $PLAN 2>&1 | fixbundle
   hg: parse error: missing rules for changeset a4f7421b80f7
   (use "drop a4f7421b80f7" to discard, see also: "hg help -e histedit.config")
-  $ hg --config histedit.dropmissing=True histedit  cb9a9f314b8b --commands - 2>&1 << EOF | fixbundle
-  > pick cb9a9f314b8b a
-  > pick ee283cb5f2d5 e
-  > EOF
+  $ plan
+  $ pick 'desc(a)'
+  $ pick 'desc(e)'
+  $ hg --config histedit.dropmissing=True histedit -r 0 --commands $PLAN 2>&1 | fixbundle
   $ hg log --graph
   @  changeset:   1:e99c679bf03e
   |  tag:         tip
diff --git a/tests/test-histedit-edit.t b/tests/test-histedit-edit.t
--- a/tests/test-histedit-edit.t
+++ b/tests/test-histedit-edit.t
@@ -59,20 +59,20 @@ 
   
 dirty a file
   $ echo a > g
-  $ hg histedit 177f92b77385 --commands - 2>&1 << EOF
-  > EOF
+  $ plan
+  $ hg histedit 'desc(c)' --commands $PLAN 2>&1
   abort: uncommitted changes
   [255]
   $ echo g > g
 
 edit the history
-  $ hg histedit 177f92b77385 --commands - 2>&1 << EOF| fixbundle
-  > pick 177f92b77385 c
-  > pick 055a42cdd887 d
-  > edit e860deea161a e
-  > pick 652413bf663e f
-  > pick 3c6a8ed2ebe8 g
-  > EOF
+  $ plan
+  $ pick 'desc(c)'
+  $ pick 'desc(d)'
+  $ edit 'desc(e)'
+  $ pick 'desc(f)'
+  $ pick 'desc(g)'
+  $ hg histedit 'desc(c)' --commands $PLAN 2>&1 | fixbundle
   0 files updated, 0 files merged, 3 files removed, 0 files unresolved
   Editing (e860deea161a), you may commit or record as needed now.
   (hg histedit --continue to resume)
@@ -102,11 +102,11 @@ 
   strip-backup/177f92b77385-0ebe6a8f-histedit.hg
 
 edit the plan via --commands
-  $ hg histedit --edit-plan --commands - 2>&1 << EOF
-  > edit e860deea161a e
-  > pick 652413bf663e f
-  > drop 3c6a8ed2ebe8 g
-  > EOF
+  $ plan
+  $ edit 'desc(e)'
+  $ pick 'desc(f)'
+  $ drop 'desc(g)'
+  $ hg histedit --edit-plan --commands $PLAN 2>&1
   $ cat .hg/histedit-state
   v1
   055a42cdd88768532f9cf79daa407fc8d138de9b
@@ -192,11 +192,11 @@ 
 
 Stripping necessary commits should not break --abort
 
-  $ hg histedit 1a60820cd1f6 --commands - 2>&1 << EOF| fixbundle
-  > edit 1a60820cd1f6 wat
-  > pick a5e1ba2f7afb foobaz
-  > pick b5f70786f9b0 g
-  > EOF
+  $ plan
+  $ edit 'desc(wat)'
+  $ pick 'desc(foobaz)'
+  $ pick 'desc(f)'
+  $ hg histedit 'desc(wat)' --commands $PLAN 2>&1 | fixbundle
   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
   Editing (1a60820cd1f6), you may commit or record as needed now.
   (hg histedit --continue to resume)
@@ -236,9 +236,9 @@ 
   
   
 
-  $ hg histedit tip --commands - 2>&1 <<EOF| fixbundle
-  > edit b5f70786f9b0 f
-  > EOF
+  $ plan
+  $ edit tip
+  $ hg histedit tip --commands $PLAN 2>&1 | fixbundle
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   Editing (b5f70786f9b0), you may commit or record as needed now.
   (hg histedit --continue to resume)
@@ -323,9 +323,9 @@ 
 (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
+  $ plan
+  $ mess 'desc(f)'
+  $ HGEDITOR="sh $TESTTMP/editor.sh" hg histedit tip --commands $PLAN 2>&1 | fixbundle
   abort: emulating unexpected abort
   $ test -f .hg/last-message.txt
   [1]
@@ -349,9 +349,9 @@ 
   A f
 
   $ rm -f .hg/last-message.txt
-  $ HGEDITOR="sh $TESTTMP/editor.sh" hg histedit tip --commands - 2>&1 << EOF
-  > mess 1fd3b2fe7754 f
-  > EOF
+  $ plan
+  $ mess 'desc(f)'
+  $ HGEDITOR="sh $TESTTMP/editor.sh" hg histedit tip --commands $PLAN 2>&1
   ==== before editing
   f
   
@@ -401,9 +401,9 @@ 
 
 then, check "modify the message" itself
 
-  $ hg histedit tip --commands - 2>&1 << EOF | fixbundle
-  > mess 1fd3b2fe7754 f
-  > EOF
+  $ plan
+  $ mess 'desc(f)'
+  $ hg histedit tip --commands $PLAN 2>&1 | fixbundle
   $ hg status
   $ hg log --limit 1
   changeset:   6:62feedb1200e
@@ -422,9 +422,9 @@ 
   $ hg clone -qr0 r r0
   $ cd r0
   $ hg phase -fdr0
-  $ hg histedit --commands - 0 2>&1 << EOF
-  > edit cb9a9f314b8b a > $EDITED
-  > EOF
+  $ plan
+  > edit cb9a9f314b8b a
+  $ hg histedit --commands $PLAN 0 2>&1
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   adding a
   Editing (cb9a9f314b8b), you may commit or record as needed now.
diff --git a/tests/test-histedit-fold.t b/tests/test-histedit-fold.t
--- a/tests/test-histedit-fold.t
+++ b/tests/test-histedit-fold.t
@@ -48,12 +48,12 @@ 
   o  0:cb9a9f314b8b a
   
 
-  $ hg histedit 177f92b77385 --commands - 2>&1 <<EOF | fixbundle
-  > pick e860deea161a e
-  > pick 652413bf663e f
-  > fold 177f92b77385 c
-  > pick 055a42cdd887 d
-  > EOF
+  $ plan
+  $ pick 'desc(e)'
+  $ pick 'desc(f)'
+  $ fold 'desc(c)'
+  $ pick 'desc(d)'
+  $ hg histedit 'desc(c)' --commands $PLAN 2>&1 | fixbundle
 
 log after edit
   $ hg logt --graph
@@ -102,12 +102,12 @@ 
 
   $ OLDHGEDITOR=$HGEDITOR
   $ HGEDITOR=false
-  $ hg histedit d2ae7f538514 --commands - 2>&1 <<EOF | fixbundle
-  > pick d2ae7f538514 b
-  > roll ee283cb5f2d5 e
-  > pick 6de59d13424a f
-  > pick 9c277da72c9b d
-  > EOF
+  $ plan
+  $ pick 'desc(b)'
+  $ roll 'desc(e)'
+  $ pick 'desc(f)'
+  $ pick 'desc(d)'
+  $ hg histedit 'desc(b)' --commands $PLAN 2>&1 | fixbundle
 
   $ HGEDITOR=$OLDHGEDITOR
 
@@ -167,10 +167,10 @@ 
   A c
   A d
   A f
-  $ HGEDITOR="sh $TESTTMP/editor.sh" hg histedit 8e03a72b6f83 --commands - 2>&1 <<EOF
-  > pick 8e03a72b6f83 f
-  > fold c4a9eb7989fc d
-  > EOF
+  $ plan
+  $ pick 'desc(f)'
+  $ fold 'desc(d)'
+  $ HGEDITOR="sh $TESTTMP/editor.sh" hg histedit 'desc(f)' --commands $PLAN 2>&1
   allow non-folding commit
   ==== before editing
   f
@@ -225,12 +225,12 @@ 
   summary:     f
   
 
+  $ plan
+  $ pick 'desc(e)'
+  $ fold 'desc(f)'
   $ hg --config progress.debug=1 --debug \
-  > histedit e860deea161a --commands - 2>&1 <<EOF | \
+  > histedit 'desc(e)' --commands $PLAN 2>&1 | \
   > egrep 'editing|unresolved'
-  > pick e860deea161a e
-  > fold a00ad806cb55 f
-  > EOF
   editing: pick e860deea161a 4 e 1/2 changes (50.00%)
   editing: fold a00ad806cb55 5 f 2/2 changes (100.00%)
 
@@ -273,11 +273,11 @@ 
   o  0:0189ba417d34 1+2+3
   
 
-  $ hg histedit 1 --commands - << EOF
-  > pick 617f94f13c0f 1 +4
-  > drop 888f9082bf99 2 +5
-  > fold 251d831eeec5 3 +6
-  > EOF
+  $ plan
+  $ pick 'desc(4)'
+  $ drop 'desc(5)'
+  $ fold 'desc(6)'
+  $ hg histedit 'desc(4)' --commands $PLAN
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   merging file
   warning: conflicts while merging file! (edit, then use 'hg resolve --mark')
@@ -335,11 +335,11 @@ 
   |
   o  0:0189ba417d34 1+2+3
   
-  $ hg histedit 1 --commands -  << EOF
-  > pick 617f94f13c0f 1 +4
-  > drop 888f9082bf99 2 +5
-  > fold 251d831eeec5 3 +6
-  > EOF
+  $ plan
+  $ pick 'desc(4)'
+  $ drop 'desc(5)'
+  $ fold 'desc(6)'
+  $ hg histedit 'desc(4)' --commands $PLAN
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   merging file
   warning: conflicts while merging file! (edit, then use 'hg resolve --mark')
@@ -425,10 +425,10 @@ 
   1:1c4f440a8085 rename
   0:6c795aa153cb a
 
-  $ hg histedit 1c4f440a8085 --commands - 2>&1 << EOF | fixbundle
-  > pick 1c4f440a8085 rename
-  > fold e0371e0426bc b
-  > EOF
+  $ plan
+  $ pick 'desc(rename)'
+  $ fold 'desc(b)'
+  $ hg histedit 'desc(rename)' --commands $PLAN 2>&1 | fixbundle
 
   $ hg logt --follow b.txt
   1:cf858d235c76 rename
@@ -466,11 +466,11 @@ 
 #else
   $ NODE="\$HG_NODE"
 #endif
-  $ hg histedit 6c795aa153cb --config hooks.commit="echo commit $NODE" --commands - 2>&1 << EOF | fixbundle
-  > pick 199b6bb90248 b
-  > fold a1a953ffb4b0 c
-  > pick 6c795aa153cb a
-  > EOF
+  $ plan
+  $ pick 'desc(b)'
+  $ fold 'desc(c)'
+  $ pick 'desc(a)'
+  $ hg histedit 'desc(a)' --config hooks.commit="echo commit $NODE" --commands $PLAN 2>&1 | fixbundle
   commit 9599899f62c05f4377548c32bf1c9f1a39634b0c
 
   $ hg logt
@@ -503,12 +503,12 @@ 
   > echo END >> "$TESTTMP/editorlog.txt"
   > echo merged foos > \$1
   > EOF
-  $ HGEDITOR="sh \"$TESTTMP/editor.sh\"" hg histedit 1 --commands - 2>&1 <<EOF | fixbundle
-  > pick 578c7455730c 1 a
-  > pick 0e01aeef5fa8 2 foo1
-  > fold b7389cc4d66e 3 foo2
-  > fold 21679ff7675c 4 foo3
-  > EOF
+  $ plan
+  $ pick 'desc(a)'
+  $ pick 'desc(foo1)'
+  $ fold 'desc(foo2)'
+  $ fold 'desc(foo3)'
+  $ HGEDITOR="sh \"$TESTTMP/editor.sh\"" hg histedit 'desc(a)' --commands $PLAN 2>&1 | fixbundle
   $ hg logt
   2:e8bedbda72c1 merged foos
   1:578c7455730c a
diff --git a/tests/test-histedit-non-commute-abort.t b/tests/test-histedit-non-commute-abort.t
--- a/tests/test-histedit-non-commute-abort.t
+++ b/tests/test-histedit-non-commute-abort.t
@@ -62,13 +62,13 @@ 
   
 
 edit the history
-  $ hg histedit 177f92b77385 --commands - 2>&1 <<EOF | fixbundle
-  > pick 177f92b77385 c
-  > pick 055a42cdd887 d
-  > pick bfa474341cc9 does not commute with e
-  > pick e860deea161a e
-  > pick 652413bf663e f
-  > EOF
+  $ plan
+  $ pick 'desc(c)-desc(does)'
+  $ pick 'desc(d)-desc(does)'
+  $ pick 'desc(does)'
+  $ pick 'desc(e)-desc(does)'
+  $ pick 'desc(f)'
+  $ hg histedit 'desc(c)-desc(does)' --commands $PLAN 2>&1  | fixbundle
   merging e
   warning: conflicts while merging e! (edit, then use 'hg resolve --mark')
   Fix up the change (pick e860deea161a)
diff --git a/tests/test-histedit-obsolete.t b/tests/test-histedit-obsolete.t
--- a/tests/test-histedit-obsolete.t
+++ b/tests/test-histedit-obsolete.t
@@ -29,17 +29,17 @@ 
   $ echo a > d
   $ hg ci -Am c
   adding d
-  $ echo "pick `hg log -r 0 -T '{node|short}'`" > plan
-  $ echo "pick `hg log -r 2 -T '{node|short}'`" >> plan
-  $ echo "edit `hg log -r 1 -T '{node|short}'`" >> plan
-  $ hg histedit -r 'all()' --commands plan
+  $ plan
+  $ pick 'desc(a)'
+  $ pick 'desc(c)'
+  $ edit 'desc(b)'
+  $ hg histedit -r 'all()' --commands $PLAN
   Editing (1b2d564fad96), you may commit or record as needed now.
   (hg histedit --continue to resume)
   [1]
   $ hg st
   A b
   A c
-  ? plan
   $ hg commit --amend b
   $ hg histedit --continue
   $ hg log -G
@@ -102,13 +102,13 @@ 
   #  f, fold = use commit, but combine it with the one above
   #  r, roll = like fold, but discard this commit's description
   #
-  $ hg histedit 1 --commands - --verbose <<EOF | grep histedit
-  > pick 177f92b77385 2 c
-  > drop d2ae7f538514 1 b
-  > pick 055a42cdd887 3 d
-  > fold e860deea161a 4 e
-  > pick 652413bf663e 5 f
-  > EOF
+  $ plan
+  $ pick 'desc(c)'
+  $ drop 'desc(b)'
+  $ pick 'desc(d)'
+  $ fold 'desc(e)'
+  $ pick 'desc(f)'
+  $ hg histedit 'desc(b)' --commands $PLAN --verbose|grep histedit
   [1]
   $ hg log --graph --hidden
   @  10:cacdfd884a93 f
@@ -148,11 +148,11 @@ 
 
 create an hidden revision
 
-  $ hg histedit 6 --commands - << EOF
-  > pick b346ab9a313d 6 c
-  > drop 59d9f330561f 7 d
-  > pick cacdfd884a93 8 f
-  > EOF
+  $ plan
+  $ pick 'desc(c)'
+  $ drop 'desc(d)'
+  $ pick 'desc(f)'
+  $ hg histedit 'desc(c)' --commands $PLAN
   $ hg log --graph
   @  11:c13eb81022ca f
   |
@@ -162,10 +162,10 @@ 
   
 check hidden revision are ignored (6 have hidden children 7 and 8)
 
-  $ hg histedit 6 --commands - << EOF
-  > pick b346ab9a313d 6 c
-  > pick c13eb81022ca 8 f
-  > EOF
+  $ plan
+  $ pick 'desc(c)'
+  $ pick 'desc(f)'
+  $ hg histedit 'desc(c)' --commands $PLAN
 
 
 
@@ -176,9 +176,9 @@ 
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   $ hg log -r 'children(.)'
   11:c13eb81022ca f (no-eol)
-  $ hg histedit -r '.' --commands - <<EOF
-  > edit b346ab9a313d 6 c
-  > EOF
+  $ plan
+  $ edit 'desc(c)'
+  $ hg histedit -r '.' --commands $PLAN
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   adding c
   Editing (b346ab9a313d), you may commit or record as needed now.
@@ -207,10 +207,10 @@ 
   updating to branch default
   3 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ cd droplast
-  $ hg histedit -r '40db8afa467b' --commands - << EOF
-  > pick 40db8afa467b 10 c
-  > drop b449568bf7fc 11 f
-  > EOF
+  $ plan
+  $ pick 'desc(c)'
+  $ drop 'desc(f)'
+  $ hg histedit 'desc(c)' --commands $PLAN
   $ hg log -G
   @  12:40db8afa467b c
   |
@@ -225,11 +225,11 @@ 
   $ echo f > f
   $ hg add f
   $ hg commit -m h
-  $ hg histedit -r '40db8afa467b' --commands - << EOF
-  > pick 47a8561c0449 12 g
-  > pick 40db8afa467b 10 c
-  > drop 1b3b05f35ff0 13 h
-  > EOF
+  $ plan
+  $ pick 'desc(g)'
+  $ pick 'desc(c)'
+  $ drop 'desc(h)'
+  $ hg histedit -r 'desc(c)' --commands $PLAN
   $ hg log -G
   @  17:ee6544123ab8 c
   |
@@ -305,14 +305,14 @@ 
 
   $ cp -r base simple-draft
   $ cd simple-draft
-  $ hg histedit -r 'b449568bf7fc' --commands - << EOF
-  > edit b449568bf7fc 11 f
-  > pick 6b70183d2492 12 g
-  > pick 7395e1ff83bd 13 h
-  > pick b605fb7503f2 14 i
-  > pick 3a6c53ee7f3d 15 j
-  > pick ee118ab9fa44 16 k
-  > EOF
+  $ plan
+  $ edit 'desc(f)'
+  $ pick 'desc(g)'
+  $ pick 'desc(h)'
+  $ pick 'desc(i)'
+  $ pick 'desc(j)'
+  $ pick 'desc(k)'
+  $ hg histedit -r 'desc(f)' --commands $PLAN
   0 files updated, 0 files merged, 6 files removed, 0 files unresolved
   adding f
   Editing (b449568bf7fc), you may commit or record as needed now.
@@ -348,14 +348,14 @@ 
   > [phases]
   > new-commit=secret
   > EOF
-  $ hg histedit -r 'b449568bf7fc' --commands - << EOF
-  > edit b449568bf7fc 11 f
-  > pick 6b70183d2492 12 g
-  > pick 7395e1ff83bd 13 h
-  > pick b605fb7503f2 14 i
-  > pick 3a6c53ee7f3d 15 j
-  > pick ee118ab9fa44 16 k
-  > EOF
+  $ plan
+  $ edit 'desc(f)'
+  $ pick 'desc(g)'
+  $ pick 'desc(h)'
+  $ pick 'desc(i)'
+  $ pick 'desc(j)'
+  $ pick 'desc(k)'
+  $ hg histedit -r 'desc(f)' --commands $PLAN
   0 files updated, 0 files merged, 6 files removed, 0 files unresolved
   adding f
   Editing (b449568bf7fc), you may commit or record as needed now.
@@ -391,14 +391,14 @@ 
 
   $ cp -r base reorder
   $ cd reorder
-  $ hg histedit -r 'b449568bf7fc' --commands - << EOF
-  > pick b449568bf7fc 11 f
-  > pick 3a6c53ee7f3d 15 j
-  > pick 6b70183d2492 12 g
-  > pick b605fb7503f2 14 i
-  > pick 7395e1ff83bd 13 h
-  > pick ee118ab9fa44 16 k
-  > EOF
+  $ plan
+  $ pick 'desc(f)'
+  $ pick 'desc(j)'
+  $ pick 'desc(g)'
+  $ pick 'desc(i)'
+  $ pick 'desc(h)'
+  $ pick 'desc(k)'
+  $ hg histedit -r 'desc(f)' --commands $PLAN
   $ hg log -G
   @  23:558246857888 (secret) k
   |
@@ -432,14 +432,14 @@ 
   > [phases]
   > new-commit=secret
   > EOF
-  $ hg histedit -r 'b449568bf7fc' --commands - << EOF
-  > pick 7395e1ff83bd 13 h
-  > fold b449568bf7fc 11 f
-  > pick 6b70183d2492 12 g
-  > fold 3a6c53ee7f3d 15 j
-  > pick b605fb7503f2 14 i
-  > fold ee118ab9fa44 16 k
-  > EOF
+  $ plan
+  $ pick 'desc(h)'
+  $ fold 'desc(f)'
+  $ pick 'desc(g)'
+  $ fold 'desc(j)'
+  $ pick 'desc(i)'
+  $ fold 'desc(k)'
+  $ hg histedit -r 'desc(f)' --commands $PLAN
   $ hg log -G
   @  27:f9daec13fb98 (secret) i
   |
@@ -451,19 +451,19 @@ 
   |
   o  0:cb9a9f314b8b (public) a
   
-  $ hg co 49807617f46a
+  $ hg co 'desc(g)'
   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
   $ echo wat >> wat
   $ hg add wat
   $ hg ci -m 'add wat'
   created new head
-  $ hg merge f9daec13fb98
+  $ hg merge 'desc(i)'
   2 files updated, 0 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
   $ hg ci -m 'merge'
   $ echo not wat > wat
   $ hg ci -m 'modify wat'
-  $ hg histedit 050280826e04
+  $ hg histedit 'desc(h)'
   abort: cannot edit history that contains merges
   [255]
   $ cd ..
diff --git a/tests/test-keyword.t b/tests/test-keyword.t
--- a/tests/test-keyword.t
+++ b/tests/test-keyword.t
@@ -1,3 +1,5 @@ 
+  $ . "$TESTDIR/histedit-helpers.sh"
+
   $ cat <<EOF >> $HGRCPATH
   > [extensions]
   > keyword =
@@ -1307,10 +1309,10 @@ 
   > EOF
 
   $ hg commit -m 'backout #11'
-  $ hg histedit -q --command - 13 <<EOF
-  > pick 49f5f2d940c3 14 backout #11
-  > pick 01a68de1003a 13 9foobranch
-  > EOF
+  $ plan
+  $ pick 'desc(backout)'
+  $ pick 'desc(backout)^'
+  $ hg histedit -q --command $PLAN 'desc(backout)^'
 
 Test restricted mode with fetch (with merge)