test-update-branches
81 lines
| 1.8 KiB
| text/plain
|
TextLexer
/ tests / test-update-branches
Stuart W Marks
|
r9716 | #!/bin/sh | ||
# Construct the following history tree: | ||||
# | ||||
# @ 5:e1bb631146ca b1 | ||||
# | | ||||
# o 4:a4fdb3b883c4 0:b608b9236435 b1 | ||||
# | | ||||
# | o 3:4b57d2520816 1:44592833ba9f | ||||
# | | | ||||
# | | o 2:063f31070f65 | ||||
# | |/ | ||||
# | o 1:44592833ba9f | ||||
# |/ | ||||
# o 0:b608b9236435 | ||||
hg init | ||||
echo foo > foo | ||||
echo zero > a | ||||
hg ci -qAm0 | ||||
echo one > a ; hg ci -m1 | ||||
echo two > a ; hg ci -m2 | ||||
hg up -q 1 | ||||
echo three > a ; hg ci -qm3 | ||||
hg up -q 0 | ||||
hg branch -q b1 | ||||
echo four > a ; hg ci -qm4 | ||||
echo five > a ; hg ci -qm5 | ||||
echo % initial repo state | ||||
echo | ||||
hg --config 'extensions.graphlog=' \ | ||||
glog --template '{rev}:{node|short} {parents} {branches}\n' | ||||
# Test helper functions. | ||||
revtest () { | ||||
msg=$1 | ||||
dirtyflag=$2 # 'clean' or 'dirty' | ||||
startrev=$3 | ||||
targetrev=$4 | ||||
opt=$5 | ||||
echo % revtest $msg $startrev $targetrev | ||||
hg up -qC $startrev | ||||
test $dirtyflag = dirty && echo dirty > foo | ||||
hg up $opt $targetrev | ||||
hg parent --template 'parent={rev}\n' | ||||
hg stat | ||||
} | ||||
norevtest () { | ||||
msg=$1 | ||||
dirtyflag=$2 # 'clean' or 'dirty' | ||||
startrev=$3 | ||||
opt=$4 | ||||
echo % norevtest $msg $startrev | ||||
hg up -qC $startrev | ||||
test $dirtyflag = dirty && echo dirty > foo | ||||
hg up $opt | ||||
hg parent --template 'parent={rev}\n' | ||||
hg stat | ||||
} | ||||
# Test cases are documented in a table in the update function of merge.py. | ||||
# Cases are run as shown in that table, row by row. | ||||
norevtest 'none clean linear' clean 4 | ||||
norevtest 'none clean same' clean 2 | ||||
revtest 'none clean linear' clean 1 2 | ||||
revtest 'none clean same' clean 2 3 | ||||
revtest 'none clean cross' clean 3 4 | ||||
revtest 'none dirty linear' dirty 1 2 | ||||
revtest 'none dirty same' dirty 2 3 | ||||
revtest 'none dirty cross' dirty 3 4 | ||||
revtest '-C dirty linear' dirty 1 2 -C | ||||
revtest '-c dirty linear' dirty 1 2 -c | ||||
norevtest '-c clean same' clean 2 -c | ||||
revtest '-cC dirty linear' dirty 1 2 -cC | ||||