[PATCH 2 of 2] mq: add tests for new 'qfreeze' command

FUJIWARA Katsunori fujiwara at ascade.co.jp
Sun Jun 7 09:53:56 CDT 2009


# HG changeset patch
# User FUJIWARA Katsunori <foozy at lares.dti.ne.jp>
# Date 1244385704 -32400
# Node ID 037e330b2ced202a5ecb609092ed20424250768e
# Parent  aa1e42bdd066b17e5e84f1787c310ba96f3abdef
mq: add tests for new 'qfreeze' command

diff --git a/tests/test-mq-qfreeze b/tests/test-mq-qfreeze
new file mode 100755
--- /dev/null
+++ b/tests/test-mq-qfreeze
@@ -0,0 +1,161 @@
+#!/bin/sh
+
+cat <<EOF >> $HGRCPATH
+[defaults]
+qnew = -d "0 0"
+qrefresh =  -d "0 0"
+[extensions]
+mq=
+EOF
+
+echo % init
+hg init a
+cd a
+
+echo % base revision
+cat <<EOF > file
+first line
+second line
+third line
+EOF
+hg ci -A -m base -d '1 0'
+
+echo % create previous patch
+hg qnew -m mqprev mqprev
+cat <<EOF > file
+patched line
+second line
+third line
+EOF
+hg qrefresh
+
+echo % check mqprev
+hg qdiff | sed -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/" \
+               -e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/"
+
+echo % create frozen target patch
+hg qnew -m mqfrozen mqfrozen
+cat <<EOF > file
+patched line
+frozen line
+third line
+EOF
+hg qrefresh
+
+echo % check mqfrozen
+hg qdiff | sed -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/" \
+               -e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/"
+
+echo % create next patch
+hg qnew -m mqnext mqnext
+cat <<EOF > file
+patched line
+frozen line
+patched line
+EOF
+hg qrefresh
+
+echo % check mqnext
+hg qdiff | sed -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/" \
+               -e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/"
+
+echo % check applied patches
+hg qseries
+
+####################
+
+echo % check freezing management: all applied
+echo %% check --series
+hg qfreeze --series
+hg qfreeze --list
+hg qfreeze --series --release
+hg qfreeze --list
+echo %% check --applied
+hg qfreeze --applied
+hg qfreeze --list
+hg qfreeze --applied --release
+hg qfreeze --list
+echo %% check --unapplied
+hg qfreeze --unapplied
+hg qfreeze --list
+hg qfreeze --unapplied --release
+hg qfreeze --list
+
+echo % check freezing management: partialy applied
+hg qpop
+hg qapplied
+echo %% check --series
+hg qfreeze --series
+hg qfreeze --list
+hg qfreeze --series --release
+hg qfreeze --list
+echo %% check --applied
+hg qfreeze --applied
+hg qfreeze --list
+hg qfreeze --applied --release
+hg qfreeze --list
+echo %% check --unapplied
+hg qfreeze --unapplied
+hg qfreeze --list
+hg qfreeze --unapplied --release
+hg qfreeze --list
+
+echo % check freezing management: none applied
+hg qpop -a
+hg qapplied
+echo %% check --series
+hg qfreeze --series
+hg qfreeze --list
+hg qfreeze --series --release
+hg qfreeze --list
+echo %% check --applied
+hg qfreeze --applied
+hg qfreeze --list
+hg qfreeze --applied --release
+hg qfreeze --list
+echo %% check --unapplied
+hg qfreeze --unapplied
+hg qfreeze --list
+hg qfreeze --unapplied --release
+hg qfreeze --list
+
+echo % check freezing management: partialy release
+hg qpush mqfrozen
+hg qapplied
+echo %% freeze by 'series'
+hg qfreeze --series
+hg qfreeze --list
+echo %% check --applied
+hg qfreeze --applied --release
+hg qfreeze --list
+echo %% check --unapplied
+hg qfreeze --unapplied --release
+hg qfreeze --list
+
+echo % check freezing management: over-release
+echo %% freeze by 'applied'
+hg qfreeze --applied
+hg qfreeze --list
+echo %% release by 'series'
+hg qfreeze --series --release
+hg qfreeze --list
+echo %% freeze by 'unapplied'
+hg qfreeze --unapplied
+hg qfreeze --list
+echo %% release by 'series'
+hg qfreeze --series --release
+hg qfreeze --list
+
+echo % check freezing management: specific name
+echo %% freeze by name
+hg qfreeze mqfrozen
+hg qfreeze --list
+echo %% freeze by name, again
+hg qfreeze mqfrozen
+hg qfreeze --list
+echo %% release by name
+hg qfreeze --release mqfrozen
+hg qfreeze --list
+echo %% release by name, again
+hg qfreeze --release mqfrozen
+hg qfreeze --list
diff --git a/tests/test-mq-qfreeze-qdelete b/tests/test-mq-qfreeze-qdelete
new file mode 100755
--- /dev/null
+++ b/tests/test-mq-qfreeze-qdelete
@@ -0,0 +1,83 @@
+#!/bin/sh
+
+cat <<EOF >> $HGRCPATH
+[defaults]
+qnew = -d "0 0"
+qrefresh =  -d "0 0"
+[extensions]
+mq=
+EOF
+
+echo % init
+hg init a
+cd a
+
+echo % base revision
+cat <<EOF > file
+first line
+second line
+third line
+EOF
+hg ci -A -m base -d '1 0'
+
+echo % create previous patch
+hg qnew -m mqprev mqprev
+cat <<EOF > file
+patched line
+second line
+third line
+EOF
+hg qrefresh
+
+echo % check mqprev
+hg qdiff | sed -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/" \
+               -e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/"
+
+echo % create frozen target patch
+hg qnew -m mqfrozen mqfrozen
+cat <<EOF > file
+patched line
+frozen line
+third line
+EOF
+hg qrefresh
+
+echo % check mqfrozen
+hg qdiff | sed -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/" \
+               -e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/"
+
+echo % create next patch
+hg qnew -m mqnext mqnext
+cat <<EOF > file
+patched line
+frozen line
+patched line
+EOF
+hg qrefresh
+
+echo % check mqnext
+hg qdiff | sed -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/" \
+               -e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/"
+
+echo % pop applied patches
+hg qpop -a
+hg qseries
+
+####################
+
+echo % check qdelete on frozen patch
+hg qfreeze mqfrozen
+hg qfreeze --list
+hg qdelete mqfrozen
+hg qseries
+
+echo % check qdelete on un-frozen patches
+hg qdelete mqprev
+hg qdelete mqnext
+hg qseries
+
+echo % check qdelete on released patch
+hg qfreeze --release mqfrozen
+hg qfreeze --list
+hg qdelete mqfrozen
+hg qseries
diff --git a/tests/test-mq-qfreeze-qdelete.out b/tests/test-mq-qfreeze-qdelete.out
new file mode 100644
--- /dev/null
+++ b/tests/test-mq-qfreeze-qdelete.out
@@ -0,0 +1,47 @@
+% init
+% base revision
+adding file
+% create previous patch
+% check mqprev
+diff -r 52f8d865ad77 file
+--- a/file
++++ b/file
+@@ -1,3 +1,3 @@
+-first line
++patched line
+ second line
+ third line
+% create frozen target patch
+% check mqfrozen
+diff -r 159262f4d120 file
+--- a/file
++++ b/file
+@@ -1,3 +1,3 @@
+ patched line
+-second line
++frozen line
+ third line
+% create next patch
+% check mqnext
+diff -r 295d932021bf file
+--- a/file
++++ b/file
+@@ -1,3 +1,3 @@
+ patched line
+ frozen line
+-third line
++patched line
+% pop applied patches
+patch queue now empty
+mqprev
+mqfrozen
+mqnext
+% check qdelete on frozen patch
+mqfrozen
+abort: cannot delete frozen patch mqfrozen
+mqprev
+mqfrozen
+mqnext
+% check qdelete on un-frozen patches
+mqfrozen
+% check qdelete on released patch
diff --git a/tests/test-mq-qfreeze-qfinish b/tests/test-mq-qfreeze-qfinish
new file mode 100755
--- /dev/null
+++ b/tests/test-mq-qfreeze-qfinish
@@ -0,0 +1,92 @@
+#!/bin/sh
+
+cat <<EOF >> $HGRCPATH
+[defaults]
+qnew = -d "0 0"
+qrefresh =  -d "0 0"
+[extensions]
+mq=
+EOF
+
+echo % init
+hg init a
+cd a
+
+echo % base revision
+cat <<EOF > file
+first line
+second line
+third line
+EOF
+hg ci -A -m base -d '1 0'
+
+echo % create previous patch
+hg qnew -m mqprev mqprev
+cat <<EOF > file
+patched line
+second line
+third line
+EOF
+hg qrefresh
+
+echo % check mqprev
+hg qdiff | sed -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/" \
+               -e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/"
+
+echo % create frozen target patch
+hg qnew -m mqfrozen mqfrozen
+cat <<EOF > file
+patched line
+frozen line
+third line
+EOF
+hg qrefresh
+
+echo % check mqfrozen
+hg qdiff | sed -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/" \
+               -e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/"
+
+echo % create next patch
+hg qnew -m mqnext mqnext
+cat <<EOF > file
+patched line
+frozen line
+patched line
+EOF
+hg qrefresh
+
+echo % check mqnext
+hg qdiff | sed -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/" \
+               -e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/"
+
+echo % check mq status
+hg qapplied
+hg status -A
+
+####################
+
+echo % freeze target patch
+hg qfreeze mqfrozen
+hg qfreeze --list
+
+echo % check qfinish frozen patch
+hg qfinish --applied
+echo %% check mq status
+hg status -A
+echo %%% series
+hg qseries
+echo %%% applied
+hg qapplied
+
+echo % release frozen patch
+hg qfreeze --release mqfrozen
+hg qfreeze --list
+
+echo % check qfinish frozen patch
+hg qfinish --applied
+echo %% check mq status
+hg status -A
+echo %%% series
+hg qseries
+echo %%% applied
+hg qapplied
diff --git a/tests/test-mq-qfreeze-qfinish.out b/tests/test-mq-qfreeze-qfinish.out
new file mode 100644
--- /dev/null
+++ b/tests/test-mq-qfreeze-qfinish.out
@@ -0,0 +1,58 @@
+% init
+% base revision
+adding file
+% create previous patch
+% check mqprev
+diff -r 52f8d865ad77 file
+--- a/file
++++ b/file
+@@ -1,3 +1,3 @@
+-first line
++patched line
+ second line
+ third line
+% create frozen target patch
+% check mqfrozen
+diff -r 159262f4d120 file
+--- a/file
++++ b/file
+@@ -1,3 +1,3 @@
+ patched line
+-second line
++frozen line
+ third line
+% create next patch
+% check mqnext
+diff -r 295d932021bf file
+--- a/file
++++ b/file
+@@ -1,3 +1,3 @@
+ patched line
+ frozen line
+-third line
++patched line
+% check mq status
+mqprev
+mqfrozen
+mqnext
+C file
+% freeze target patch
+mqfrozen
+% check qfinish frozen patch
+abort: cannot finish frozen patch mqfrozen
+%% check mq status
+C file
+%%% series
+mqprev
+mqfrozen
+mqnext
+%%% applied
+mqprev
+mqfrozen
+mqnext
+% release frozen patch
+% check qfinish frozen patch
+%% check mq status
+C file
+%%% series
+%%% applied
diff --git a/tests/test-mq-qfreeze-qfold b/tests/test-mq-qfreeze-qfold
new file mode 100755
--- /dev/null
+++ b/tests/test-mq-qfreeze-qfold
@@ -0,0 +1,111 @@
+#!/bin/sh
+
+cat <<EOF >> $HGRCPATH
+[defaults]
+qnew = -d "0 0"
+qrefresh =  -d "0 0"
+[extensions]
+mq=
+EOF
+
+echo % init
+hg init a
+cd a
+
+echo % base revision
+cat <<EOF > file
+first line
+second line
+third line
+EOF
+hg ci -A -m base -d '1 0'
+
+echo % create previous patch
+hg qnew -m mqprev mqprev
+cat <<EOF > file
+patched line
+second line
+third line
+EOF
+hg qrefresh
+
+echo % check mqprev
+hg qdiff | sed -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/" \
+               -e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/"
+
+echo % create frozen target patch
+hg qnew -m mqfrozen mqfrozen
+cat <<EOF > file
+patched line
+frozen line
+third line
+EOF
+hg qrefresh
+
+echo % check mqfrozen
+hg qdiff | sed -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/" \
+               -e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/"
+
+echo % create next patch
+hg qnew -m mqnext mqnext
+cat <<EOF > file
+patched line
+frozen line
+patched line
+EOF
+hg qrefresh
+
+echo % check mqnext
+hg qdiff | sed -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/" \
+               -e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/"
+
+hg qpop mqfrozen
+hg qapplied
+
+####################
+
+echo % freeze target patch
+hg qfreeze mqfrozen
+hg qfreeze --list
+
+echo % check qfold into frozen patch
+hg qfold mqnext
+echo %% check mq status
+hg qseries
+echo %% check mqfrozen
+hg qdiff | sed -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/" \
+               -e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/"
+
+echo % check qfold with frozen patch
+hg qpop mqprev
+hg qapplied
+hg qfold mqfrozen
+echo %% check mq status
+hg qseries
+echo %% check mqprev
+hg qdiff | sed -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/" \
+               -e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/"
+echo %% check mqfrozen
+hg qpush mqfrozen
+hg qdiff | sed -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/" \
+               -e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/"
+
+echo % release frozen patch
+hg qfreeze --release mqfrozen
+hg qfreeze --list
+
+echo % check qfold into released patch
+hg qapplied
+hg qfold mqnext
+echo %% check mq status
+hg qseries
+hg qdiff | sed -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/" \
+               -e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/"
+
+echo % check qfold with released patch
+hg qpop mqprev
+hg qfold mqfrozen
+echo %% check mq status
+hg qseries
+hg qdiff | sed -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/" \
+               -e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/"
diff --git a/tests/test-mq-qfreeze-qfold.out b/tests/test-mq-qfreeze-qfold.out
new file mode 100644
--- /dev/null
+++ b/tests/test-mq-qfreeze-qfold.out
@@ -0,0 +1,111 @@
+% init
+% base revision
+adding file
+% create previous patch
+% check mqprev
+diff -r 52f8d865ad77 file
+--- a/file
++++ b/file
+@@ -1,3 +1,3 @@
+-first line
++patched line
+ second line
+ third line
+% create frozen target patch
+% check mqfrozen
+diff -r 159262f4d120 file
+--- a/file
++++ b/file
+@@ -1,3 +1,3 @@
+ patched line
+-second line
++frozen line
+ third line
+% create next patch
+% check mqnext
+diff -r 295d932021bf file
+--- a/file
++++ b/file
+@@ -1,3 +1,3 @@
+ patched line
+ frozen line
+-third line
++patched line
+now at: mqfrozen
+mqprev
+mqfrozen
+% freeze target patch
+mqfrozen
+% check qfold into frozen patch
+abort: cannot fold into frozen patch: mqfrozen
+%% check mq status
+mqprev
+mqfrozen
+mqnext
+%% check mqfrozen
+diff -r 159262f4d120 file
+--- a/file
++++ b/file
+@@ -1,3 +1,3 @@
+ patched line
+-second line
++frozen line
+ third line
+% check qfold with frozen patch
+now at: mqprev
+mqprev
+abort: cannot fold with frozen patch: mqfrozen
+%% check mq status
+mqprev
+mqfrozen
+mqnext
+%% check mqprev
+diff -r 52f8d865ad77 file
+--- a/file
++++ b/file
+@@ -1,3 +1,3 @@
+-first line
++patched line
+ second line
+ third line
+%% check mqfrozen
+applying mqfrozen
+now at: mqfrozen
+diff -r 159262f4d120 file
+--- a/file
++++ b/file
+@@ -1,3 +1,3 @@
+ patched line
+-second line
++frozen line
+ third line
+% release frozen patch
+% check qfold into released patch
+mqprev
+mqfrozen
+%% check mq status
+mqprev
+mqfrozen
+diff -r 159262f4d120 file
+--- a/file
++++ b/file
+@@ -1,3 +1,3 @@
+ patched line
+-second line
+-third line
++frozen line
++patched line
+% check qfold with released patch
+now at: mqprev
+%% check mq status
+mqprev
+diff -r 52f8d865ad77 file
+--- a/file
++++ b/file
+@@ -1,3 +1,3 @@
+-first line
+-second line
+-third line
++patched line
++frozen line
++patched line
diff --git a/tests/test-mq-qfreeze-qrefresh b/tests/test-mq-qfreeze-qrefresh
new file mode 100755
--- /dev/null
+++ b/tests/test-mq-qfreeze-qrefresh
@@ -0,0 +1,115 @@
+#!/bin/sh
+
+cat <<EOF >> $HGRCPATH
+[defaults]
+qnew = -d "0 0"
+qrefresh =  -d "0 0"
+[extensions]
+mq=
+EOF
+
+echo % init
+hg init a
+cd a
+
+echo % base revision
+cat <<EOF > file
+first line
+second line
+third line
+EOF
+hg ci -A -m base -d '1 0'
+
+echo % create previous patch
+hg qnew -m mqprev mqprev
+cat <<EOF > file
+patched line
+second line
+third line
+EOF
+hg qrefresh
+
+echo % check mqprev
+hg qdiff | sed -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/" \
+               -e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/"
+
+echo % create frozen target patch
+hg qnew -m mqfrozen mqfrozen
+cat <<EOF > file
+patched line
+frozen line
+third line
+EOF
+hg qrefresh
+
+echo % check mqfrozen
+hg qdiff | sed -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/" \
+               -e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/"
+
+echo % create next patch
+hg qnew -m mqnext mqnext
+cat <<EOF > file
+patched line
+frozen line
+patched line
+EOF
+hg qrefresh
+
+echo % check mqnext
+hg qdiff | sed -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/" \
+               -e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/"
+
+echo % pop applied patches
+hg qpop -a
+hg qseries
+
+####################
+
+echo % check qrefresh on frozen patch
+hg qfreeze mqfrozen
+hg qfreeze --list
+hg qpush mqfrozen
+hg qtop
+cat <<EOF > file
+patched line
+frozen line, but modified
+third line
+EOF
+hg qrefresh
+echo %% check un-refreshed patch content
+hg status -A
+hg revert --no-backup file
+hg status -A
+hg qdiff | sed -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/" \
+               -e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/"
+
+echo % check qrefresh on un-frozen patch
+hg qfreeze --list
+hg qpush mqnext
+hg qtop
+cat <<EOF > file
+patched line
+frozen line
+patched line, and modified again
+EOF
+hg qrefresh
+echo %% check refreshed patch content
+hg status -A
+hg qdiff | sed -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/" \
+               -e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/"
+
+echo % check qrefresh on released patch
+hg qfreeze --release mqfrozen
+hg qfreeze --list
+hg qpop mqfrozen
+hg qtop
+cat <<EOF > file
+patched line
+frozen line, but modified after release
+third line
+EOF
+hg qrefresh
+echo %% check refreshed patch content
+hg status -A
+hg qdiff | sed -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/" \
+               -e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/"
diff --git a/tests/test-mq-qfreeze-qrefresh.out b/tests/test-mq-qfreeze-qrefresh.out
new file mode 100644
--- /dev/null
+++ b/tests/test-mq-qfreeze-qrefresh.out
@@ -0,0 +1,84 @@
+% init
+% base revision
+adding file
+% create previous patch
+% check mqprev
+diff -r 52f8d865ad77 file
+--- a/file
++++ b/file
+@@ -1,3 +1,3 @@
+-first line
++patched line
+ second line
+ third line
+% create frozen target patch
+% check mqfrozen
+diff -r 159262f4d120 file
+--- a/file
++++ b/file
+@@ -1,3 +1,3 @@
+ patched line
+-second line
++frozen line
+ third line
+% create next patch
+% check mqnext
+diff -r 295d932021bf file
+--- a/file
++++ b/file
+@@ -1,3 +1,3 @@
+ patched line
+ frozen line
+-third line
++patched line
+% pop applied patches
+patch queue now empty
+mqprev
+mqfrozen
+mqnext
+% check qrefresh on frozen patch
+mqfrozen
+applying mqprev
+applying mqfrozen
+now at: mqfrozen
+mqfrozen
+abort: cannot refresh frozen patch
+%% check un-refreshed patch content
+M file
+C file
+diff -r 159262f4d120 file
+--- a/file
++++ b/file
+@@ -1,3 +1,3 @@
+ patched line
+-second line
++frozen line
+ third line
+% check qrefresh on un-frozen patch
+mqfrozen
+applying mqnext
+now at: mqnext
+mqnext
+%% check refreshed patch content
+C file
+diff -r 295d932021bf file
+--- a/file
++++ b/file
+@@ -1,3 +1,3 @@
+ patched line
+ frozen line
+-third line
++patched line, and modified again
+% check qrefresh on released patch
+now at: mqfrozen
+mqfrozen
+%% check refreshed patch content
+C file
+diff -r 159262f4d120 file
+--- a/file
++++ b/file
+@@ -1,3 +1,3 @@
+ patched line
+-second line
++frozen line, but modified after release
+ third line
diff --git a/tests/test-mq-qfreeze-qrename b/tests/test-mq-qfreeze-qrename
new file mode 100755
--- /dev/null
+++ b/tests/test-mq-qfreeze-qrename
@@ -0,0 +1,90 @@
+#!/bin/sh
+
+cat <<EOF >> $HGRCPATH
+[defaults]
+qnew = -d "0 0"
+qrefresh =  -d "0 0"
+[extensions]
+mq=
+EOF
+
+echo % init
+hg init a
+cd a
+
+echo % base revision
+cat <<EOF > file
+first line
+second line
+third line
+EOF
+hg ci -A -m base -d '1 0'
+
+echo % create previous patch
+hg qnew -m mqprev mqprev
+cat <<EOF > file
+patched line
+second line
+third line
+EOF
+hg qrefresh
+
+echo % check mqprev
+hg qdiff | sed -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/" \
+               -e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/"
+
+echo % create frozen target patch
+hg qnew -m mqfrozen mqfrozen
+cat <<EOF > file
+patched line
+frozen line
+third line
+EOF
+hg qrefresh
+
+echo % check mqfrozen
+hg qdiff | sed -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/" \
+               -e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/"
+
+echo % create next patch
+hg qnew -m mqnext mqnext
+cat <<EOF > file
+patched line
+frozen line
+patched line
+EOF
+hg qrefresh
+
+echo % check mqnext
+hg qdiff | sed -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/" \
+               -e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/"
+
+echo % check mq status
+hg qpop mqfrozen
+hg status -A
+
+####################
+
+echo % freeze target patch
+hg qfreeze mqfrozen
+hg qfreeze --list
+
+echo % check qrename on frozen patch/implicit
+hg qrename renamed_frozen
+echo %% check mq status
+echo %%% series
+hg qseries
+echo %%% applied
+hg qapplied
+echo %% check frozen list
+hg qfreeze --list
+
+echo % check qrename on frozen patch/explicit
+hg qrename renamed_frozen mqfrozen
+echo %% check mq status
+echo %%% series
+hg qseries
+echo %%% applied
+hg qapplied
+echo %% check frozen list
+hg qfreeze --list
diff --git a/tests/test-mq-qfreeze-qrename.out b/tests/test-mq-qfreeze-qrename.out
new file mode 100644
--- /dev/null
+++ b/tests/test-mq-qfreeze-qrename.out
@@ -0,0 +1,60 @@
+% init
+% base revision
+adding file
+% create previous patch
+% check mqprev
+diff -r 52f8d865ad77 file
+--- a/file
++++ b/file
+@@ -1,3 +1,3 @@
+-first line
++patched line
+ second line
+ third line
+% create frozen target patch
+% check mqfrozen
+diff -r 159262f4d120 file
+--- a/file
++++ b/file
+@@ -1,3 +1,3 @@
+ patched line
+-second line
++frozen line
+ third line
+% create next patch
+% check mqnext
+diff -r 295d932021bf file
+--- a/file
++++ b/file
+@@ -1,3 +1,3 @@
+ patched line
+ frozen line
+-third line
++patched line
+% check mq status
+now at: mqfrozen
+C file
+% freeze target patch
+mqfrozen
+% check qrename on frozen patch/implicit
+%% check mq status
+%%% series
+mqprev
+renamed_frozen
+mqnext
+%%% applied
+mqprev
+renamed_frozen
+%% check frozen list
+renamed_frozen
+% check qrename on frozen patch/explicit
+%% check mq status
+%%% series
+mqprev
+mqfrozen
+mqnext
+%%% applied
+mqprev
+mqfrozen
+%% check frozen list
+mqfrozen
diff --git a/tests/test-mq-qfreeze.out b/tests/test-mq-qfreeze.out
new file mode 100644
--- /dev/null
+++ b/tests/test-mq-qfreeze.out
@@ -0,0 +1,152 @@
+% init
+% base revision
+adding file
+% create previous patch
+% check mqprev
+diff -r 52f8d865ad77 file
+--- a/file
++++ b/file
+@@ -1,3 +1,3 @@
+-first line
++patched line
+ second line
+ third line
+% create frozen target patch
+% check mqfrozen
+diff -r 159262f4d120 file
+--- a/file
++++ b/file
+@@ -1,3 +1,3 @@
+ patched line
+-second line
++frozen line
+ third line
+% create next patch
+% check mqnext
+diff -r 295d932021bf file
+--- a/file
++++ b/file
+@@ -1,3 +1,3 @@
+ patched line
+ frozen line
+-third line
++patched line
+% check applied patches
+mqprev
+mqfrozen
+mqnext
+% check freezing management: all applied
+%% check --series
+freeze: mqprev
+freeze: mqfrozen
+freeze: mqnext
+mqprev
+mqfrozen
+mqnext
+release: mqprev
+release: mqfrozen
+release: mqnext
+%% check --applied
+freeze: mqprev
+freeze: mqfrozen
+freeze: mqnext
+mqprev
+mqfrozen
+mqnext
+release: mqprev
+release: mqfrozen
+release: mqnext
+%% check --unapplied
+% check freezing management: partialy applied
+now at: mqfrozen
+mqprev
+mqfrozen
+%% check --series
+freeze: mqprev
+freeze: mqfrozen
+freeze: mqnext
+mqprev
+mqfrozen
+mqnext
+release: mqprev
+release: mqfrozen
+release: mqnext
+%% check --applied
+freeze: mqprev
+freeze: mqfrozen
+mqprev
+mqfrozen
+release: mqprev
+release: mqfrozen
+%% check --unapplied
+freeze: mqnext
+mqnext
+release: mqnext
+% check freezing management: none applied
+patch queue now empty
+%% check --series
+freeze: mqprev
+freeze: mqfrozen
+freeze: mqnext
+mqprev
+mqfrozen
+mqnext
+release: mqprev
+release: mqfrozen
+release: mqnext
+%% check --applied
+%% check --unapplied
+freeze: mqprev
+freeze: mqfrozen
+freeze: mqnext
+mqprev
+mqfrozen
+mqnext
+release: mqprev
+release: mqfrozen
+release: mqnext
+% check freezing management: partialy release
+applying mqprev
+applying mqfrozen
+now at: mqfrozen
+mqprev
+mqfrozen
+%% freeze by series
+freeze: mqprev
+freeze: mqfrozen
+freeze: mqnext
+mqprev
+mqfrozen
+mqnext
+%% check --applied
+release: mqprev
+release: mqfrozen
+mqnext
+%% check --unapplied
+release: mqnext
+% check freezing management: over-release
+%% freeze by applied
+freeze: mqprev
+freeze: mqfrozen
+mqprev
+mqfrozen
+%% release by series
+release: mqprev
+release: mqfrozen
+not frozen: mqnext
+%% freeze by unapplied
+freeze: mqnext
+mqnext
+%% release by series
+not frozen: mqprev
+not frozen: mqfrozen
+release: mqnext
+% check freezing management: specific name
+%% freeze by name
+mqfrozen
+%% freeze by name, again
+already frozen: mqfrozen
+mqfrozen
+%% release by name
+%% release by name, again
+not frozen: mqfrozen
diff --git a/tests/test-mq.out b/tests/test-mq.out
--- a/tests/test-mq.out
+++ b/tests/test-mq.out
@@ -31,6 +31,7 @@
  qdiff        diff of the current patch and subsequent modifications
  qfinish      move applied patches into repository history
  qfold        fold the named patches into the current patch
+ qfreeze      freeze specified patches to protect them from modifications
  qgoto        push or pop patches until named patch is at top of stack
  qguard       set or print guards for a patch
  qheader      print the header of the topmost or specified patch


More information about the Mercurial-devel mailing list