Mercurial > hg
changeset 12529:00e7a7fdae7d
tests: unify test-convert-filemap
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Sun, 26 Sep 2010 17:14:35 -0500 |
parents | f6b206417ba4 |
children | f11793a8c107 |
files | tests/test-convert-filemap tests/test-convert-filemap.out tests/test-convert-filemap.t |
diffstat | 3 files changed, 284 insertions(+), 308 deletions(-) [+] |
line wrap: on
line diff
--- a/tests/test-convert-filemap Sun Sep 26 16:54:28 2010 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,141 +0,0 @@ -#!/bin/sh - -HGMERGE=true; export HGMERGE - -echo '[extensions]' >> $HGRCPATH -echo 'graphlog =' >> $HGRCPATH -echo 'convert =' >> $HGRCPATH - -glog() -{ - hg glog --template '{rev} "{desc}" files: {files}\n' "$@" -} - -hg init source -cd source - -echo foo > foo -echo baz > baz -mkdir -p dir/subdir -echo dir/file >> dir/file -echo dir/file2 >> dir/file2 -echo dir/subdir/file3 >> dir/subdir/file3 -echo dir/subdir/file4 >> dir/subdir/file4 -hg ci -d '0 0' -qAm '0: add foo baz dir/' - -echo bar > bar -echo quux > quux -hg copy foo copied -hg ci -d '1 0' -qAm '1: add bar quux; copy foo to copied' - -echo >> foo -hg ci -d '2 0' -m '2: change foo' - -hg up -qC 1 -echo >> bar -echo >> quux -hg ci -d '3 0' -m '3: change bar quux' - -hg up -qC 2 -hg merge -qr 3 -echo >> bar -echo >> baz -hg ci -d '4 0' -m '4: first merge; change bar baz' - -echo >> bar -echo 1 >> baz -echo >> quux -hg ci -d '5 0' -m '5: change bar baz quux' - -hg up -qC 4 -echo >> foo -echo 2 >> baz -hg ci -d '6 0' -m '6: change foo baz' - -hg up -qC 5 -hg merge -qr 6 -echo >> bar -hg ci -d '7 0' -m '7: second merge; change bar' - -echo >> foo -hg ci -m '8: change foo' - -glog - -echo '% final file versions in this repo:' -hg manifest --debug -hg debugrename copied -echo - -cd .. - -splitrepo() -{ - msg="$1" - files="$2" - opts=$3 - echo "% $files: $msg" - prefix=`echo "$files" | sed -e 's/ /-/g'` - fmap="$prefix.fmap" - repo="$prefix.repo" - for i in $files; do - echo "include $i" >> "$fmap" - done - hg -q convert $opts --filemap "$fmap" --datesort source "$repo" - hg up -q -R "$repo" - glog -R "$repo" - hg -R "$repo" manifest --debug -} - -splitrepo 'skip unwanted merges; use 1st parent in 1st merge, 2nd in 2nd' foo - -splitrepo 'merges are not merges anymore' bar - -splitrepo '1st merge is not a merge anymore; 2nd still is' baz - -splitrepo 'we add additional merges when they are interesting' 'foo quux' - -splitrepo 'partial conversion' 'bar quux' '-r 3' -splitrepo 'complete the partial conversion' 'bar quux' - -rm -r foo.repo -splitrepo 'partial conversion' 'foo' '-r 3' -splitrepo 'complete the partial conversion' 'foo' - -splitrepo 'copied file; source not included in new repo' copied -hg --cwd copied.repo debugrename copied - -splitrepo 'copied file; source included in new repo' 'foo copied' -hg --cwd foo-copied.repo debugrename copied - -cat > renames.fmap <<EOF -include dir -exclude dir/file2 -rename dir dir2 -include foo -include copied -rename foo foo2 -rename copied copied2 -exclude dir/subdir -include dir/subdir/file3 -EOF -hg -q convert --filemap renames.fmap --datesort source renames.repo -hg up -q -R renames.repo -glog -R renames.repo -hg -R renames.repo manifest --debug -hg --cwd renames.repo debugrename copied2 -echo 'copied:' -hg --cwd source cat copied -echo 'copied2:' -hg --cwd renames.repo cat copied2 - -echo % filemap errors -cat > errors.fmap <<EOF -include dir/ # beware that comments changes error line numbers! -exclude /dir -rename dir//dir /dir//dir/ "out of sync" -include -EOF -hg -q convert --filemap errors.fmap source errors.repo - -true # happy ending
--- a/tests/test-convert-filemap.out Sun Sep 26 16:54:28 2010 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,167 +0,0 @@ -created new head -created new head -@ 8 "8: change foo" files: foo -| -o 7 "7: second merge; change bar" files: bar baz -|\ -| o 6 "6: change foo baz" files: baz foo -| | -o | 5 "5: change bar baz quux" files: bar baz quux -|/ -o 4 "4: first merge; change bar baz" files: bar baz -|\ -| o 3 "3: change bar quux" files: bar quux -| | -o | 2 "2: change foo" files: foo -|/ -o 1 "1: add bar quux; copy foo to copied" files: bar copied quux -| -o 0 "0: add foo baz dir/" files: baz dir/file dir/file2 dir/subdir/file3 dir/subdir/file4 foo - -% final file versions in this repo: -9463f52fe115e377cf2878d4fc548117211063f2 644 bar -94c1be4dfde2ee8d78db8bbfcf81210813307c3d 644 baz -7711d36246cc83e61fb29cd6d4ef394c63f1ceaf 644 copied -3e20847584beff41d7cd16136b7331ab3d754be0 644 dir/file -75e6d3f8328f5f6ace6bf10b98df793416a09dca 644 dir/file2 -5fe139720576e18e34bcc9f79174db8897c8afe9 644 dir/subdir/file3 -57a1c1511590f3de52874adfa04effe8a77d64af 644 dir/subdir/file4 -9a7b52012991e4873687192c3e17e61ba3e837a3 644 foo -bc3eca3f47023a3e70ca0d8cc95a22a6827db19d 644 quux -copied renamed from foo:2ed2a3912a0b24502043eae84ee4b279c18b90dd - -% foo: skip unwanted merges; use 1st parent in 1st merge, 2nd in 2nd -@ 3 "8: change foo" files: foo -| -o 2 "6: change foo baz" files: foo -| -o 1 "2: change foo" files: foo -| -o 0 "0: add foo baz dir/" files: foo - -9a7b52012991e4873687192c3e17e61ba3e837a3 644 foo -% bar: merges are not merges anymore -@ 4 "7: second merge; change bar" files: bar -| -o 3 "5: change bar baz quux" files: bar -| -o 2 "4: first merge; change bar baz" files: bar -| -o 1 "3: change bar quux" files: bar -| -o 0 "1: add bar quux; copy foo to copied" files: bar - -9463f52fe115e377cf2878d4fc548117211063f2 644 bar -% baz: 1st merge is not a merge anymore; 2nd still is -@ 4 "7: second merge; change bar" files: baz -|\ -| o 3 "6: change foo baz" files: baz -| | -o | 2 "5: change bar baz quux" files: baz -|/ -o 1 "4: first merge; change bar baz" files: baz -| -o 0 "0: add foo baz dir/" files: baz - -94c1be4dfde2ee8d78db8bbfcf81210813307c3d 644 baz -% foo quux: we add additional merges when they are interesting -@ 8 "8: change foo" files: foo -| -o 7 "7: second merge; change bar" files: -|\ -| o 6 "6: change foo baz" files: foo -| | -o | 5 "5: change bar baz quux" files: quux -|/ -o 4 "4: first merge; change bar baz" files: -|\ -| o 3 "3: change bar quux" files: quux -| | -o | 2 "2: change foo" files: foo -|/ -o 1 "1: add bar quux; copy foo to copied" files: quux -| -o 0 "0: add foo baz dir/" files: foo - -9a7b52012991e4873687192c3e17e61ba3e837a3 644 foo -bc3eca3f47023a3e70ca0d8cc95a22a6827db19d 644 quux -% bar quux: partial conversion -@ 1 "3: change bar quux" files: bar quux -| -o 0 "1: add bar quux; copy foo to copied" files: bar quux - -b79105bedc55102f394e90a789c9c380117c1b4a 644 bar -db0421cc6b685a458c8d86c7d5c004f94429ea23 644 quux -% bar quux: complete the partial conversion -@ 4 "7: second merge; change bar" files: bar -| -o 3 "5: change bar baz quux" files: bar quux -| -o 2 "4: first merge; change bar baz" files: bar -| -o 1 "3: change bar quux" files: bar quux -| -o 0 "1: add bar quux; copy foo to copied" files: bar quux - -9463f52fe115e377cf2878d4fc548117211063f2 644 bar -bc3eca3f47023a3e70ca0d8cc95a22a6827db19d 644 quux -% foo: partial conversion -@ 0 "0: add foo baz dir/" files: foo - -2ed2a3912a0b24502043eae84ee4b279c18b90dd 644 foo -% foo: complete the partial conversion -@ 3 "8: change foo" files: foo -| -o 2 "6: change foo baz" files: foo -| -o 1 "2: change foo" files: foo -| -o 0 "0: add foo baz dir/" files: foo - -9a7b52012991e4873687192c3e17e61ba3e837a3 644 foo -% copied: copied file; source not included in new repo -@ 0 "1: add bar quux; copy foo to copied" files: copied - -2ed2a3912a0b24502043eae84ee4b279c18b90dd 644 copied -copied not renamed -% foo copied: copied file; source included in new repo -@ 4 "8: change foo" files: foo -| -o 3 "6: change foo baz" files: foo -| -o 2 "2: change foo" files: foo -| -o 1 "1: add bar quux; copy foo to copied" files: copied -| -o 0 "0: add foo baz dir/" files: foo - -7711d36246cc83e61fb29cd6d4ef394c63f1ceaf 644 copied -9a7b52012991e4873687192c3e17e61ba3e837a3 644 foo -copied renamed from foo:2ed2a3912a0b24502043eae84ee4b279c18b90dd -@ 4 "8: change foo" files: foo2 -| -o 3 "6: change foo baz" files: foo2 -| -o 2 "2: change foo" files: foo2 -| -o 1 "1: add bar quux; copy foo to copied" files: copied2 -| -o 0 "0: add foo baz dir/" files: dir2/file dir2/subdir/file3 foo2 - -d43feacba7a4f1f2080dde4a4b985bd8a0236d46 644 copied2 -3e20847584beff41d7cd16136b7331ab3d754be0 644 dir2/file -5fe139720576e18e34bcc9f79174db8897c8afe9 644 dir2/subdir/file3 -9a7b52012991e4873687192c3e17e61ba3e837a3 644 foo2 -copied2 renamed from foo2:2ed2a3912a0b24502043eae84ee4b279c18b90dd -copied: -foo -copied2: -foo -% filemap errors -errors.fmap:1: superfluous / in exclude 'dir/' -errors.fmap:3: superfluous / in include '/dir' -errors.fmap:3: superfluous / in rename '/dir' -errors.fmap:3: superfluous / in exclude 'dir//dir' -errors.fmap:4: unknown directive 'out of sync' -errors.fmap:5: path to exclude is missing -abort: errors in filemap
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-convert-filemap.t Sun Sep 26 17:14:35 2010 -0500 @@ -0,0 +1,284 @@ + + $ HGMERGE=true; export HGMERGE + $ echo '[extensions]' >> $HGRCPATH + $ echo 'graphlog =' >> $HGRCPATH + $ echo 'convert =' >> $HGRCPATH + $ glog() + > { + > hg glog --template '{rev} "{desc}" files: {files}\n' "$@" + > } + $ hg init source + $ cd source + $ echo foo > foo + $ echo baz > baz + $ mkdir -p dir/subdir + $ echo dir/file >> dir/file + $ echo dir/file2 >> dir/file2 + $ echo dir/subdir/file3 >> dir/subdir/file3 + $ echo dir/subdir/file4 >> dir/subdir/file4 + $ hg ci -d '0 0' -qAm '0: add foo baz dir/' + $ echo bar > bar + $ echo quux > quux + $ hg copy foo copied + $ hg ci -d '1 0' -qAm '1: add bar quux; copy foo to copied' + $ echo >> foo + $ hg ci -d '2 0' -m '2: change foo' + $ hg up -qC 1 + $ echo >> bar + $ echo >> quux + $ hg ci -d '3 0' -m '3: change bar quux' + created new head + $ hg up -qC 2 + $ hg merge -qr 3 + $ echo >> bar + $ echo >> baz + $ hg ci -d '4 0' -m '4: first merge; change bar baz' + $ echo >> bar + $ echo 1 >> baz + $ echo >> quux + $ hg ci -d '5 0' -m '5: change bar baz quux' + $ hg up -qC 4 + $ echo >> foo + $ echo 2 >> baz + $ hg ci -d '6 0' -m '6: change foo baz' + created new head + $ hg up -qC 5 + $ hg merge -qr 6 + $ echo >> bar + $ hg ci -d '7 0' -m '7: second merge; change bar' + $ echo >> foo + $ hg ci -m '8: change foo' + $ glog + @ 8 "8: change foo" files: foo + | + o 7 "7: second merge; change bar" files: bar baz + |\ + | o 6 "6: change foo baz" files: baz foo + | | + o | 5 "5: change bar baz quux" files: bar baz quux + |/ + o 4 "4: first merge; change bar baz" files: bar baz + |\ + | o 3 "3: change bar quux" files: bar quux + | | + o | 2 "2: change foo" files: foo + |/ + o 1 "1: add bar quux; copy foo to copied" files: bar copied quux + | + o 0 "0: add foo baz dir/" files: baz dir/file dir/file2 dir/subdir/file3 dir/subdir/file4 foo + + +final file versions in this repo: + + $ hg manifest --debug + 9463f52fe115e377cf2878d4fc548117211063f2 644 bar + 94c1be4dfde2ee8d78db8bbfcf81210813307c3d 644 baz + 7711d36246cc83e61fb29cd6d4ef394c63f1ceaf 644 copied + 3e20847584beff41d7cd16136b7331ab3d754be0 644 dir/file + 75e6d3f8328f5f6ace6bf10b98df793416a09dca 644 dir/file2 + 5fe139720576e18e34bcc9f79174db8897c8afe9 644 dir/subdir/file3 + 57a1c1511590f3de52874adfa04effe8a77d64af 644 dir/subdir/file4 + 9a7b52012991e4873687192c3e17e61ba3e837a3 644 foo + bc3eca3f47023a3e70ca0d8cc95a22a6827db19d 644 quux + $ hg debugrename copied + copied renamed from foo:2ed2a3912a0b24502043eae84ee4b279c18b90dd + $ echo + + $ cd .. + $ splitrepo() + > { + > msg="$1" + > files="$2" + > opts=$3 + > echo "% $files: $msg" + > prefix=`echo "$files" | sed -e 's/ /-/g'` + > fmap="$prefix.fmap" + > repo="$prefix.repo" + > for i in $files; do + > echo "include $i" >> "$fmap" + > done + > hg -q convert $opts --filemap "$fmap" --datesort source "$repo" + > hg up -q -R "$repo" + > glog -R "$repo" + > hg -R "$repo" manifest --debug + > } + $ splitrepo 'skip unwanted merges; use 1st parent in 1st merge, 2nd in 2nd' foo + % foo: skip unwanted merges; use 1st parent in 1st merge, 2nd in 2nd + @ 3 "8: change foo" files: foo + | + o 2 "6: change foo baz" files: foo + | + o 1 "2: change foo" files: foo + | + o 0 "0: add foo baz dir/" files: foo + + 9a7b52012991e4873687192c3e17e61ba3e837a3 644 foo + $ splitrepo 'merges are not merges anymore' bar + % bar: merges are not merges anymore + @ 4 "7: second merge; change bar" files: bar + | + o 3 "5: change bar baz quux" files: bar + | + o 2 "4: first merge; change bar baz" files: bar + | + o 1 "3: change bar quux" files: bar + | + o 0 "1: add bar quux; copy foo to copied" files: bar + + 9463f52fe115e377cf2878d4fc548117211063f2 644 bar + $ splitrepo '1st merge is not a merge anymore; 2nd still is' baz + % baz: 1st merge is not a merge anymore; 2nd still is + @ 4 "7: second merge; change bar" files: baz + |\ + | o 3 "6: change foo baz" files: baz + | | + o | 2 "5: change bar baz quux" files: baz + |/ + o 1 "4: first merge; change bar baz" files: baz + | + o 0 "0: add foo baz dir/" files: baz + + 94c1be4dfde2ee8d78db8bbfcf81210813307c3d 644 baz + $ splitrepo 'we add additional merges when they are interesting' 'foo quux' + % foo quux: we add additional merges when they are interesting + @ 8 "8: change foo" files: foo + | + o 7 "7: second merge; change bar" files: + |\ + | o 6 "6: change foo baz" files: foo + | | + o | 5 "5: change bar baz quux" files: quux + |/ + o 4 "4: first merge; change bar baz" files: + |\ + | o 3 "3: change bar quux" files: quux + | | + o | 2 "2: change foo" files: foo + |/ + o 1 "1: add bar quux; copy foo to copied" files: quux + | + o 0 "0: add foo baz dir/" files: foo + + 9a7b52012991e4873687192c3e17e61ba3e837a3 644 foo + bc3eca3f47023a3e70ca0d8cc95a22a6827db19d 644 quux + $ splitrepo 'partial conversion' 'bar quux' '-r 3' + % bar quux: partial conversion + @ 1 "3: change bar quux" files: bar quux + | + o 0 "1: add bar quux; copy foo to copied" files: bar quux + + b79105bedc55102f394e90a789c9c380117c1b4a 644 bar + db0421cc6b685a458c8d86c7d5c004f94429ea23 644 quux + $ splitrepo 'complete the partial conversion' 'bar quux' + % bar quux: complete the partial conversion + @ 4 "7: second merge; change bar" files: bar + | + o 3 "5: change bar baz quux" files: bar quux + | + o 2 "4: first merge; change bar baz" files: bar + | + o 1 "3: change bar quux" files: bar quux + | + o 0 "1: add bar quux; copy foo to copied" files: bar quux + + 9463f52fe115e377cf2878d4fc548117211063f2 644 bar + bc3eca3f47023a3e70ca0d8cc95a22a6827db19d 644 quux + $ rm -r foo.repo + $ splitrepo 'partial conversion' 'foo' '-r 3' + % foo: partial conversion + @ 0 "0: add foo baz dir/" files: foo + + 2ed2a3912a0b24502043eae84ee4b279c18b90dd 644 foo + $ splitrepo 'complete the partial conversion' 'foo' + % foo: complete the partial conversion + @ 3 "8: change foo" files: foo + | + o 2 "6: change foo baz" files: foo + | + o 1 "2: change foo" files: foo + | + o 0 "0: add foo baz dir/" files: foo + + 9a7b52012991e4873687192c3e17e61ba3e837a3 644 foo + $ splitrepo 'copied file; source not included in new repo' copied + % copied: copied file; source not included in new repo + @ 0 "1: add bar quux; copy foo to copied" files: copied + + 2ed2a3912a0b24502043eae84ee4b279c18b90dd 644 copied + $ hg --cwd copied.repo debugrename copied + copied not renamed + $ splitrepo 'copied file; source included in new repo' 'foo copied' + % foo copied: copied file; source included in new repo + @ 4 "8: change foo" files: foo + | + o 3 "6: change foo baz" files: foo + | + o 2 "2: change foo" files: foo + | + o 1 "1: add bar quux; copy foo to copied" files: copied + | + o 0 "0: add foo baz dir/" files: foo + + 7711d36246cc83e61fb29cd6d4ef394c63f1ceaf 644 copied + 9a7b52012991e4873687192c3e17e61ba3e837a3 644 foo + $ hg --cwd foo-copied.repo debugrename copied + copied renamed from foo:2ed2a3912a0b24502043eae84ee4b279c18b90dd + $ cat > renames.fmap <<EOF + > include dir + > exclude dir/file2 + > rename dir dir2 + > include foo + > include copied + > rename foo foo2 + > rename copied copied2 + > exclude dir/subdir + > include dir/subdir/file3 + > EOF + $ hg -q convert --filemap renames.fmap --datesort source renames.repo + $ hg up -q -R renames.repo + $ glog -R renames.repo + @ 4 "8: change foo" files: foo2 + | + o 3 "6: change foo baz" files: foo2 + | + o 2 "2: change foo" files: foo2 + | + o 1 "1: add bar quux; copy foo to copied" files: copied2 + | + o 0 "0: add foo baz dir/" files: dir2/file dir2/subdir/file3 foo2 + + $ hg -R renames.repo manifest --debug + d43feacba7a4f1f2080dde4a4b985bd8a0236d46 644 copied2 + 3e20847584beff41d7cd16136b7331ab3d754be0 644 dir2/file + 5fe139720576e18e34bcc9f79174db8897c8afe9 644 dir2/subdir/file3 + 9a7b52012991e4873687192c3e17e61ba3e837a3 644 foo2 + $ hg --cwd renames.repo debugrename copied2 + copied2 renamed from foo2:2ed2a3912a0b24502043eae84ee4b279c18b90dd + +copied: + + $ hg --cwd source cat copied + foo + +copied2: + + $ hg --cwd renames.repo cat copied2 + foo + +filemap errors + + $ cat > errors.fmap <<EOF + > include dir/ # beware that comments changes error line numbers! + > exclude /dir + > rename dir//dir /dir//dir/ "out of sync" + > include + > EOF + $ hg -q convert --filemap errors.fmap source errors.repo + errors.fmap:1: superfluous / in exclude 'dir/' + errors.fmap:3: superfluous / in include '/dir' + errors.fmap:3: superfluous / in rename '/dir' + errors.fmap:3: superfluous / in exclude 'dir//dir' + errors.fmap:4: unknown directive 'out of sync' + errors.fmap:5: path to exclude is missing + abort: errors in filemap + [255]