ADDED test/merge_renames.test Index: test/merge_renames.test ================================================================== --- test/merge_renames.test +++ test/merge_renames.test @@ -0,0 +1,191 @@ +# +# Tests for merging with renames +# +# + +catch {exec $::fossilexe info} res +puts res=$res +if {![regexp {not within an open checkout} $res]} { + puts stderr "Cannot run this test within an open checkout" + return +} + +###################################### +# Test 1 # +# Reported: Ticket [554f44ee74e3d] # +###################################### + +fossil new rep.fossil +fossil open rep.fossil + +write_file f1 "line" +fossil add f1 +fossil commit -m "c1" +fossil tag add pivot current + +write_file f1 "line2" +fossil commit -m "c2" + +write_file f1 "line3" +fossil commit -m "c3" + +write_file f1 "line4" +fossil commit -m "c4" + +write_file f1 "line5" +fossil commit -m "c4" + +write_file f1 "line6" +fossil commit -m "c4" + +fossil update pivot +fossil mv f1 f2 +exec mv f1 f2 +fossil commit -b rename -m "c5" + +fossil merge trunk +fossil commit -m "trunk merged" + +fossil update pivot +write_file f3 "someline" +fossil add f3 +fossil commit -b branch2 -m "newbranch" + +fossil merge trunk +puts $RESULT + +set deletes 0 +foreach {status filename} $RESULT { + if {$status=="DELETE"} { + set deletes [expr $deletes + 1] + } +} + +if {$deletes!=0} { + # failed + protOut "Error, the merge should not delete any file" + test merge_renames-1 0 +} else { + test merge_renames-1 1 +} + +fossil close -f +exec rm rep.fossil + +###################################### +# Test 2 # +# Reported: Ticket [74413366fe5067] # +###################################### + +fossil new rep.fossil +fossil open rep.fossil + +write_file f1 "line" +fossil add f1 +fossil commit -m "base file" +fossil tag add pivot current + +write_file f2 "line2" +fossil add f2 +fossil commit -m "newfile" + +fossil mv f2 f2new +exec mv f2 f2new +fossil commit -m "rename" + +fossil update pivot +write_file f1 "line3" +fossil commit -b branch -m "change" + +fossil merge trunk +fossil commit -m "trunk merged" + +fossil update trunk + +fossil merge branch +puts $RESULT + +# Not a nice way to check, but I don't know more tcl now +set deletes 0 +foreach {status filename} $RESULT { + if {$status=="DELETE"} { + set deletes [expr $deletes + 1] + } +} + +if {$deletes!=0} { + # failed + protOut "Error, the merge should not delete any file" + test merge_renames-2 0 +} else { + test merge_renames-2 1 +} + +fossil close -f +exec rm rep.fossil + +###################################### +# Test 3 # +# Reported: Ticket [30b28cf351] # +###################################### + +fossil new rep.fossil +fossil open rep.fossil + +write_file f1 "line" +fossil add f1 +fossil commit -m "base file" +fossil tag add pivot current + +write_file f2 "line2" +fossil add f2 +fossil commit -m "newfile" + +fossil mv f2 f2new +exec mv f2 f2new +fossil commit -m "rename" + +fossil update pivot +write_file f1 "line3" +fossil commit -b branch -m "change" + +fossil merge trunk +fossil commit -m "trunk merged" + +fossil update trunk + +fossil merge branch +puts $RESULT + +# Not a nice way to check, but I don't know more tcl now +set deletes 0 +foreach {status filename} $RESULT { + if {$status=="DELETE"} { + set deletes [expr $deletes + 1] + } +} + +if {$deletes!=0} { + # failed + protOut "Error, the merge should not delete any file" + test merge_renames-2 0 +} else { + test merge_renames-2 1 +} + +fossil close -f +exec rm rep.fossil + +###################################### +# Test 4 # +# Reported: Ticket [67176c3aa4] # +###################################### + +# TO BE WRITTEN. + + +# Tests for troubles not specifically linked with renames but that I'd like to +# write: +# [c26c63eb1b] - 'merge --backout' does not handle conflicts properly +# [953031915f] - Lack of warning when overwriting extra files +# [4df5f38f1e] - Troubles merging a file delete with a file change