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

FUJIWARA Katsunori fujiwara at ascade.co.jp
Sat Jun 13 11:14:10 CDT 2009


# HG changeset patch
# User FUJIWARA Katsunori <foozy at lares.dti.ne.jp>
# Date 1244908733 -32400
# Node ID 24ab0f1dcdeb2103b8f2ff5f28fb6ad94214b37d
# Parent  91c5172391384cca3efe356ba794a00b8ad37bce
mq: add tests for new 'qfrozen' command

diff --git a/tests/test-mq-qfrozen b/tests/test-mq-qfrozen
new file mode 100755
--- /dev/null
+++ b/tests/test-mq-qfrozen
@@ -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 qfrozen --freeze --series
+hg qfrozen
+hg qfrozen --thaw --series
+hg qfrozen
+echo %% check --applied
+hg qfrozen --freeze --applied
+hg qfrozen
+hg qfrozen --thaw --applied
+hg qfrozen
+echo %% check --unapplied
+hg qfrozen --freeze --unapplied
+hg qfrozen
+hg qfrozen --thaw --unapplied
+hg qfrozen
+
+echo % check freezing management: partialy applied
+hg qpop
+hg qapplied
+echo %% check --series
+hg qfrozen --freeze --series
+hg qfrozen
+hg qfrozen --thaw --series
+hg qfrozen
+echo %% check --applied
+hg qfrozen --freeze --applied
+hg qfrozen
+hg qfrozen --thaw --applied
+hg qfrozen
+echo %% check --unapplied
+hg qfrozen --freeze --unapplied
+hg qfrozen
+hg qfrozen --thaw --unapplied
+hg qfrozen
+
+echo % check freezing management: none applied
+hg qpop -a
+hg qapplied
+echo %% check --series
+hg qfrozen --freeze --series
+hg qfrozen
+hg qfrozen --thaw --series
+hg qfrozen
+echo %% check --applied
+hg qfrozen --freeze --applied
+hg qfrozen
+hg qfrozen --thaw --applied
+hg qfrozen
+echo %% check --unapplied
+hg qfrozen --freeze --unapplied
+hg qfrozen
+hg qfrozen --thaw --unapplied
+hg qfrozen
+
+echo % check freezing management: partialy thawing
+hg qpush mqfrozen
+hg qapplied
+echo %% freeze by 'series'
+hg qfrozen --freeze --series
+hg qfrozen
+echo %% check --applied
+hg qfrozen --thaw --applied
+hg qfrozen
+echo %% check --unapplied
+hg qfrozen --thaw --unapplied
+hg qfrozen
+
+echo % check freezing management: over-thawing
+echo %% freeze by 'applied'
+hg qfrozen --freeze --applied
+hg qfrozen
+echo %% thaw by 'series'
+hg qfrozen --thaw --series
+hg qfrozen
+echo %% freeze by 'unapplied'
+hg qfrozen --freeze --unapplied
+hg qfrozen
+echo %% thaw by 'series'
+hg qfrozen --thaw --series
+hg qfrozen
+
+echo % check freezing management: specific name
+echo %% freeze by name
+hg qfrozen --freeze mqfrozen
+hg qfrozen
+echo %% freeze by name, again
+hg qfrozen --freeze mqfrozen
+hg qfrozen
+echo %% thaw by name
+hg qfrozen --thaw mqfrozen
+hg qfrozen
+echo %% thaw by name, again
+hg qfrozen --thaw mqfrozen
+hg qfrozen
diff --git a/tests/test-mq-qfrozen-qdelete b/tests/test-mq-qfrozen-qdelete
new file mode 100755
--- /dev/null
+++ b/tests/test-mq-qfrozen-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 qfrozen --freeze mqfrozen
+hg qfrozen
+hg qdelete mqfrozen
+hg qseries
+
+echo % check qdelete on un-frozen patches
+hg qdelete mqprev
+hg qdelete mqnext
+hg qseries
+
+echo % check qdelete on thawed patch
+hg qfrozen --thaw mqfrozen
+hg qfrozen
+hg qdelete mqfrozen
+hg qseries
diff --git a/tests/test-mq-qfrozen-qdelete.out b/tests/test-mq-qfrozen-qdelete.out
new file mode 100644
--- /dev/null
+++ b/tests/test-mq-qfrozen-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 thawed patch
diff --git a/tests/test-mq-qfrozen-qfinish b/tests/test-mq-qfrozen-qfinish
new file mode 100755
--- /dev/null
+++ b/tests/test-mq-qfrozen-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 qfrozen --freeze mqfrozen
+hg qfrozen
+
+echo % check qfinish frozen patch
+hg qfinish --applied
+echo %% check mq status
+hg status -A
+echo %%% series
+hg qseries
+echo %%% applied
+hg qapplied
+
+echo % thaw frozen patch
+hg qfrozen --thaw mqfrozen
+hg qfrozen
+
+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-qfrozen-qfinish.out b/tests/test-mq-qfrozen-qfinish.out
new file mode 100644
--- /dev/null
+++ b/tests/test-mq-qfrozen-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
+% thaw frozen patch
+% check qfinish frozen patch
+%% check mq status
+C file
+%%% series
+%%% applied
diff --git a/tests/test-mq-qfrozen-qfold b/tests/test-mq-qfrozen-qfold
new file mode 100755
--- /dev/null
+++ b/tests/test-mq-qfrozen-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 qfrozen --freeze mqfrozen
+hg qfrozen
+
+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 % thaw frozen patch
+hg qfrozen --thaw mqfrozen
+hg qfrozen
+
+echo % check qfold into thawed 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 thawed 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-qfrozen-qfold.out b/tests/test-mq-qfrozen-qfold.out
new file mode 100644
--- /dev/null
+++ b/tests/test-mq-qfrozen-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
+% thaw frozen patch
+% check qfold into thawed 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 thawed 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-qfrozen-qrefresh b/tests/test-mq-qfrozen-qrefresh
new file mode 100755
--- /dev/null
+++ b/tests/test-mq-qfrozen-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 qfrozen --freeze mqfrozen
+hg qfrozen
+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 qfrozen
+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 thawed patch
+hg qfrozen --thaw mqfrozen
+hg qfrozen
+hg qpop mqfrozen
+hg qtop
+cat <<EOF > file
+patched line
+frozen line, but modified after thawing
+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-qfrozen-qrefresh.out b/tests/test-mq-qfrozen-qrefresh.out
new file mode 100644
--- /dev/null
+++ b/tests/test-mq-qfrozen-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 thawed 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 thawing
+ third line
diff --git a/tests/test-mq-qfrozen-qrename b/tests/test-mq-qfrozen-qrename
new file mode 100755
--- /dev/null
+++ b/tests/test-mq-qfrozen-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 qfrozen --freeze mqfrozen
+hg qfrozen
+
+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 qfrozen
+
+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 qfrozen
diff --git a/tests/test-mq-qfrozen-qrename.out b/tests/test-mq-qfrozen-qrename.out
new file mode 100644
--- /dev/null
+++ b/tests/test-mq-qfrozen-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-qfrozen.out b/tests/test-mq-qfrozen.out
new file mode 100644
--- /dev/null
+++ b/tests/test-mq-qfrozen.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
+thaw: mqprev
+thaw: mqfrozen
+thaw: mqnext
+%% check --applied
+freeze: mqprev
+freeze: mqfrozen
+freeze: mqnext
+mqprev
+mqfrozen
+mqnext
+thaw: mqprev
+thaw: mqfrozen
+thaw: mqnext
+%% check --unapplied
+% check freezing management: partialy applied
+now at: mqfrozen
+mqprev
+mqfrozen
+%% check --series
+freeze: mqprev
+freeze: mqfrozen
+freeze: mqnext
+mqprev
+mqfrozen
+mqnext
+thaw: mqprev
+thaw: mqfrozen
+thaw: mqnext
+%% check --applied
+freeze: mqprev
+freeze: mqfrozen
+mqprev
+mqfrozen
+thaw: mqprev
+thaw: mqfrozen
+%% check --unapplied
+freeze: mqnext
+mqnext
+thaw: mqnext
+% check freezing management: none applied
+patch queue now empty
+%% check --series
+freeze: mqprev
+freeze: mqfrozen
+freeze: mqnext
+mqprev
+mqfrozen
+mqnext
+thaw: mqprev
+thaw: mqfrozen
+thaw: mqnext
+%% check --applied
+%% check --unapplied
+freeze: mqprev
+freeze: mqfrozen
+freeze: mqnext
+mqprev
+mqfrozen
+mqnext
+thaw: mqprev
+thaw: mqfrozen
+thaw: mqnext
+% check freezing management: partialy thawing
+applying mqprev
+applying mqfrozen
+now at: mqfrozen
+mqprev
+mqfrozen
+%% freeze by series
+freeze: mqprev
+freeze: mqfrozen
+freeze: mqnext
+mqprev
+mqfrozen
+mqnext
+%% check --applied
+thaw: mqprev
+thaw: mqfrozen
+mqnext
+%% check --unapplied
+thaw: mqnext
+% check freezing management: over-thawing
+%% freeze by applied
+freeze: mqprev
+freeze: mqfrozen
+mqprev
+mqfrozen
+%% thaw by series
+thaw: mqprev
+thaw: mqfrozen
+not frozen: mqnext
+%% freeze by unapplied
+freeze: mqnext
+mqnext
+%% thaw by series
+not frozen: mqprev
+not frozen: mqfrozen
+thaw: mqnext
+% check freezing management: specific name
+%% freeze by name
+mqfrozen
+%% freeze by name, again
+already frozen: mqfrozen
+mqfrozen
+%% thaw by name
+%% thaw 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
+ qfrozen      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