tests/test-convert-cvs-synthetic
author Christian Ebert <blacktrash@gmx.net>
Wed, 05 Aug 2009 17:20:47 +0200
changeset 9306 7bd1b663727d
parent 8350 1f0f01bc86a5
child 9543 56a5f80556f5
permissions -rwxr-xr-x
keyword: remove "help keyword" from test Testing help output does not make sense as we have no way to check for errors in content which would be the only reasonable test here.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7862
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
     1
#!/bin/sh
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
     2
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
     3
# This feature requires use of builtin cvsps!
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
     4
"$TESTDIR/hghave" cvs || exit 80
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
     5
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
     6
set -e
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
     7
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
     8
echo "[extensions]" >> $HGRCPATH
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
     9
echo "convert = " >> $HGRCPATH
8249
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
    10
echo "graphlog = " >> $HGRCPATH
7862
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
    11
echo "[convert]" >> $HGRCPATH
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
    12
echo "cvsps=builtin" >> $HGRCPATH
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
    13
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
    14
echo % create cvs repository with one project
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
    15
mkdir cvsrepo
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
    16
cd cvsrepo
8350
1f0f01bc86a5 tests: avoid export FOO=bar bashism
Martin Geisler <mg@lazybytes.net>
parents: 8249
diff changeset
    17
CVSROOT=`pwd`
1f0f01bc86a5 tests: avoid export FOO=bar bashism
Martin Geisler <mg@lazybytes.net>
parents: 8249
diff changeset
    18
export CVSROOT
1f0f01bc86a5 tests: avoid export FOO=bar bashism
Martin Geisler <mg@lazybytes.net>
parents: 8249
diff changeset
    19
CVS_OPTIONS=-f
1f0f01bc86a5 tests: avoid export FOO=bar bashism
Martin Geisler <mg@lazybytes.net>
parents: 8249
diff changeset
    20
export CVS_OPTIONS
7862
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
    21
cd ..
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
    22
8081
6c3b8132078e issue1577: fix broken test by assuming less about CVS output.
Greg Ward <greg-hg@gerg.ca>
parents: 7862
diff changeset
    23
filterpath()
6c3b8132078e issue1577: fix broken test by assuming less about CVS output.
Greg Ward <greg-hg@gerg.ca>
parents: 7862
diff changeset
    24
{
6c3b8132078e issue1577: fix broken test by assuming less about CVS output.
Greg Ward <greg-hg@gerg.ca>
parents: 7862
diff changeset
    25
    eval "$@" | sed "s:$CVSROOT:*REPO*:g"
6c3b8132078e issue1577: fix broken test by assuming less about CVS output.
Greg Ward <greg-hg@gerg.ca>
parents: 7862
diff changeset
    26
}
6c3b8132078e issue1577: fix broken test by assuming less about CVS output.
Greg Ward <greg-hg@gerg.ca>
parents: 7862
diff changeset
    27
7862
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
    28
cvscall()
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
    29
{
8081
6c3b8132078e issue1577: fix broken test by assuming less about CVS output.
Greg Ward <greg-hg@gerg.ca>
parents: 7862
diff changeset
    30
    echo cvs -f "$@"
6c3b8132078e issue1577: fix broken test by assuming less about CVS output.
Greg Ward <greg-hg@gerg.ca>
parents: 7862
diff changeset
    31
    cvs -f "$@" 2>&1
7862
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
    32
}
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
    33
8081
6c3b8132078e issue1577: fix broken test by assuming less about CVS output.
Greg Ward <greg-hg@gerg.ca>
parents: 7862
diff changeset
    34
# output of 'cvs ci' varies unpredictably, so just discard it
6c3b8132078e issue1577: fix broken test by assuming less about CVS output.
Greg Ward <greg-hg@gerg.ca>
parents: 7862
diff changeset
    35
cvsci()
6c3b8132078e issue1577: fix broken test by assuming less about CVS output.
Greg Ward <greg-hg@gerg.ca>
parents: 7862
diff changeset
    36
{
6c3b8132078e issue1577: fix broken test by assuming less about CVS output.
Greg Ward <greg-hg@gerg.ca>
parents: 7862
diff changeset
    37
    echo cvs -f ci "$@"
6c3b8132078e issue1577: fix broken test by assuming less about CVS output.
Greg Ward <greg-hg@gerg.ca>
parents: 7862
diff changeset
    38
    cvs -f ci "$@" >/dev/null 2>&1
6c3b8132078e issue1577: fix broken test by assuming less about CVS output.
Greg Ward <greg-hg@gerg.ca>
parents: 7862
diff changeset
    39
}
6c3b8132078e issue1577: fix broken test by assuming less about CVS output.
Greg Ward <greg-hg@gerg.ca>
parents: 7862
diff changeset
    40
6c3b8132078e issue1577: fix broken test by assuming less about CVS output.
Greg Ward <greg-hg@gerg.ca>
parents: 7862
diff changeset
    41
filterpath cvscall -d "$CVSROOT" init
7862
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
    42
mkdir cvsrepo/proj
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
    43
8081
6c3b8132078e issue1577: fix broken test by assuming less about CVS output.
Greg Ward <greg-hg@gerg.ca>
parents: 7862
diff changeset
    44
cvscall -q co proj
7862
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
    45
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
    46
echo % create file1 on the trunk
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
    47
cd proj
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
    48
touch file1
8081
6c3b8132078e issue1577: fix broken test by assuming less about CVS output.
Greg Ward <greg-hg@gerg.ca>
parents: 7862
diff changeset
    49
cvscall -Q add file1
6c3b8132078e issue1577: fix broken test by assuming less about CVS output.
Greg Ward <greg-hg@gerg.ca>
parents: 7862
diff changeset
    50
cvsci -m"add file1 on trunk" file1
7862
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
    51
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
    52
echo % create two branches
8081
6c3b8132078e issue1577: fix broken test by assuming less about CVS output.
Greg Ward <greg-hg@gerg.ca>
parents: 7862
diff changeset
    53
cvscall -q tag -b v1_0
6c3b8132078e issue1577: fix broken test by assuming less about CVS output.
Greg Ward <greg-hg@gerg.ca>
parents: 7862
diff changeset
    54
cvscall -q tag -b v1_1
7862
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
    55
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
    56
echo % create file2 on branch v1_0
8249
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
    57
cvscall -Q up -rv1_0
7862
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
    58
touch file2
8081
6c3b8132078e issue1577: fix broken test by assuming less about CVS output.
Greg Ward <greg-hg@gerg.ca>
parents: 7862
diff changeset
    59
cvscall -Q add file2
8249
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
    60
cvsci -m"add file2" file2
7862
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
    61
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
    62
echo % create file3, file4 on branch v1_1
8081
6c3b8132078e issue1577: fix broken test by assuming less about CVS output.
Greg Ward <greg-hg@gerg.ca>
parents: 7862
diff changeset
    63
cvscall -Q up -rv1_1
7862
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
    64
touch file3
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
    65
touch file4
8081
6c3b8132078e issue1577: fix broken test by assuming less about CVS output.
Greg Ward <greg-hg@gerg.ca>
parents: 7862
diff changeset
    66
cvscall -Q add file3 file4
6c3b8132078e issue1577: fix broken test by assuming less about CVS output.
Greg Ward <greg-hg@gerg.ca>
parents: 7862
diff changeset
    67
cvsci -m"add file3, file4 on branch v1_1" file3 file4
7862
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
    68
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
    69
echo % merge file2 from v1_0 to v1_1
8249
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
    70
cvscall -Q up -jv1_0
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
    71
cvsci -m"MERGE from v1_0: add file2"
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
    72
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
    73
# Step things up a notch: now we make the history really hairy, with
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
    74
# changes bouncing back and forth between trunk and v1_2 and merges
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
    75
# going both ways.  (I.e., try to model the real world.)
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
    76
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
    77
echo "% create branch v1_2"
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
    78
cvscall -Q up -A
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
    79
cvscall -q tag -b v1_2
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
    80
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
    81
echo "% create file5 on branch v1_2"
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
    82
cvscall -Q up -rv1_2
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
    83
touch file5
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
    84
cvs -Q add file5
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
    85
cvsci -m"add file5 on v1_2"
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
    86
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
    87
echo "% create file6 on trunk post-v1_2"
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
    88
cvscall -Q up -A
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
    89
touch file6
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
    90
cvscall -Q add file6
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
    91
cvsci -m"add file6 on trunk post-v1_2"
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
    92
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
    93
echo "% merge file5 from v1_2 to trunk"
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
    94
cvscall -Q up -A
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
    95
cvscall -Q up -jv1_2 file5
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
    96
cvsci -m"MERGE from v1_2: add file5"
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
    97
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
    98
echo "% merge file6 from trunk to v1_2"
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
    99
cvscall -Q up -rv1_2
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
   100
cvscall up -jHEAD file6
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
   101
cvsci -m"MERGE from HEAD: add file6"
8081
6c3b8132078e issue1577: fix broken test by assuming less about CVS output.
Greg Ward <greg-hg@gerg.ca>
parents: 7862
diff changeset
   102
6c3b8132078e issue1577: fix broken test by assuming less about CVS output.
Greg Ward <greg-hg@gerg.ca>
parents: 7862
diff changeset
   103
echo % cvs rlog output
6c3b8132078e issue1577: fix broken test by assuming less about CVS output.
Greg Ward <greg-hg@gerg.ca>
parents: 7862
diff changeset
   104
filterpath cvscall -q rlog proj | egrep '^(RCS file|revision)'
7862
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
   105
8249
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
   106
echo "% convert to hg (#1)"
7862
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
   107
cd ..
8249
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
   108
filterpath hg convert --datesort proj proj.hg
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
   109
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
   110
echo "% hg glog output (#1)"
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
   111
hg -R proj.hg glog --template "{rev} {desc}\n"
7862
02981000012e cvsps: recognize and eliminate CVS' synthetic "file added" revisions.
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
   112
8249
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
   113
echo "% convert to hg (#2: with merge detection)"
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
   114
filterpath hg convert \
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
   115
  --config convert.cvsps.mergefrom="\"^MERGE from (\S+):\"" \
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
   116
  --datesort \
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
   117
  proj proj.hg2
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
   118
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
   119
echo "% hg glog output (#2)"
2c7c973c2abd Reproduce crash where synthetic revs break merge detection (issue1578).
Greg Ward <greg-hg@gerg.ca>
parents: 8081
diff changeset
   120
hg -R proj.hg2 glog --template "{rev} {desc}\n"