# To run these tests you will need the 'itest.pl' script.
cd delete
cd AddDeleted
add B
delete B
add A
branch A B
delete B
delete B A
add A
-Ro test integ A B
cd ..
cd DeleteClobbered
add A
branch A B
edit A
edit B
copy A B
delete A
test integ A B
cd ..
cd DeleteDirtyBranch
add A
branch-edit A B
delete A
-Ro test !integ A B
-Ds assert integ A B
cd ..
cd ObsoleteDelete
add A
branch A C
branch C B
delete A
-Ds delete A B
add B
-i copy B C
delete B
-Ds delete B C
add C
-Ds test !integ A C
cd ..
cd ObsoleteBranch
add main
branch main next
branch main eval
delete eval
edit next
copy next main
copy next eval
delete next
-f copy main next
delete main
-f copy main next
test !integ eval main
cd ..
cd OverrideDelete
add D
branch D A
edit A
branch A B
delete B
-f branch D B
branch B C
-f copy A B
test integ B C
cd ..
cd ..
cd merge
cd Asymmetric
add main 8
edit main
branch main dev
edit dev
edit main
merge dev main
edit main
branch main rel
edit main
edit dev
merge main dev
edit dev
edit rel
merge rel main
test base rel dev main#5 main#4 main#3
cd ..
cd BranchIgnore
add C
branch-pend C B
edit B
branch C D
branch-pend B A
edit A
branch D E
ignore B E
test base A E B#1
cd ..
cd CherryCopy
add A
branch A B
branch B C
edit A
copy A B
edit A
copy A B
merge B#3,3 C
test !equal A C
test integ A C
test integ B C
cd ..
cd CherryReverse
add a
branch a b
edit a
edit b
edit b
dirty-pend b#2,2 a
dirty b#3,3 a
test base a#3,3 b a#2
cd ..
cd CombineCredit
add a 2
branch a b
edit a
edit b
merge a b
branch a c
merge c b
-cC test !exist b#4
cd ..
cd Commutativity
add X 2
branch X Z
branch X Y
edit X 1 B1
edit Y 1 B2
edit Z 2 D
dirty Y X 1 B3
merge Z Y
merge Z X
test base X Y Y#3 Y#2 Z#2 X#1
cd ..
cd CopyAfterIgnore
add B 6
branch B A
edit B
ignore B A
-f copy A#2,2 B
edit B
test base B A B#3 - B#2
cd ..
cd EvilIgnore
add main 3
branch main rel
edit main 1 BAD CHANGE
edit rel 2 GOOD CHANGE
ignore main rel
edit main 3 GOOD CHANGE
merge rel main
test base main rel main#2
cd ..
cd FunnyBase
add A
branch A B
branch A C
edit A
edit B
edit C
edit A
merge A#3,3 B
merge A#3,3 C
test base A B A#1 - C#3 C#2
cd ..
cd FwdPort
add main 15
branch main r05.2
edit main
edit r05.2
merge r05.2 main
edit r05.2
merge r05.2 main
edit main
branch main r06.1
edit r06.1
merge r06.1 main
edit r06.1
edit main
merge r06.1 main
edit r06.1
merge r06.1 main
edit r06.1
edit r05.2
edit main
merge r05.2 r06.1
merge r05.2 main
assert exist r05.2#4 r06.1#6 main#11
test base r06.1 main r06.1#4 r06.1#1 r05.2#4 main#1
cd ..
cd IgnoreSync
add foo
edit foo
add bar
-i ignore foo bar
edit foo
test base foo bar foo#2
cd ..
cd MergeIgnore
add main
branch main b2
branch main b4
edit main
edit b2
edit main
merge main b2
ignore main b4
test base b2 b4 main#1 - main#3
merge b2 b4
test equal b4#3 b2#2
cd ..
cd OverrideIgnore
add A
branch A C
edit A
ignore A C
branch C B
edit B
-f merge A B
edit B
test base B C B#1 - A#2
cd ..
cd OverrideIgnored
add A
branch A C
edit A
ignore A C
branch C B
edit B
-f merge A B
edit B
-f ignore B#3,3 C
test base B C A#2 - B#1
cd ..
cd OverrideRollback
add A
branch A B
edit B
edit A
branch B C
copy A B
copy B C
-f dirty B#2,2 C
edit B
branch C D
test base B D B#3 - - B#2
cd ..
cd PropIgnore
add A
branch A B
branch B C
edit A
ignore A B
merge B C
test !integ A C
cd ..
cd PropIgnore2
add A
branch A B
edit B
branch A C
branch C D
ignore B A
ignore A C
copy C D
test !integ A D
cd ..
cd PropRebase
add foo
branch foo baz
add bar
-i ignore bar foo
edit bar
copy bar foo
edit bar
copy bar foo
test base foo baz foo#1
cd ..
cd UndoRenameInSource
add main_foo 3
edit main_foo
branch main_foo dev_foo
edit main_foo
edit dev_foo
rename main_foo main_bar
-f rename main_bar main_foo
test base main_foo dev_foo main_foo#2
merge main_foo dev_foo
cd ..
cd UndoRenameInTarget
add main_foo 3
edit main_foo
branch main_foo dev_foo
edit main_foo
edit dev_foo
rename dev_foo dev_bar
-f rename dev_bar dev_foo
test base main_foo dev_foo main_foo#2
merge main_foo dev_foo
cd ..
cd ..
cd readd
cd src
add C
branch C B
edit C
branch C A
edit A
edit B
delete A
readd A#2
test base A B C#1
cd ..
cd tgt
add C
branch C B
edit C
branch C A
edit A
edit B
delete B
readd B#2
test base A B C#1
cd ..
cd mid
add C
branch C B
edit C
delete C
readd C#2
branch C A
edit A
edit B
test base A B C#1
cd ..
cd ..
cd rollback
cd IgnoreRollback
add A
edit A
branch A B
branch B C
-f copy A#1 B
ignore B C
test !integ B C
cd ..
cd NotRollback1
add foo
branch foo bar
branch bar baz
branch foo qux
-f copy baz bar
-f copy bar foo
test !base foo qux foo#1?foo#2
cd ..
cd NotRollback2
add foo
branch foo bar
branch bar baz
branch foo qux
edit foo
-f copy baz bar
-f copy bar foo
test !base foo qux foo#1?foo#2?foo#3
cd ..
cd Rollback1
add foo
branch foo bar
branch bar baz
edit foo
branch foo qux
edit qux
-f copy baz bar
-f copy bar foo
test base foo qux foo#2
cd ..
cd Rollback2
add foo
edit foo
branch foo bar
branch bar baz
edit baz
-f copy foo#1 bar
test base bar baz foo#2
cd ..
cd PostRollback1
add foo
branch foo bar
branch bar baz
edit foo
branch foo qux
edit qux
-f copy baz bar
-f copy bar foo
merge foo qux
test !base foo qux foo#1?foo#2
cd ..
cd PostRollback2
add foo
edit foo
branch foo bar
branch bar baz
edit baz
-f copy foo#1 bar
merge bar baz
test !base bar baz foo#1?foo#2
cd ..
cd MergeRollback1
add foo
branch foo bar
branch bar baz
edit foo
branch foo qux
edit qux
branch qux ola
-f copy baz bar
-f copy bar foo
merge foo qux
test base qux ola qux#2 foo#2
cd ..
cd MergeRollback2
add foo
edit foo
branch foo bar
branch bar baz
branch baz qux
edit baz
-f copy foo#1 bar
merge bar baz
test base baz qux foo#2
cd ..
cd ReBaseDev
add main
edit main
branch main dev
edit dev
-f copy main#1 dev
test integ main dev
cd ..
cd PickObsolete
add B
branch B A
branch B C
edit B
edit A
copy A B
merge B#2 A
merge B#2,2 A
test !exist A#3
merge B#2 C
test exist C#2
cd ..
cd UnRollback1
add foo
branch foo bar
branch bar baz
edit foo
branch foo qux
edit qux
-f copy baz bar
-f copy bar foo
merge foo qux
-f copy foo#2 baz
copy baz bar
copy bar foo
test base foo qux foo#3
cd ..
cd UnRollback2
add foo
edit foo
branch foo bar
branch bar baz
edit baz
-f copy foo#1 bar
merge bar baz
-f copy foo#2 bar
test base bar baz bar#2
cd ..
cd ..
cd eviltwin
cd movemistake
add 1a
branch 1... 2...
edit 1a
merge 1... 2...
move 1a 1b
delete 1b
readd 1a#1
ignore 1... 2...
test exist 2a#3
cd ..
cd movereadd
add A1
branch A... C...
move A1 A2
-f copy C... A...
delete A2
branch A... B...
test !integ A... B...
test integ A... C...
cd ..
cd moveundone
add A1
branch A1 B1
move B1 B2
edit A1
delete B2
readd B1#1
ignore A... B...
merge B... A...
test !exist A2
cd ..
cd postmovereadd
add foo1
branch foo1 bar1
move foo1 foo2
add foo1
edit foo1
merge foo... bar...
test integ foo... bar... bar1
cd ..
cd postmovebackmove
add A1
branch A1 B1
move A1 A2
add A3
move A3 A1
move A1 A3
merge A... B...
test exist B2 B3
cd ..
cd readdnotmove
add A1
branch A1 B1
move B1 B2
delete-pend B2
readd B1#1
merge B... A...
-Di copy A1 B1
edit A1
copy A1 B1
delete-pend B1
add B2
merge-revert B... A...
test exist A2
cd ..
cd replace
cd main
add ipipe
edit ipipe 1 IPIPE2
cd ..
branch main/... dev/...
move dev/ipipe dev/ipipe2
add dev/ipipe
edit dev/ipipe 1 IPIPE1
merge-revert dev/... main/...
merge dev/... main/...
test exist main/ipipe main/ipipe2
cd ..
cd sandbox
cd main
add foo
cd ..
branch main/... rmt/...
move main/foo main/bar
cd rmt
delete foo
add bar
cd ..
merge-revert rmt/... main/...
test exist main/bar#2
cd ..
cd twomoves
add 1a
branch 1... 2...
move 1a 1b
readd 1a#1
move 1a 1c
cd ..
cd ..
cd ignore
cd Rebranch
add source
branch source target
branch source branch
delete source
delete source target
-Rd ignore source branch
-f copy branch source
test integ source target
cd ..
cd ..
cd move
cd move1-0
add A1
branch A1 B1
move B1 B2
edit A1
-Ro assert baseless B1 A1
test integ A... B... B2
merge A... B...
test integ B... A...
cd ..
cd move1-1
add A1
branch A1 B1
move B1 B2
edit A1
add B3
move B3 B1
-Ro assert baseless B1 A1
test integ A... B... B2
cd ..
cd move2-0
add A1
branch A1 B1
move B1 B2
edit B2
move B2 B3
edit A1
-Ro assert baseless B1 A1
test integ A... B... B3
cd ..
cd move2-1
add A1
branch A1 B1
move B1 B2
edit B2
move B2 B3
add B4
move B4 B1
edit A1
-Ro assert baseless B1 A1
test integ A... B... B3
cd ..
cd CherryMove
add A1
branch A... B...
move A1 A2
edit A2
edit A2
merge A...#3,3 B...
test !exist B2
-Rs merge A... B...
test exist B2
cd ..
cd ClobberMove1
add M1
edit M1
branch M1 A1
branch M1 B1
move A1 A2
edit A2
move M1 M2
copy A... M...
merge M... B...
test exist B2
cd ..
cd ClobberMove2
add A1
edit A1
branch A1 D1
move D1 D2
branch A1 B1
move B1 B2
edit B2
-d copy D2 A1
branch A1 C1
move A1 A2
copy B... A...
test integ A... C... C1
cd ..
cd ClobberMove3
add I1
branch I... M...
add I2
# if I2 is related to I1 the bug doesn't happen
branch M... P...
branch M... Q...
edit I2
move P1 P2
copy I2 P2
test integ P... Q... Q1
cd ..
cd ClobberMove4
add A1
branch A... B...
move A1 A2
move-pend B1 B2
copy A... B...
edit A2
copy A... B...
branch B... C...
branch C... D...
move D2 D1
merge D... C...
test exist C1
cd ..
cd DeletedClobber
add A1
branch A1 B1
branch A1 C1
branch B1 D1
branch A1 E1
branch C1 F1
branch C1 G1
branch G1 H1
move D1 D2
move-pend B1 B2
copy D2 B2
move-pend E1 E2
copy B2 E2
move-pend A1 A2
copy E2 A2
move-pend C1 C2
copy A2 C2
move-pend G1 G2
copy C2 G2
move-pend F1 F2
copy A2 F2
delete D2
copy D2 B2
add D2
copy D2 B2
copy B2 E2
copy E2 A2
copy A2 C2
delete D2
copy D2 B2
copy B2 E2
copy E2 A2
copy C2 F2
copy A2 C2
copy C2 F2
copy C2 G2
merge-revert F... H...
test !integ F... H...
cd ..
cd DeletedMove
add A1
branch A... B...
move A1 A2
delete A2
merge A... B...
test !exist B1
cd ..
cd FakeMove
add C1
branch C... F...
edit C1
copy C... F...
edit C1
copy C... F...
move F1 F2
edit F2
-d copy F... C...
edit C2
copy C... F...
edit C2
copy C... F...
edit F2
test integ F... C... C2
test integ F...#5,5 C... C2
cd ..
cd FakeMove2
add M1
branch M1 A1
branch A1 B1
move M1 M2
merge M... A...
delete-pend M2
add M1
copy M... A...
-Rd ignore A2 B1
copy A1 B1
-Z2 test !integ A... B...
cd ..
cd Grandchild
add A1
branch A... B...
move B1 B2
branch B... C...
test integ C... A... A1
cd ..
cd IgnoreDelete1
add M1
branch M... Z...
branch M... U...
branch U... X...
assert exist M1#1 U1#1 X1#1 Z1#1
edit U1
copy U... X...
edit X1
copy X... U...
merge U1#2 M1
copy M... Z...
merge U... M...
merge M... Z...
assert exist M1#3 U1#3 X1#3 Z1#3
branch Z... Y...
move X1 X2
merge X... U...
merge U... M...
merge M... Z...
-f copy Z2 Y2
delete Y1
-Rd ignore Y1 Z2
copy Z2 M2
copy M... U...
edit X2
copy X... U...
copy U... M...
copy M... Z...
copy Z2 Y2
-Z2 test !integ Y... Z...
cd ..
cd MoveOpen
add AA1
branch A... B...
branch AA1 AB1
edit AA1
edit AB1
move AA1 AA2
merge-pend AB... BA...
merge AA... BA...
test exist BA2
cd ..
cd OldConflict
add D3
branch D3 F3
move D3 D1
merge D... F...
branch D1 H1
branch H1 B1
edit D1
copy D1 H1
copy D1 F1
copy H1 B1
move D1 D2
merge D... F...
merge F... B...
test exist B2
cd ..
cd PropMove
cd A
add foo
cd ..
branch A/... B/...
branch B/... C/...
cd A
move foo bar
cd ..
cd B
edit foo
cd ..
merge B/... C/...
merge A/... B/...
merge B/... C/...
test equal C/bar#1 C/foo#2
test !integ C/... B/...
test integ C/... A/...
test integ B/... A/...
cd ..
cd IgnoreMove
cd A
add foo
cd ..
branch A/... B/...
cd A
move foo bar
cd ..
cd B
move foo ola
cd ..
ignore A/... B/...
cd A
edit bar
cd ..
merge A/... B/...
test !exist B/bar
cd ..
cd MergeMove
cd A/1
add foo
cd ../../
branch A/... B/...
cd A/1
move foo bar
cd ../../
cd B
move 1/... 2/...
cd ..
merge A/... B/...
test exist B/2/bar
cd ..
cd IgnoreMerge
cd A
add foo
cd ..
branch A/... B/...
cd A
move foo bar
cd ..
cd B
move foo ola
cd ..
ignore A/... B/...
move A/bar A/1/bar
merge A/... B/...
test exist B/1/ola
cd ..
cd MoveBack
cd main
add A
cd ..
branch main/... dev/...
move main/A main/B
merge main/... dev/...
assert exist dev/B
edit dev/B
move dev/B dev/A
merge dev/... main/...
test exist main/A#3
cd ..
cd MoveBase
add A1
branch A... B...
move A1 A2
merge A... B...
move A2 A3
edit B2
merge-revert B... A...
test exist A3#2
cd ..
cd MoveNewAdd
add A1
branch A... B...
move A1 A2
merge A... B...
add A1
move A1 A3
test !integ A... B... B2
cd ..
cd MoveReadded
add mainA
branch main... dev...
branch main... newdev...
delete mainA
readd mainA#1
move devA devB
move newdevA newdevB
merge newdev... main...
test integ dev... main... mainB
cd ..
cd MultiMove
add mainA
branch main... rel1...
branch main... rel2...
move mainA mainB
edit rel1A
edit rel2A
merge main... rel1...
merge main... rel2...
edit mainB
edit rel2B
ignore-pend rel1... main...
copy rel2... main...
edit mainB
edit rel1B
edit rel2B
copy main... rel1...
copy main... rel2...
move mainB mainC
edit rel1B
edit rel2B
test base main... rel1... mainB#4
test base main... rel2... mainB#4
cd ..
cd PickBase
add A1
branch A... B...
edit A1
copy A... B...
branch B... C...
move A1 A2
copy A... B...
move A2 A3
edit A3
copy A... B...
copy B... C...
move A3 A4
edit A4
copy A... B...
copy B... C...
move A4 A3
copy A... B...
test mbase B... C... C4 - - C1
cd ..
cd ReAddSource
add a1
branch a... b...
move a1 a2
delete a2
readd a2#1
delete a2
test integ a... b...
cd ..
cd ReAddSrcCopy
add A2
branch A... B...
move A2 A1
p4copy A... B...
add A2
test integ A... B... B2
cd ..
cd ReBranchMerged
add A1
branch A... C...
branch A... B...
move B1 B2
move A1 A2
add B1
merge A... C...
copy B1 A1
copy A1 C1
branch C1 D1
test !integ C... D... D1
cd ..
cd ReverseBranch
add A1
add A2
add B1
add B2
copy B1 A1
copy B2 A2
edit-pend A1
delete A2
move A1 A3
move A3 A2
move A2 A4
merge A... B...
test !exist B1
test exist B4
cd ..
cd ReverseConflict
add B2
edit B2
add B1
branch B1 A1
edit A1
copy A... B...
move A1 A2
edit A2
dirty B2 A2
test integ A... B... B1
cd ..
cd TargetBranchedWrong
add A1
branch A1 B2
delete A1
branch B2 A2
move B2 B1
test integ B... A... A2
cd ..
cd TargetMovedBranch
add A1
branch A... B...
move B1 B2
edit A1
test integ A... B... B2
test !integ A1 B1
add C1
branch C... D...
move D1 E1
edit C1
test integ C... D... D1
cd ..
cd TargetReverseIgnore
add a1
delete a1
add a2
branch a2 b2
edit b2
copy b1 a2
edit b2
copy b2 a2
move b2 b1
ignore a... b...
test integ b... a... a2
cd ..
cd TargetShellGame
add A1
branch A... B...
move A1 A2
-d branch A2 B2
-d branch A2 B3
move A2 A3
move B1 B4
move B2 B5
move B3 B6
test integ A... B... B5
cd ..
cd TargetWasDeleted
add A1
branch A1 B1
add A2
branch A2 B2
edit A1
delete A2
merge A... B...
move A1 A2
test integ A... B... B1
cd ..
cd Unmapped1
add A1
branch A... B...
move B1 B2
merge B... A...
edit A2
test integ A2 B2
cd ..
cd ..
cd split
cd Baseless
add A
add B
ignore A B
test ichanges B A 1
cd ..
cd BuriedIgnore
add A
branch A B
branch A C
edit A
edit A
ignore A#3,3 B
edit A
edit A
-Rs merge A B
merge A#2,2 C
merge A#4,5 C
test equal B C
cd ..
cd CopyRange
add A
branch A B
branch A C
edit A
edit A
merge A#3,3 B
edit A
edit C
edit C
copy C A
test irange A B 4
test ichanges A B 1
cd ..
cd DebitIgnore
add A
branch A B
edit A
ignore A B
edit A
edit B
assert base B A B#2
test ichanges B A 1
cd ..
cd FindBase
add A
branch A C
edit A
branch A B
edit B
edit B
edit B
merge B#3,3 C
test ichanges B C 3
-Rs merge B C
test equal B C
cd ..
cd PropIgnore
add A
branch A B
branch B C
edit A
ignore A B
test ichanges B C 1
cd ..
cd Redone
add A
branch A B
branch A C
edit A
copy A C
edit B
copy B A
-f copy C A
test ichanges A B 1
cd ..
cd ..
cd historic
cd AndersCatch22
add main 2
branch main dev
edit main
edit dev 2 BAD
merge dev main
edit dev 2 GOOD
assert exist dev#3 main#3
test base main dev dev#2
merge main dev
merge dev main
test exist main#4
cd ../AndersIncremental
add main 2
branch main dev
edit main
edit dev 2 BAD
merge dev main
edit dev 2 GOOD
assert exist dev#3 main#3
test base main#2 dev main#1
merge main#2 dev
merge dev#3 main
test exist main#4
cd ../CherryPicking
add main 4
branch main dev
edit dev
edit main
merge main#2,2 dev
edit dev
edit main
merge main#3,3 dev
merge dev#4,4 main
merge dev#2,2 main
test exist main#5 dev#5
test equal main#5 dev#5
cd ../Convergence
add main 4
edit main
branch main A
edit main
branch main B
edit B
edit A
test base A main A#1
merge A main
test base A B A#1
merge A B
cd ../DevTrading
add main 4
edit main
branch main dev-mike
edit main
edit dev-mike
branch main dev-spike
edit dev-spike
test base dev-mike dev-spike dev-mike#1
merge dev-mike dev-spike
merge dev-spike dev-mike
test equal dev-mike dev-spike
cd ../Ignoring
add main 4
branch main dev
edit dev 1
edit main 2
branch dev dev-opt
edit dev-opt 3
edit dev-opt 4
ignore dev-opt#3,3 dev
merge dev-opt dev
test !equal dev-opt dev
merge dev main
merge dev-opt main
add good 4
edit good 1
edit good 2
edit good 3
test equal good main
cd ../LadderMerge
add main 2
branch main dev
edit dev
edit main
merge dev main
test base main dev dev#2 main#2
merge main dev
test equal main dev
cd ../RogueDevBranch
add main 4
branch main def
edit def 1
branch def abc
edit abc 2
branch main rel
edit rel 3
merge rel main
merge main def
edit rel 4
merge def main
merge rel abc
merge abc main
add good 4
edit good 1
edit good 2
edit good 3
edit good 4
test exist main#4
test equal main good
cd ../StagingCodeline
add main 3
edit main
branch main qa
edit qa
branch qa web
edit main
merge qa main
merge web main
test equal main#4 main#head
cd ../StagingHotfix
add main 4
edit main
branch main qa
edit qa
branch qa web
edit main
merge qa main
edit web
test base web main web#1 - - qa#1
merge web main
test exist main#5
cd ../UndoDeleteInSource
add main 3
edit main
branch main dev
edit main
edit dev
delete main
readd main#3
-Di test base main dev main#2
-Di merge main dev
cd ../UndoDeleteInTarget
add main 3
edit main
branch main dev
edit main
edit dev
delete dev
readd dev#2
-Di test base main dev main#2
-Di merge main dev
cd ../RequireDi
add foo
branch foo bar
delete foo
add foo
test baseless foo bar
cd ../RequireDs
add foo
branch foo bar
edit bar
delete foo
-Ro test !integ foo bar
cd ../RequireDt
add foo
branch foo bar
delete bar
edit foo
-Ro test !integ foo bar
cd ../DontRequireDs
add foo
branch foo bar
delete foo
-Ro test integ foo bar
cd ../DontRequireDt
add foo
add bar
delete bar
-Ro test integ foo bar
cd ..
cd ..