Mercurial > hg
view tests/test-convert-mtn @ 11628:68a30daead3f stable
inotify: make inotifydirstate.status() returns a tuple of lists.
This makes it consistent with dirstate.status(), which is important if
there are other extensions messing with the output of status(). Those
extensions can safely assume that dirstate.status() returns a tuple of
lists, because its docstring says it does. But
inotifystatus.dirstate() returns a list of lists, which can break
those other extensions.
author | Greg Ward <greg-hg@gerg.ca> |
---|---|
date | Tue, 20 Jul 2010 14:00:47 -0400 |
parents | bb5ea66789e3 |
children |
line wrap: on
line source
#!/bin/sh "$TESTDIR/hghave" mtn || exit 80 # Monotone directory is called .monotone on *nix and monotone # on Windows. Having a variable here ease test patching. mtndir=.monotone echo "[extensions]" >> $HGRCPATH echo "convert=" >> $HGRCPATH echo 'graphlog =' >> $HGRCPATH HOME=`pwd`/do_not_use_HOME_mtn; export HOME # Windows version of monotone home APPDATA=$HOME; export APPDATA echo % tedious monotone keys configuration # The /dev/null redirection is necessary under Windows, or # it complains about home directory permissions mtn --quiet genkey test@selenic.com 1>/dev/null 2>&1 <<EOF passphrase passphrase EOF cat >> $HOME/$mtndir/monotonerc <<EOF function get_passphrase(keypair_id) return "passphrase" end EOF echo % create monotone repository mtn db init --db=repo.mtn mtn --db=repo.mtn --branch=com.selenic.test setup workingdir cd workingdir echo a > a mkdir dir echo b > dir/b echo d > dir/d python -c 'file("bin", "wb").write("a\\x00b")' echo c > c mtn add a dir/b dir/d c bin mtn ci -m initialize echo % update monotone working directory mtn mv a dir/a echo a >> dir/a echo b >> dir/b mtn drop c python -c 'file("bin", "wb").write("b\\x00c")' mtn ci -m update1 cd .. echo % convert once hg convert -s mtn repo.mtn cd workingdir echo e > e mtn add e mtn drop dir/b mtn mv bin bin2 mtn ci -m 'update2 "with" quotes' echo '% test directory move' mkdir -p dir1/subdir1 mkdir -p dir1/subdir2_other echo file1 > dir1/subdir1/file1 echo file2 > dir1/subdir2_other/file1 mtn add dir1/subdir1/file1 dir1/subdir2_other/file1 mtn ci -m createdir1 mtn rename dir1/subdir1 dir1/subdir2 mtn ci -m movedir1 echo '% test subdirectory move' mtn mv dir dir2 echo newfile > dir2/newfile mtn drop dir2/d mtn add dir2/newfile mtn ci -m movedir # Test directory removal with empty directory mkdir dir2/dir mkdir dir2/dir/subdir echo f > dir2/dir/subdir/f mkdir dir2/dir/emptydir mtn add --quiet -R dir2/dir mtn ci -m emptydir mtn drop -R dir2/dir mtn ci -m dropdirectory echo '% test directory and file move' mkdir -p dir3/d1 echo a > dir3/a mtn add dir3/a dir3/d1 mtn ci -m dirfilemove mtn mv dir3/a dir3/d1/a mtn mv dir3/d1 dir3/d2 mtn ci -m dirfilemove2 echo '% test directory move into another directory move' mkdir dir4 mkdir dir5 echo a > dir4/a mtn add dir4/a dir5 mtn ci -m dirdirmove mtn mv dir5 dir6 mtn mv dir4 dir6/dir4 mtn ci -m dirdirmove2 echo '% test diverging directory moves' mkdir -p dir7/dir9/dir8 echo a > dir7/dir9/dir8/a echo b > dir7/dir9/b echo c > dir7/c mtn add -R dir7 mtn ci -m divergentdirmove mtn mv dir7 dir7-2 mtn mv dir7-2/dir9 dir9-2 mtn mv dir9-2/dir8 dir8-2 mtn ci -m divergentdirmove2 cd .. echo % convert incrementally hg convert -s mtn repo.mtn glog() { hg glog --template '{rev} "{desc|firstline}" files: {files}\n' "$@" } cd repo.mtn-hg hg up -C glog echo % manifest hg manifest echo % contents cat dir2/a test -d dir2/dir && echo 'removed dir2/dir is still there!' echo % file move hg log -v -C -r 1 | grep copies echo % check directory move hg manifest -r 4 test -d dir1/subdir2 || echo 'new dir1/subdir2 does not exist!' test -d dir1/subdir1 && echo 'renamed dir1/subdir1 is still there!' hg log -v -C -r 4 | grep copies echo % check file remove with directory move hg manifest -r 5 echo % check file move with directory move hg manifest -r 9 echo % check file directory directory move hg manifest -r 11 echo % check divergent directory moves hg manifest -r 13 exit 0