Mercurial > hg
diff tests/test-histedit-no-change.t @ 17085:35729bdd59b6
tests: convert histedit tests to .t
Mostly a trivial conversion.
author | Mads Kiilerich <mads@kiilerich.com> |
---|---|
date | Sat, 30 Jun 2012 03:34:44 +0200 |
parents | tests/test-histedit-no-change@168cc52ad7c2 |
children | 5f2cacb715dc |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-histedit-no-change.t Sat Jun 30 03:34:44 2012 +0200 @@ -0,0 +1,189 @@ +test for old histedit issue #6: +editing a changeset without any actual change would corrupt the repository + + $ . "$TESTDIR/histedit-helpers.sh" + + $ cat >> $HGRCPATH <<EOF + > [extensions] + > graphlog= + > histedit= + > EOF + + $ initrepo () + > { + > dir="$1" + > comment="$2" + > if [ -n "${comment}" ]; then + > echo % ${comment} + > echo % ${comment} | sed 's:.:-:g' + > fi + > hg init ${dir} + > cd ${dir} + > for x in a b c d e f ; do + > echo $x > $x + > hg add $x + > hg ci -m $x + > done + > cd .. + > } + + $ geneditor () + > { + > # generate an editor script for selecting changesets to be edited + > choice=$1 # changesets that should be edited (using sed line ranges) + > cat <<EOF | sed 's:^....::' + > #!/bin/sh + > # editing the rules, replacing 'pick' with 'edit' for the chosen lines + > sed '${choice}s:^pick:edit:' \$1 > \${1}.tmp + > mv \${1}.tmp \$1 + > # displaying the resulting rules, minus comments and empty lines + > sed '/^#/d;/^$/d;s:^:| :' \$1 >&2 + > EOF + > } + + $ startediting () + > { + > # begin an editing session + > choice="$1" # changesets that should be edited + > number="$2" # number of changesets considered (from tip) + > comment="$3" + > geneditor "${choice}" > edit.sh + > chmod +x edit.sh + > echo % start editing the history ${comment} + > HGEDITOR=./edit.sh hg histedit -- -${number} 2>&1 | fixbundle + > } + + $ continueediting () + > { + > # continue an edit already in progress + > editor="$1" # message editor when finalizing editing + > comment="$2" + > echo % finalize changeset editing ${comment} + > HGEDITOR=${editor} hg histedit --continue 2>&1 | fixbundle + > } + + $ graphlog () + > { + > comment="${1:-log}" + > echo % "${comment}" + > hg glog --template '{rev} {node} \"{desc|firstline}\"\n' + > } + + + $ initrepo r1 "test editing with no change" + % test editing with no change + ----------------------------- + $ cd r1 + $ graphlog "log before editing" + % log before editing + @ 5 652413bf663ef2a641cab26574e46d5f5a64a55a "f" + | + o 4 e860deea161a2f77de56603b340ebbb4536308ae "e" + | + o 3 055a42cdd88768532f9cf79daa407fc8d138de9b "d" + | + o 2 177f92b773850b59254aa5e923436f921b55483b "c" + | + o 1 d2ae7f538514cd87c17547b0de4cea71fe1af9fb "b" + | + o 0 cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b "a" + + $ startediting 2 3 "(not changing anything)" # edit the 2nd of 3 changesets + % start editing the history (not changing anything) + | pick 055a42cdd887 3 d + | edit e860deea161a 4 e + | pick 652413bf663e 5 f + 0 files updated, 0 files merged, 2 files removed, 0 files unresolved + abort: Make changes as needed, you may commit or record as needed now. + When you are finished, run hg histedit --continue to resume. + $ continueediting true "(leaving commit message unaltered)" + % finalize changeset editing (leaving commit message unaltered) + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + +check state of working copy + $ hg id + 652413bf663e tip + + $ graphlog "log after history editing" + % log after history editing + @ 5 652413bf663ef2a641cab26574e46d5f5a64a55a "f" + | + o 4 e860deea161a2f77de56603b340ebbb4536308ae "e" + | + o 3 055a42cdd88768532f9cf79daa407fc8d138de9b "d" + | + o 2 177f92b773850b59254aa5e923436f921b55483b "c" + | + o 1 d2ae7f538514cd87c17547b0de4cea71fe1af9fb "b" + | + o 0 cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b "a" + + + $ cd .. + + $ initrepo r2 "test editing with no change, then abort" + % test editing with no change, then abort + ----------------------------------------- + $ cd r2 + $ graphlog "log before editing" + % log before editing + @ 5 652413bf663ef2a641cab26574e46d5f5a64a55a "f" + | + o 4 e860deea161a2f77de56603b340ebbb4536308ae "e" + | + o 3 055a42cdd88768532f9cf79daa407fc8d138de9b "d" + | + o 2 177f92b773850b59254aa5e923436f921b55483b "c" + | + o 1 d2ae7f538514cd87c17547b0de4cea71fe1af9fb "b" + | + o 0 cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b "a" + + $ startediting 1,2 3 "(not changing anything)" # edit the 1st two of 3 changesets + % start editing the history (not changing anything) + | edit 055a42cdd887 3 d + | edit e860deea161a 4 e + | pick 652413bf663e 5 f + 0 files updated, 0 files merged, 3 files removed, 0 files unresolved + abort: Make changes as needed, you may commit or record as needed now. + When you are finished, run hg histedit --continue to resume. + $ continueediting true "(leaving commit message unaltered)" + % finalize changeset editing (leaving commit message unaltered) + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved + abort: Make changes as needed, you may commit or record as needed now. + When you are finished, run hg histedit --continue to resume. + $ graphlog "log after first edit" + % log after first edit + o 5 652413bf663ef2a641cab26574e46d5f5a64a55a "f" + | + o 4 e860deea161a2f77de56603b340ebbb4536308ae "e" + | + @ 3 055a42cdd88768532f9cf79daa407fc8d138de9b "d" + | + o 2 177f92b773850b59254aa5e923436f921b55483b "c" + | + o 1 d2ae7f538514cd87c17547b0de4cea71fe1af9fb "b" + | + o 0 cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b "a" + + +abort editing session + $ hg histedit --abort 2>&1 | fixbundle + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + + $ graphlog "log after abort" + % log after abort + @ 5 652413bf663ef2a641cab26574e46d5f5a64a55a "f" + | + o 4 e860deea161a2f77de56603b340ebbb4536308ae "e" + | + o 3 055a42cdd88768532f9cf79daa407fc8d138de9b "d" + | + o 2 177f92b773850b59254aa5e923436f921b55483b "c" + | + o 1 d2ae7f538514cd87c17547b0de4cea71fe1af9fb "b" + | + o 0 cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b "a" + + + $ cd ..