tests/test-convert-mtn
author Patrick Mezard <pmezard@gmail.com>
Tue, 21 Apr 2009 14:17:29 +0200
changeset 8099 3cdf4872941a
parent 8050 087cc65bebff
child 8123 933b874e402f
permissions -rwxr-xr-x
convert/mtn: handle new files in moved directories (issue1619) Reported and investigated by Paul Aurich <paul@darkrain42.org>
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6372
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
     1
#!/bin/sh
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
     2
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
     3
"$TESTDIR/hghave" mtn || exit 80
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
     4
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
     5
# Monotone directory is called .monotone on *nix and monotone
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
     6
# on Windows. Having a variable here ease test patching.
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
     7
mtndir=.monotone
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
     8
echo "[extensions]" >> $HGRCPATH
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
     9
echo "convert=" >> $HGRCPATH
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    10
echo 'hgext.graphlog =' >> $HGRCPATH
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    11
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    12
HOME=`pwd`/do_not_use_HOME_mtn; export HOME
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    13
# Windows version of monotone home
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    14
APPDATA=$HOME; export APPDATA
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    15
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    16
echo % tedious monotone keys configuration
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    17
# The /dev/null redirection is necessary under Windows, or
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    18
# it complains about home directory permissions
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    19
mtn --quiet genkey test@selenic.com 1>/dev/null 2>&1 <<EOF
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    20
passphrase
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    21
passphrase
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    22
EOF
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    23
cat >> $HOME/$mtndir/monotonerc <<EOF
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    24
function get_passphrase(keypair_id)
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    25
    return "passphrase"
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    26
end
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    27
EOF
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    28
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    29
echo % create monotone repository
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    30
mtn db init --db=repo.mtn
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    31
mtn --db=repo.mtn --branch=com.selenic.test setup workingdir
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    32
cd workingdir
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    33
echo a > a
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    34
mkdir dir
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    35
echo b > dir/b
8099
3cdf4872941a convert/mtn: handle new files in moved directories (issue1619)
Patrick Mezard <pmezard@gmail.com>
parents: 8050
diff changeset
    36
echo d > dir/d
6372
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    37
python -c 'file("bin", "wb").write("a\\x00b")'
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    38
echo c > c
8099
3cdf4872941a convert/mtn: handle new files in moved directories (issue1619)
Patrick Mezard <pmezard@gmail.com>
parents: 8050
diff changeset
    39
mtn add a dir/b dir/d c bin
6372
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    40
mtn ci -m initialize
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    41
echo % update monotone working directory
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    42
mtn mv a dir/a
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    43
echo a >> dir/a
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    44
echo b >> dir/b
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    45
mtn drop c
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    46
python -c 'file("bin", "wb").write("b\\x00c")'
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    47
mtn ci -m update1
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    48
cd ..
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    49
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    50
echo % convert once
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    51
hg convert -s mtn repo.mtn
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    52
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    53
cd workingdir
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    54
echo e > e
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    55
mtn add e
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    56
mtn drop dir/b
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    57
mtn mv bin bin2
6633
67a2d2d9bf21 test-convert-mtn: test descriptions with quotes
Patrick Mezard <pmezard@gmail.com>
parents: 6396
diff changeset
    58
mtn ci -m 'update2 "with" quotes'
8050
087cc65bebff convert/mtn: record changes from directory renames (issue1587)
Patrick Mezard <pmezard@gmail.com>
parents: 6873
diff changeset
    59
echo '% test directory move'
087cc65bebff convert/mtn: record changes from directory renames (issue1587)
Patrick Mezard <pmezard@gmail.com>
parents: 6873
diff changeset
    60
mkdir -p dir1/subdir1
087cc65bebff convert/mtn: record changes from directory renames (issue1587)
Patrick Mezard <pmezard@gmail.com>
parents: 6873
diff changeset
    61
mkdir -p dir1/subdir2_other
087cc65bebff convert/mtn: record changes from directory renames (issue1587)
Patrick Mezard <pmezard@gmail.com>
parents: 6873
diff changeset
    62
echo file1 > dir1/subdir1/file1
087cc65bebff convert/mtn: record changes from directory renames (issue1587)
Patrick Mezard <pmezard@gmail.com>
parents: 6873
diff changeset
    63
echo file2 > dir1/subdir2_other/file1
087cc65bebff convert/mtn: record changes from directory renames (issue1587)
Patrick Mezard <pmezard@gmail.com>
parents: 6873
diff changeset
    64
mtn add dir1/subdir1/file1 dir1/subdir2_other/file1
087cc65bebff convert/mtn: record changes from directory renames (issue1587)
Patrick Mezard <pmezard@gmail.com>
parents: 6873
diff changeset
    65
mtn ci -m createdir1
087cc65bebff convert/mtn: record changes from directory renames (issue1587)
Patrick Mezard <pmezard@gmail.com>
parents: 6873
diff changeset
    66
mtn rename dir1/subdir1 dir1/subdir2
087cc65bebff convert/mtn: record changes from directory renames (issue1587)
Patrick Mezard <pmezard@gmail.com>
parents: 6873
diff changeset
    67
mtn ci -m movedir1
087cc65bebff convert/mtn: record changes from directory renames (issue1587)
Patrick Mezard <pmezard@gmail.com>
parents: 6873
diff changeset
    68
echo '% test subdirectory move'
6377
2cf67d007f41 test-convert-mtn: test directory move
Patrick Mezard <pmezard@gmail.com>
parents: 6376
diff changeset
    69
mtn mv dir dir2
8099
3cdf4872941a convert/mtn: handle new files in moved directories (issue1619)
Patrick Mezard <pmezard@gmail.com>
parents: 8050
diff changeset
    70
echo newfile > dir2/newfile
3cdf4872941a convert/mtn: handle new files in moved directories (issue1619)
Patrick Mezard <pmezard@gmail.com>
parents: 8050
diff changeset
    71
mtn drop dir2/d
3cdf4872941a convert/mtn: handle new files in moved directories (issue1619)
Patrick Mezard <pmezard@gmail.com>
parents: 8050
diff changeset
    72
mtn add dir2/newfile
6377
2cf67d007f41 test-convert-mtn: test directory move
Patrick Mezard <pmezard@gmail.com>
parents: 6376
diff changeset
    73
mtn ci -m movedir
6396
18eeabae6148 test-convert-mtn: test directory deletion
Patrick Mezard <pmezard@gmail.com>
parents: 6377
diff changeset
    74
# Test directory removal with empty directory
18eeabae6148 test-convert-mtn: test directory deletion
Patrick Mezard <pmezard@gmail.com>
parents: 6377
diff changeset
    75
mkdir dir2/dir
18eeabae6148 test-convert-mtn: test directory deletion
Patrick Mezard <pmezard@gmail.com>
parents: 6377
diff changeset
    76
mkdir dir2/dir/subdir
18eeabae6148 test-convert-mtn: test directory deletion
Patrick Mezard <pmezard@gmail.com>
parents: 6377
diff changeset
    77
echo f > dir2/dir/subdir/f
18eeabae6148 test-convert-mtn: test directory deletion
Patrick Mezard <pmezard@gmail.com>
parents: 6377
diff changeset
    78
mkdir dir2/dir/emptydir
6873
39b4db2ea6ed Make test-convert-mtn pass on systems where mtn add -R uses different order
Thomas Arendsen Hein <thomas@intevation.de>
parents: 6633
diff changeset
    79
mtn add --quiet -R dir2/dir
6396
18eeabae6148 test-convert-mtn: test directory deletion
Patrick Mezard <pmezard@gmail.com>
parents: 6377
diff changeset
    80
mtn ci -m emptydir
18eeabae6148 test-convert-mtn: test directory deletion
Patrick Mezard <pmezard@gmail.com>
parents: 6377
diff changeset
    81
mtn drop -R dir2/dir
18eeabae6148 test-convert-mtn: test directory deletion
Patrick Mezard <pmezard@gmail.com>
parents: 6377
diff changeset
    82
mtn ci -m dropdirectory
6372
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    83
cd ..
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    84
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    85
echo % convert incrementally
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    86
hg convert -s mtn repo.mtn
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    87
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    88
glog()
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    89
{
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    90
    hg glog --template '#rev# "#desc|firstline#" files: #files#\n' "$@"
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    91
}
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    92
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    93
cd repo.mtn-hg
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    94
hg up -C
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    95
glog
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    96
echo % manifest
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    97
hg manifest
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    98
echo % contents
6377
2cf67d007f41 test-convert-mtn: test directory move
Patrick Mezard <pmezard@gmail.com>
parents: 6376
diff changeset
    99
cat dir2/a
6396
18eeabae6148 test-convert-mtn: test directory deletion
Patrick Mezard <pmezard@gmail.com>
parents: 6377
diff changeset
   100
test -d dir2/dir && echo 'removed dir2/dir is still there!'
8050
087cc65bebff convert/mtn: record changes from directory renames (issue1587)
Patrick Mezard <pmezard@gmail.com>
parents: 6873
diff changeset
   101
087cc65bebff convert/mtn: record changes from directory renames (issue1587)
Patrick Mezard <pmezard@gmail.com>
parents: 6873
diff changeset
   102
echo % file move
087cc65bebff convert/mtn: record changes from directory renames (issue1587)
Patrick Mezard <pmezard@gmail.com>
parents: 6873
diff changeset
   103
hg log -v -C -r 1 | grep copies
087cc65bebff convert/mtn: record changes from directory renames (issue1587)
Patrick Mezard <pmezard@gmail.com>
parents: 6873
diff changeset
   104
echo % check directory move
087cc65bebff convert/mtn: record changes from directory renames (issue1587)
Patrick Mezard <pmezard@gmail.com>
parents: 6873
diff changeset
   105
hg manifest -r 4
087cc65bebff convert/mtn: record changes from directory renames (issue1587)
Patrick Mezard <pmezard@gmail.com>
parents: 6873
diff changeset
   106
test -d dir1/subdir2 || echo 'new dir1/subdir2 does not exist!'
087cc65bebff convert/mtn: record changes from directory renames (issue1587)
Patrick Mezard <pmezard@gmail.com>
parents: 6873
diff changeset
   107
test -d dir1/subdir1 && echo 'renamed dir1/subdir1 is still there!'
087cc65bebff convert/mtn: record changes from directory renames (issue1587)
Patrick Mezard <pmezard@gmail.com>
parents: 6873
diff changeset
   108
hg log -v -C -r 4 | grep copies
8099
3cdf4872941a convert/mtn: handle new files in moved directories (issue1619)
Patrick Mezard <pmezard@gmail.com>
parents: 8050
diff changeset
   109
echo % check file remove with directory move
3cdf4872941a convert/mtn: handle new files in moved directories (issue1619)
Patrick Mezard <pmezard@gmail.com>
parents: 8050
diff changeset
   110
hg manifest -r 5
6396
18eeabae6148 test-convert-mtn: test directory deletion
Patrick Mezard <pmezard@gmail.com>
parents: 6377
diff changeset
   111
exit 0
6372
8f79820443a4 Add a test for monotone conversion
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
   112