# 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 ..