##// END OF EJS Templates
merge with crew
merge with crew

File last commit:

r6558:550c53d6 merge default
r6986:55c16f12 merge default
Show More
test-mq
539 lines | 9.2 KiB | text/plain | TextLexer
Vadim Gelfer
mq: add basic tests
r2729 #!/bin/sh
Alexis S. L. Carvalho
mq: really remove undo after a qpush (and after a strip)...
r5527 checkundo()
{
if [ -f .hg/store/undo ]; then
echo ".hg/store/undo still exists after $1"
fi
}
Thomas Arendsen Hein
Make tests append settings to $HGRCPATH instead of $HGTMP/.hgrc...
r2990 echo "[extensions]" >> $HGRCPATH
echo "mq=" >> $HGRCPATH
Vadim Gelfer
mq: add basic tests
r2729
echo % help
hg help mq
hg init a
cd a
echo a > a
Vadim Gelfer
mq: do not allow to push from repo with patches applied
r2848 hg ci -Ama
hg clone . ../k
Vadim Gelfer
mq: add basic tests
r2729 mkdir b
echo z > b/z
hg ci -Ama
echo % qinit
hg qinit
cd ..
hg init b
echo % -R qinit
hg -R b qinit
hg init c
echo % qinit -c
hg --cwd c qinit -c
hg -R c/.hg/patches st
Alexis S. L. Carvalho
mq: don't allow patches with some reserved names...
r5981 echo % qnew should refuse bad patch names
hg -R c qnew series
hg -R c qnew status
hg -R c qnew guards
hg -R c qnew .hgignore
Vadim Gelfer
mq: add basic tests
r2729 echo % qnew implies add
hg -R c qnew test.patch
hg -R c/.hg/patches st
Alexis S. L. Carvalho
mq: qinit -c creates a repo even after a regular qinit
r4071 echo '% qinit; qinit -c'
hg init d
cd d
hg qinit
hg qinit -c
# qinit -c should create both files if they don't exist
echo ' .hgignore:'
cat .hg/patches/.hgignore
echo ' series:'
cat .hg/patches/series
hg qinit -c 2>&1 | sed -e 's/repository.*already/repository already/'
cd ..
echo '% qinit; <stuff>; qinit -c'
hg init e
cd e
hg qnew A
Alexis S. L. Carvalho
mq: really remove undo after a qpush (and after a strip)...
r5527 checkundo qnew
Alexis S. L. Carvalho
mq: qinit -c creates a repo even after a regular qinit
r4071 echo foo > foo
hg add foo
hg qrefresh
hg qnew B
echo >> foo
hg qrefresh
echo status >> .hg/patches/.hgignore
echo bleh >> .hg/patches/.hgignore
hg qinit -c
hg -R .hg/patches status
# qinit -c shouldn't touch these files if they already exist
echo ' .hgignore:'
cat .hg/patches/.hgignore
echo ' series:'
cat .hg/patches/series
cd ..
Vadim Gelfer
mq: add basic tests
r2729 cd a
Patrick Mezard
mq: avoid qnew committing everything on invalid paths (issue 803)...
r5534 echo a > somefile
hg add somefile
echo % qnew with uncommitted changes
hg qnew uncommitted.patch
hg st
hg qseries
echo '% qnew with uncommitted changes and missing file (issue 803)'
hg qnew issue803.patch someotherfile 2>&1 | \
sed -e 's/someotherfile:.*/someotherfile: No such file or directory/'
hg st
hg qseries
hg qpop -f
hg qdel issue803.patch
hg revert --no-backup somefile
rm somefile
Vadim Gelfer
mq: add basic tests
r2729 echo % qnew -m
hg qnew -m 'foo bar' test.patch
cat .hg/patches/test.patch
echo % qrefresh
echo a >> a
hg qrefresh
Danek Duvall
Fix some tests for portability.
r2843 sed -e "s/^\(diff -r \)\([a-f0-9]* \)/\1 x/" \
Vadim Gelfer
mq: add basic tests
r2729 -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/" \
-e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/" .hg/patches/test.patch
Alexis S. L. Carvalho
fix qrefresh'ing an empty patch...
r4173 echo % empty qrefresh
hg qrefresh -X a
echo 'revision:'
hg diff -r -2 -r -1
echo 'patch:'
cat .hg/patches/test.patch
echo 'working dir diff:'
hg diff --nodates -q
# restore things
hg qrefresh
Alexis S. L. Carvalho
mq: really remove undo after a qpush (and after a strip)...
r5527 checkundo qrefresh
Alexis S. L. Carvalho
fix qrefresh'ing an empty patch...
r4173
Vadim Gelfer
mq: add basic tests
r2729 echo % qpop
hg qpop
Alexis S. L. Carvalho
mq: really remove undo after a qpush (and after a strip)...
r5527 checkundo qpop
Vadim Gelfer
mq: add basic tests
r2729
echo % qpush
hg qpush
Alexis S. L. Carvalho
mq: really remove undo after a qpush (and after a strip)...
r5527 checkundo qpush
Vadim Gelfer
mq: add basic tests
r2729
cd ..
echo % pop/push outside repo
hg -R a qpop
hg -R a qpush
cd a
hg qnew test2.patch
echo % qrefresh in subdir
cd b
echo a > a
hg add a
hg qrefresh
echo % pop/push -a in subdir
hg qpop -a
hg --traceback qpush -a
echo % qseries
hg qseries
Alexis S. L. Carvalho
fix qseries -v when there are unapplied patches
r3681 hg qpop
hg qseries -vs
hg qpush
Vadim Gelfer
mq: add basic tests
r2729
echo % qapplied
hg qapplied
echo % qtop
hg qtop
echo % qprev
hg qprev
echo % qnext
hg qnext
echo % pop, qnext, qprev, qapplied
hg qpop
hg qnext
hg qprev
hg qapplied
Vadim Gelfer
mq: test commit in repo with patches applied
r2846 echo % commit should fail
hg commit
Vadim Gelfer
mq: do not allow to push from repo with patches applied
r2848 echo % push should fail
hg push ../../k
Vadim Gelfer
mq: add basic tests
r2729 echo % qunapplied
hg qunapplied
Thomas Arendsen Hein
Added tests for qpush/qpop with index.
r3081 echo % qpush/qpop with index
hg qnew test1b.patch
echo 1b > 1b
hg add 1b
hg qrefresh
hg qpush 2
hg qpop 0
hg qpush test.patch+1
hg qpush test.patch+2
hg qpop test2.patch-1
hg qpop test2.patch-2
hg qpush test1b.patch+1
Vadim Gelfer
mq: do not allow to push from repo with patches applied
r2848 echo % push should succeed
hg qpop -a
hg push ../../k
Alexis S. L. Carvalho
add some tests for qpush/qpop error codes
r4101 echo % qpush/qpop error codes
errorcode()
{
hg "$@" && echo " $@ succeeds" || echo " $@ fails"
}
# we want to start with some patches applied
hg qpush -a
echo " % pops all patches and succeeds"
errorcode qpop -a
echo " % does nothing and succeeds"
errorcode qpop -a
echo " % fails - nothing else to pop"
errorcode qpop
echo " % pushes a patch and succeeds"
errorcode qpush
echo " % pops a patch and succeeds"
errorcode qpop
echo " % pushes up to test1b.patch and succeeds"
errorcode qpush test1b.patch
echo " % does nothing and succeeds"
errorcode qpush test1b.patch
echo " % does nothing and succeeds"
errorcode qpop test1b.patch
echo " % fails - can't push to this patch"
errorcode qpush test.patch
echo " % fails - can't pop to this patch"
errorcode qpop test2.patch
echo " % pops up to test.patch and succeeds"
errorcode qpop test.patch
echo " % pushes all patches and succeeds"
errorcode qpush -a
echo " % does nothing and succeeds"
errorcode qpush -a
echo " % fails - nothing else to push"
errorcode qpush
echo " % does nothing and succeeds"
errorcode qpush test2.patch
Vadim Gelfer
mq: add basic tests
r2729 echo % strip
cd ../../b
echo x>x
hg ci -Ama
hg strip tip 2>&1 | sed 's/\(saving bundle to \).*/\1/'
hg unbundle .hg/strip-backup/*
Brendan Cully
Teach mq about git patches
r2934
Dirkjan Ochtman
mq: add --force option to strip
r6472 echo % strip with local changes, should complain
hg up
echo y>y
hg add y
hg strip tip | sed 's/\(saving bundle to \).*/\1/'
echo % --force strip with local changes
hg strip -f tip 2>&1 | sed 's/\(saving bundle to \).*/\1/'
Brendan Cully
Call patch.diff directly instead of printdiff - this also saves an...
r3027 echo '% cd b; hg qrefresh'
hg init refresh
cd refresh
echo a > a
hg ci -Ama -d'0 0'
hg qnew -mfoo foo
echo a >> a
hg qrefresh
mkdir b
cd b
echo f > f
hg add f
hg qrefresh
sed -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/" \
-e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/" ../.hg/patches/foo
echo % hg qrefresh .
hg qrefresh .
sed -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/" \
-e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/" ../.hg/patches/foo
hg status
Brendan Cully
Test case for bdiff on buffer objects
r3334 echo % qpush failure
cd ..
hg qrefresh
hg qnew -mbar bar
echo foo > foo
Brendan Cully
mq: test case for issue399
r3464 echo bar > bar
hg add foo bar
Brendan Cully
Test case for bdiff on buffer objects
r3334 hg qrefresh
hg qpop -a
echo bar > foo
hg qpush -a
Brendan Cully
mq: test case for issue399
r3464 hg st
Brendan Cully
Test case for bdiff on buffer objects
r3334
Brendan Cully
mq: add qparent tag (first parent of qbase)
r4219 echo % mq tags
hg log --template '{rev} {tags}\n' -r qparent:qtip
Alexis S. L. Carvalho
mqrepo: don't abort if the status file has an unknown node
r5979 echo % bad node in status
hg qpop
hg strip -qn tip
hg tip 2>&1 | sed -e 's/unknown node .*/unknown node/'
hg branches 2>&1 | sed -e 's/unknown node .*/unknown node/'
hg qpop
Thomas Arendsen Hein
Make tests append settings to $HGRCPATH instead of $HGTMP/.hgrc...
r2990 cat >>$HGRCPATH <<EOF
Brendan Cully
Teach mq about git patches
r2934 [diff]
git = True
EOF
cd ..
hg init git
cd git
hg qinit
hg qnew -m'new file' new
echo foo > new
chmod +x new
hg add new
hg qrefresh
Brendan Cully
sed portability fixes
r2935 sed -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/" \
-e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/" .hg/patches/new
Brendan Cully
Teach mq about git patches
r2934
hg qnew -m'copy file' copy
hg cp new copy
hg qrefresh
Brendan Cully
sed portability fixes
r2935 sed -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/" \
-e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/" .hg/patches/copy
Brendan Cully
Teach mq about git patches
r2934
hg qpop
hg qpush
hg qdiff
Alexis S. L. Carvalho
add --git option to qdiff
r3697 cat >>$HGRCPATH <<EOF
[diff]
git = False
EOF
hg qdiff --git
Alexis S. L. Carvalho
qrefresh: fix handling of added files (including copies) in the slow path
r3699
cd ..
hg init slow
cd slow
hg qinit
echo foo > foo
hg add foo
hg ci -m 'add foo'
hg qnew bar
echo bar > bar
hg add bar
hg mv foo baz
hg qrefresh --git
hg up -C 0
echo >> foo
hg ci -m 'change foo'
hg up -C 1
hg qrefresh --git 2>&1 | grep -v 'saving bundle'
cat .hg/patches/bar
hg log -vC --template '{rev} {file_copies%filecopy}\n' -r .
Alexis S. L. Carvalho
qrefresh: fix handling of copies in the fast path
r3700 hg qrefresh --git
cat .hg/patches/bar
hg log -vC --template '{rev} {file_copies%filecopy}\n' -r .
Bryan O'Sullivan
mq: autodetect an existing git patch during qrefresh (issue 491)
r4890 hg qrefresh
grep 'diff --git' .hg/patches/bar
Alexis S. L. Carvalho
qrefresh: fix handling of added files (including copies) in the slow path
r3699
echo
hg up -C 1
echo >> foo
hg ci -m 'change foo again'
hg up -C 2
hg mv bar quux
hg mv baz bleh
hg qrefresh --git 2>&1 | grep -v 'saving bundle'
cat .hg/patches/bar
hg log -vC --template '{rev} {file_copies%filecopy}\n' -r .
Alexis S. L. Carvalho
qrefresh: fix handling of copies in the fast path
r3700 hg mv quux fred
hg mv bleh barney
hg qrefresh --git
cat .hg/patches/bar
hg log -vC --template '{rev} {file_copies%filecopy}\n' -r .
Alexis S. L. Carvalho
fix strip'ping the second parent of a merge
r4065
Brendan Cully
mq: fix regression in 6fd953d5faea...
r5294 echo % refresh omitting an added file
hg qnew baz
echo newfile > newfile
hg add newfile
hg qrefresh
hg st -A newfile
hg qrefresh -X newfile
hg st -A newfile
hg revert newfile
rm newfile
hg qpop
hg qdel baz
Patrick Mezard
Test qnew --git
r5026 echo % create a git patch
echo a > alexander
hg add alexander
hg qnew -f --git addalexander
Thomas Arendsen Hein
Fix bashism and remove useless use of cat.
r5027 grep diff .hg/patches/addalexander
Patrick Mezard
Test qnew --git
r5026
echo % create a git binary patch
cat > writebin.py <<EOF
import sys
path = sys.argv[1]
open(path, 'wb').write('BIN\x00ARY')
EOF
python writebin.py bucephalus
python "$TESTDIR/md5sum.py" bucephalus
hg add bucephalus
hg qnew -f --git addbucephalus
Thomas Arendsen Hein
Fix bashism and remove useless use of cat.
r5027 grep diff .hg/patches/addbucephalus
Patrick Mezard
Test qnew --git
r5026
echo % check binary patches can be popped and pushed
hg qpop
Thomas Arendsen Hein
Fix bashism and remove useless use of cat.
r5027 test -f bucephalus && echo % bucephalus should not be there
Patrick Mezard
Test qnew --git
r5026 hg qpush
test -f bucephalus || echo % bucephalus should be there
python "$TESTDIR/md5sum.py" bucephalus
Alexis S. L. Carvalho
fix strip'ping the second parent of a merge
r4065 echo '% strip again'
cd ..
hg init strip
cd strip
touch foo
hg add foo
hg ci -m 'add foo' -d '0 0'
echo >> foo
hg ci -m 'change foo 1' -d '0 0'
hg up -C 0
echo 1 >> foo
hg ci -m 'change foo 2' -d '0 0'
HGMERGE=true hg merge
hg ci -m merge -d '0 0'
hg log
hg strip 1 2>&1 | sed 's/\(saving bundle to \).*/\1/'
Alexis S. L. Carvalho
mq: really remove undo after a qpush (and after a strip)...
r5527 checkundo strip
Alexis S. L. Carvalho
fix strip'ping the second parent of a merge
r4065 hg log
Alexis S. L. Carvalho
qclone: don't call reposetup manually
r4090 cd ..
Alexis S. L. Carvalho
fix strip'ping the second parent of a merge
r4065
Alexis S. L. Carvalho
qclone: don't call reposetup manually
r4090 echo '% qclone'
qlog()
{
echo 'main repo:'
hg log --template ' rev {rev}: {desc}\n'
echo 'patch repo:'
hg -R .hg/patches log --template ' rev {rev}: {desc}\n'
}
hg init qclonesource
cd qclonesource
echo foo > foo
hg add foo
hg ci -m 'add foo'
Brendan Cully
mq: improve qclone error handling when patch directory is not a repository.
r4862 hg qinit
Alexis S. L. Carvalho
qclone: don't call reposetup manually
r4090 hg qnew patch1
echo bar >> foo
hg qrefresh -m 'change foo'
Brendan Cully
mq: improve qclone error handling when patch directory is not a repository.
r4862 cd ..
# repo with unversioned patch dir
hg qclone qclonesource failure
cd qclonesource
hg qinit -c
Alexis S. L. Carvalho
qclone: don't call reposetup manually
r4090 hg qci -m checkpoint
qlog
cd ..
# repo with patches applied
hg qclone qclonesource qclonedest
cd qclonedest
qlog
cd ..
# repo with patches unapplied
cd qclonesource
hg qpop -a
qlog
cd ..
hg qclone qclonesource qclonedest2
cd qclonedest2
qlog
cd ..
Patrick Mezard
patch: check filename is /dev/null for creation or deletion (issue 1033)...
r6280 echo % 'test applying on an empty file (issue 1033)'
hg init empty
cd empty
touch a
hg ci -Am addempty
echo a > a
hg qnew -f -e changea
hg qpop
hg qpush
cd ..
Dirkjan Ochtman
mq: don't commit local changes on pushing empty patch (issue1087)
r6554
echo % test qpush with --force, issue1087
hg init forcepush
cd forcepush
echo hello > hello.txt
echo bye > bye.txt
hg ci -Ama
hg qnew -d '0 0' empty
hg qpop
echo world >> hello.txt
echo % qpush should fail, local changes
hg qpush
echo % apply force, should not discard changes with empty patch
hg qpush -f
hg diff --config diff.nodates=True
hg qdiff --config diff.nodates=True
hg log -l1 -p
hg qref -d '0 0'
hg qpop
echo universe >> hello.txt
echo universe >> bye.txt
echo % qpush should fail, local changes
hg qpush
echo % apply force, should discard changes in hello, but not bye
hg qpush -f
hg st
hg diff --config diff.nodates=True
hg qdiff --config diff.nodates=True