1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145
|
#! /bin/sh
# basic.sh: Testing for the basic operation of "delta".
# Import common functions & definitions.
. ../common/test-common
remove command.log log log.stdout log.stderr
mkdir test 2>/dev/null
# Create the input files.
cat > base <<EOF
This is a test file containing nothing interesting.
EOF
for i in 1 2 3 4 5 6
do
cat base > test/passwd.$i
echo "This is file number" $i >> test/passwd.$i
done
s=test/s.passwd
remove base test/[xz].*
remove test/[spx].passwd
remove passwd
#
# Create an SCCS file with several branches to work on.
# We generally ignore stderr output since we produce "Warning: no id keywords"
# more often than "real" SCCS.
#
docommand B1 "${admin} -itest/passwd.1 $s" 0 \
"" IGNORE
docommand B2 "${get} -e $s" 0 \
"1.1\nnew delta 1.2\n2 lines\n" IGNORE
cp test/passwd.2 passwd
docommand B3 "${delta} -y\"\" $s" 0 \
"1.2\n1 inserted\n1 deleted\n1 unchanged\n" IGNORE
docommand B4 "${get} -e $s" 0 \
"1.2\nnew delta 1.3\n2 lines\n" IGNORE
cp test/passwd.3 passwd
docommand B5 "${delta} -y'' $s" 0 \
"1.3\n1 inserted\n1 deleted\n1 unchanged\n" IGNORE
docommand B6 "${get} -e $s" 0 \
"1.3\nnew delta 1.4\n2 lines\n" IGNORE
cp test/passwd.4 passwd
docommand B7 "${delta} -y'' $s" 0 \
"1.4\n1 inserted\n1 deleted\n1 unchanged\n" IGNORE
docommand B8 "${get} -e $s" 0 \
"1.4\nnew delta 1.5\n2 lines\n" IGNORE
cp test/passwd.5 passwd
docommand B9 "${delta} -y'' $s" 0 \
"1.5\n1 inserted\n1 deleted\n1 unchanged\n" IGNORE
docommand B10 "${get} -e -r1.3 $s" 0 \
"1.3\nnew delta 1.3.1.1\n2 lines\n" IGNORE
cp test/passwd.6 passwd
docommand B11 "${delta} -y'' $s" 0 \
"1.3.1.1\n1 inserted\n1 deleted\n1 unchanged\n" IGNORE
remove passwd command.log $s
###
### Other stuff
###
g=foo; for n in p z x s q; do eval $n=$n.${g}; done
files="$s $p $z $x $s $q"
remove $files
cat > $g <<EOF
first line
second line
third line
fourth line
fifth line
sixth line
seventh line
eighth line
ninth line
EOF
docommand C1 "${admin} -i${g} $s" 0 IGNORE IGNORE
remove $g
docommand C2 "${get} -e $s" 0 IGNORE IGNORE
rename ${g} ${g}.old
sed -e '2,4 d' < ${g}.old > $g || miscarry "sed failed"
docommand C3 "${delta} -y $s" 0 IGNORE IGNORE
docommand C4 "${get} -p $s" 0 "first line
fifth line
sixth line
seventh line
eighth line
ninth line
" IGNORE
docommand C5 "${get} -e $s" 0 IGNORE IGNORE
rename ${g} ${g}.old
sed -e '2,4 d' < ${g}.old > $g || miscarry "sed failed"
docommand C6 "${delta} -y $s" 0 IGNORE IGNORE
docommand C7 "${get} -p $s" 0 "first line
eighth line
ninth line
" IGNORE
# If we try to do a delta again, it should fail because we have no
# outstanding edits - that is, there is no p-file.
docommand C8 "${delta} -y $s" 1 IGNORE IGNORE
# Now we try checking in a SID which we do not have checked out.
docommand C9 "${get} -e $s" 0 IGNORE IGNORE
docommand C10 "${delta} -y -r1.1 $s" 1 IGNORE IGNORE
remove $p $g
# ... and checking in a SID which is in the p-file but not the s-file...
docommand C11 "${get} -e -r1.3 $s" 0 IGNORE IGNORE
rename ${p} ${p}.old
( sed -e 's/1\.3/3.1/' < ${p}.old | sed -e 's/1\.4/3.2/' > $p ) || miscarry "sed failed"
remove ${p}.old
docommand C12 "${delta} -y -r1.1 $s" 1 IGNORE IGNORE
remove $g
# If two edits are outstanding, it is an error not to use the "-r" option
docommand C13 "${get} -e -r1.2 $s" 0 IGNORE IGNORE
docommand C14 "${delta} -y $s" 1 IGNORE IGNORE
# It is also an error to specify a SID which is not being edited.
docommand C15 "${delta} -y -r1.3 $s" 1 IGNORE IGNORE
# It is an error to check in a file containing no SCCS keywords when the
# "i" flag is set.
docommand C16 "${admin} -fi $s" 0 "" IGNORE
docommand C17 "${delta} -y -r1.2 $s" 1 "" IGNORE
# ... but if we turn that flag off again, it should work fine.
docommand C18 "${admin} -di $s" 0 "" IGNORE
docommand C19 "${delta} -y -r1.2 $s" 0 IGNORE IGNORE
rm -rf test
remove passwd command.log $files
success
|