# # Copyright (c) 2009 D. Richard Hipp # # This program is free software; you can redistribute it and/or # modify it under the terms of the Simplified BSD License (also # known as the "2-Clause License" or "FreeBSD License".) # # This program is distributed in the hope that it will be useful, # but without any warranty; without even the implied warranty of # merchantability or fitness for a particular purpose. # # Author contact information: # drh@hwaci.com # http://www.hwaci.com/drh/ # ############################################################################ # # Tests of the 3-way merge # test_setup "" proc merge-test {testid basis v1 v2 result} { write_file t1 [join [string trim $basis] \n]\n write_file t2 [join [string trim $v1] \n]\n write_file t3 [join [string trim $v2] \n]\n fossil 3-way-merge t1 t2 t3 t4 set x [read_file t4] regsub -all {<<<<<<< BEGIN MERGE CONFLICT: local copy shown first <+} $x \ {MINE:} x regsub -all {\|\|\|\|\|\|\| COMMON ANCESTOR content follows \|+} $x {COM:} x regsub -all {======= MERGED IN content follows =+} $x {YOURS:} x regsub -all {>>>>>>> END MERGE CONFLICT >+} $x {END} x set x [split [string trim $x] \n] set result [string trim $result] if {$x!=$result} { protOut " Expected \[$result\]" protOut " Got \[$x\]" test merge3-$testid 0 } else { test merge3-$testid 1 } } merge-test 1 { 1 2 3 4 5 6 7 8 9 } { 1 2 3b 4 5 6 7 8 9 } { 1 2 3 4 5c 6 7 8 9 } { 1 2 3b 4 5c 6 7 8 9 } merge-test 2 { 1 2 3 4 5 6 7 8 9 } { 1 2 3b 4b 5 6 7 8 9 } { 1 2 3 4 5c 6 7 8 9 } { 1 2 3b 4b 5c 6 7 8 9 } merge-test 3 { 1 2 3 4 5 6 7 8 9 } { 1 2 3b 4b 5b 6 7 8 9 } { 1 2 3 4 5c 6 7 8 9 } { 1 2 MINE: 3b 4b 5b COM: 3 4 5 YOURS: 3 4 5c END 6 7 8 9 } merge-test 4 { 1 2 3 4 5 6 7 8 9 } { 1 2 3b 4b 5b 6b 7 8 9 } { 1 2 3 4 5c 6 7 8 9 } { 1 2 MINE: 3b 4b 5b 6b COM: 3 4 5 6 YOURS: 3 4 5c 6 END 7 8 9 } merge-test 5 { 1 2 3 4 5 6 7 8 9 } { 1 2 3b 4b 5b 6b 7 8 9 } { 1 2 3 4 5c 6c 7c 8 9 } { 1 2 MINE: 3b 4b 5b 6b 7 COM: 3 4 5 6 7 YOURS: 3 4 5c 6c 7c END 8 9 } merge-test 6 { 1 2 3 4 5 6 7 8 9 } { 1 2 3b 4b 5b 6b 7 8b 9 } { 1 2 3 4 5c 6c 7c 8 9 } { 1 2 MINE: 3b 4b 5b 6b 7 COM: 3 4 5 6 7 YOURS: 3 4 5c 6c 7c END 8b 9 } merge-test 7 { 1 2 3 4 5 6 7 8 9 } { 1 2 3b 4b 5b 6b 7 8b 9 } { 1 2 3 4 5c 6c 7c 8c 9 } { 1 2 MINE: 3b 4b 5b 6b 7 8b COM: 3 4 5 6 7 8 YOURS: 3 4 5c 6c 7c 8c END 9 } merge-test 8 { 1 2 3 4 5 6 7 8 9 } { 1 2 3b 4b 5b 6b 7 8b 9b } { 1 2 3 4 5c 6c 7c 8c 9 } { 1 2 MINE: 3b 4b 5b 6b 7 8b 9b COM: 3 4 5 6 7 8 9 YOURS: 3 4 5c 6c 7c 8c 9 END } merge-test 9 { 1 2 3 4 5 6 7 8 9 } { 1 2 3b 4b 5 6 7 8b 9b } { 1 2 3 4 5c 6c 7c 8 9 } { 1 2 3b 4b 5c 6c 7c 8b 9b } merge-test 10 { 1 2 3 4 5 6 7 8 9 } { 1 2 3b 4b 5 6 7 8b 9b } { 1 2 3b 4b 5 6c 7c 8 9 } { 1 2 3b 4b 5 6c 7c 8b 9b } merge-test 11 { 1 2 3 4 5 6 7 8 9 } { 1 2 3b 4b 5 6 7 8b 9b } { 1 2 3b 4c 5 6c 7c 8 9 } { 1 2 MINE: 3b 4b COM: 3 4 YOURS: 3b 4c END 5 6c 7c 8b 9b } merge-test 12 { 1 2 3 4 5 6 7 8 9 } { 1 2 3b4b 5 6 7 8b 9b } { 1 2 3b4b 5 6c 7c 8 9 } { 1 2 3b4b 5 6c 7c 8b 9b } merge-test 20 { 1 2 3 4 5 6 7 8 9 } { 1 3 4 5 6 7 8 9 } { 1 2 3 4 5 6 7 9 } { 1 3 4 5 6 7 9 } merge-test 21 { 1 2 3 4 5 6 7 8 9 } { 1 4 5 6 7 8 9 } { 1 2 3 4 5 6 9 } { 1 4 5 6 9 } merge-test 22 { 1 2 3 4 5 6 7 8 9 } { 1 5 6 7 8 9 } { 1 2 3 4 5 9 } { 1 5 9 } merge-test 23 { 1 2 3 4 5 6 7 8 9 } { 1 6 7 8 9 } { 1 2 3 4 5 9 } { 1 9 } merge-test 24 { 1 2 3 4 5 6 7 8 9 } { 1 6 7 8 9 } { 1 2 3 4 9 } { 1 MINE: 6 7 8 COM: 2 3 4 5 6 7 8 YOURS: 2 3 4 END 9 } merge-test 25 { 1 2 3 4 5 6 7 8 9 } { 1 7 8 9 } { 1 2 3 9 } { 1 MINE: 7 8 COM: 2 3 4 5 6 7 8 YOURS: 2 3 END 9 } merge-test 30 { 1 2 3 4 5 6 7 8 9 } { 1 2 3 4 5 6 7 9 } { 1 3 4 5 6 7 8 9 } { 1 3 4 5 6 7 9 } merge-test 31 { 1 2 3 4 5 6 7 8 9 } { 1 2 3 4 5 6 9 } { 1 4 5 6 7 8 9 } { 1 4 5 6 9 } merge-test 32 { 1 2 3 4 5 6 7 8 9 } { 1 2 3 4 5 9 } { 1 5 6 7 8 9 } { 1 5 9 } merge-test 33 { 1 2 3 4 5 6 7 8 9 } { 1 2 3 4 5 9 } { 1 6 7 8 9 } { 1 9 } merge-test 34 { 1 2 3 4 5 6 7 8 9 } { 1 2 3 4 9 } { 1 6 7 8 9 } { 1 MINE: 2 3 4 COM: 2 3 4 5 6 7 8 YOURS: 6 7 8 END 9 } merge-test 35 { 1 2 3 4 5 6 7 8 9 } { 1 2 3 9 } { 1 7 8 9 } { 1 MINE: 2 3 COM: 2 3 4 5 6 7 8 YOURS: 7 8 END 9 } merge-test 40 { 2 3 4 5 6 7 8 } { 3 4 5 6 7 8 } { 2 3 4 5 6 7 } { 3 4 5 6 7 } merge-test 41 { 2 3 4 5 6 7 8 } { 4 5 6 7 8 } { 2 3 4 5 6 } { 4 5 6 } merge-test 42 { 2 3 4 5 6 7 8 } { 5 6 7 8 } { 2 3 4 5 } { 5 } merge-test 43 { 2 3 4 5 6 7 8 } { 6 7 8 } { 2 3 4 5 } { } merge-test 44 { 2 3 4 5 6 7 8 } { 6 7 8 } { 2 3 4 } { MINE: 6 7 8 COM: 2 3 4 5 6 7 8 YOURS: 2 3 4 END } merge-test 45 { 2 3 4 5 6 7 8 } { 7 8 } { 2 3 } { MINE: 7 8 COM: 2 3 4 5 6 7 8 YOURS: 2 3 END } merge-test 50 { 2 3 4 5 6 7 8 } { 2 3 4 5 6 7 } { 3 4 5 6 7 8 } { 3 4 5 6 7 } merge-test 51 { 2 3 4 5 6 7 8 } { 2 3 4 5 6 } { 4 5 6 7 8 } { 4 5 6 } merge-test 52 { 2 3 4 5 6 7 8 } { 2 3 4 5 } { 5 6 7 8 } { 5 } merge-test 53 { 2 3 4 5 6 7 8 } { 2 3 4 5 } { 6 7 8 } { } merge-test 54 { 2 3 4 5 6 7 8 } { 2 3 4 } { 6 7 8 } { MINE: 2 3 4 COM: 2 3 4 5 6 7 8 YOURS: 6 7 8 END } merge-test 55 { 2 3 4 5 6 7 8 } { 2 3 } { 7 8 } { MINE: 2 3 COM: 2 3 4 5 6 7 8 YOURS: 7 8 END } merge-test 60 { 1 2 3 4 5 6 7 8 9 } { 1 2b 3 4 5 6 7 8 9 } { 1 2 3 4 5 6 7 9 } { 1 2b 3 4 5 6 7 9 } merge-test 61 { 1 2 3 4 5 6 7 8 9 } { 1 2b 3b 4 5 6 7 8 9 } { 1 2 3 4 5 6 9 } { 1 2b 3b 4 5 6 9 } merge-test 62 { 1 2 3 4 5 6 7 8 9 } { 1 2b 3b 4b 5 6 7 8 9 } { 1 2 3 4 5 9 } { 1 2b 3b 4b 5 9 } merge-test 63 { 1 2 3 4 5 6 7 8 9 } { 1 2b 3b 4b 5b 6 7 8 9 } { 1 2 3 4 5 9 } { 1 2b 3b 4b 5b 9 } merge-test 64 { 1 2 3 4 5 6 7 8 9 } { 1 2b 3b 4b 5b 6 7 8 9 } { 1 2 3 4 9 } { 1 MINE: 2b 3b 4b 5b 6 7 8 COM: 2 3 4 5 6 7 8 YOURS: 2 3 4 END 9 } merge-test 65 { 1 2 3 4 5 6 7 8 9 } { 1 2b 3b 4b 5b 6b 7 8 9 } { 1 2 3 9 } { 1 MINE: 2b 3b 4b 5b 6b 7 8 COM: 2 3 4 5 6 7 8 YOURS: 2 3 END 9 } merge-test 70 { 1 2 3 4 5 6 7 8 9 } { 1 2 3 4 5 6 7 9 } { 1 2b 3 4 5 6 7 8 9 } { 1 2b 3 4 5 6 7 9 } merge-test 71 { 1 2 3 4 5 6 7 8 9 } { 1 2 3 4 5 6 9 } { 1 2b 3b 4 5 6 7 8 9 } { 1 2b 3b 4 5 6 9 } merge-test 72 { 1 2 3 4 5 6 7 8 9 } { 1 2 3 4 5 9 } { 1 2b 3b 4b 5 6 7 8 9 } { 1 2b 3b 4b 5 9 } merge-test 73 { 1 2 3 4 5 6 7 8 9 } { 1 2 3 4 5 9 } { 1 2b 3b 4b 5b 6 7 8 9 } { 1 2b 3b 4b 5b 9 } merge-test 74 { 1 2 3 4 5 6 7 8 9 } { 1 2 3 4 9 } { 1 2b 3b 4b 5b 6 7 8 9 } { 1 MINE: 2 3 4 COM: 2 3 4 5 6 7 8 YOURS: 2b 3b 4b 5b 6 7 8 END 9 } merge-test 75 { 1 2 3 4 5 6 7 8 9 } { 1 2 3 9 } { 1 2b 3b 4b 5b 6b 7 8 9 } { 1 MINE: 2 3 COM: 2 3 4 5 6 7 8 YOURS: 2b 3b 4b 5b 6b 7 8 END 9 } merge-test 80 { 2 3 4 5 6 7 8 } { 2b 3 4 5 6 7 8 } { 2 3 4 5 6 7 } { 2b 3 4 5 6 7 } merge-test 81 { 2 3 4 5 6 7 8 } { 2b 3b 4 5 6 7 8 } { 2 3 4 5 6 } { 2b 3b 4 5 6 } merge-test 82 { 2 3 4 5 6 7 8 } { 2b 3b 4b 5 6 7 8 } { 2 3 4 5 } { 2b 3b 4b 5 } merge-test 83 { 2 3 4 5 6 7 8 } { 2b 3b 4b 5b 6 7 8 } { 2 3 4 5 } { 2b 3b 4b 5b } merge-test 84 { 2 3 4 5 6 7 8 } { 2b 3b 4b 5b 6 7 8 } { 2 3 4 } { MINE: 2b 3b 4b 5b 6 7 8 COM: 2 3 4 5 6 7 8 YOURS: 2 3 4 END } merge-test 85 { 2 3 4 5 6 7 8 } { 2b 3b 4b 5b 6b 7 8 } { 2 3 } { MINE: 2b 3b 4b 5b 6b 7 8 COM: 2 3 4 5 6 7 8 YOURS: 2 3 END } merge-test 90 { 2 3 4 5 6 7 8 } { 2 3 4 5 6 7 } { 2b 3 4 5 6 7 8 } { 2b 3 4 5 6 7 } merge-test 91 { 2 3 4 5 6 7 8 } { 2 3 4 5 6 } { 2b 3b 4 5 6 7 8 } { 2b 3b 4 5 6 } merge-test 92 { 2 3 4 5 6 7 8 } { 2 3 4 5 } { 2b 3b 4b 5 6 7 8 } { 2b 3b 4b 5 } merge-test 93 { 2 3 4 5 6 7 8 } { 2 3 4 5 } { 2b 3b 4b 5b 6 7 8 } { 2b 3b 4b 5b } merge-test 94 { 2 3 4 5 6 7 8 } { 2 3 4 } { 2b 3b 4b 5b 6 7 8 } { MINE: 2 3 4 COM: 2 3 4 5 6 7 8 YOURS: 2b 3b 4b 5b 6 7 8 END } merge-test 95 { 2 3 4 5 6 7 8 } { 2 3 } { 2b 3b 4b 5b 6b 7 8 } { MINE: 2 3 COM: 2 3 4 5 6 7 8 YOURS: 2b 3b 4b 5b 6b 7 8 END } merge-test 100 { 1 2 3 4 5 6 7 8 9 } { 1 2b 3 4 5 7 8 9 a b c d e } { 1 2b 3 4 5 7 8 9 a b c d e } { 1 2b 3 4 5 7 8 9 a b c d e } merge-test 101 { 1 2 3 4 5 6 7 8 9 } { 1 2b 3 4 5 7 8 9 a b c d e } { 1 2b 3 4 5 7 8 9 } { 1 2b 3 4 5 7 8 9 a b c d e } merge-test 102 { 1 2 3 4 5 6 7 8 9 } { 1 2b 3 4 5 7 8 9 } { 1 2b 3 4 5 7 8 9 a b c d e } { 1 2b 3 4 5 7 8 9 a b c d e } merge-test 103 { 1 2 3 4 5 6 7 8 9 } { 1 2 3 4 5 7 8 9b } { 1 2 3 4 5 7 8 9b a b c d e } { 1 2 3 4 5 7 8 MINE: 9b COM: 9 YOURS: 9b a b c d e END } merge-test 104 { 1 2 3 4 5 6 7 8 9 } { 1 2 3 4 5 7 8 9b a b c d e } { 1 2 3 4 5 7 8 9b } { 1 2 3 4 5 7 8 MINE: 9b a b c d e COM: 9 YOURS: 9b END } ############################################################################### test_cleanup