diff --git a/tests/test-merge-combination.t b/tests/test-merge-combination-exec-bytes.t rename from tests/test-merge-combination.t rename to tests/test-merge-combination-exec-bytes.t --- a/tests/test-merge-combination.t +++ b/tests/test-merge-combination-exec-bytes.t @@ -1,84 +1,22 @@ +Testing recorded "modified" files for merge commit +================================================== + +#require execbit + This file shows what hg says are "modified" files for a merge commit (hg log -T {files}), somewhat exhaustively. -It shows merges that involves files contents changing, and merges that -involve executable bit changing, but not merges with multiple or zero -merge ancestors, nor copies/renames, and nor identical file contents -with different filelog revisions. + +This test file shows merges that involves executable bit changing, check test-merge-combination-exec-bytes.t + +For merges that involve files contents changing, check test-merge-combination-file-content.t + +For testing of multiple corner case, check test-merge-combination-misc.t + +Case with multiple or zero merge ancestors, copies/renames, and identical file contents +with different filelog revisions are not currently covered. $ . $TESTDIR/testlib/merge-combination-util.sh -All the merges of various file contents. - - $ range () { - > max=0 - > for i in $@; do - > if [ $i = - ]; then continue; fi - > if [ $i -gt $max ]; then max=$i; fi - > done - > $TESTDIR/seq.py `expr $max + 1` - > } - $ isgood () { true; } - $ createfile () { - > if [ -f a ] && [ "`cat a`" = $1 ] - > then touch $file - > else echo $v > a - > fi - > } - - $ genmerges - 1111 : agree on "" - 1112 : agree on "a" - 111- : agree on "a" - 1121 : agree on "a" - 1122 : agree on "" - 1123 : agree on "a" - 112- : agree on "a" - 11-1 : hg said "", expected "a" - 11-2 : agree on "a" - 11-- : agree on "" - 1211 : agree on "a" - 1212 : agree on "" - 1213 : agree on "a" - 121- : agree on "a" - 1221 : agree on "a" - 1222 : agree on "" - 1223 : agree on "a" - 122- : agree on "a" - 1231 C: agree on "a" - 1232 C: agree on "a" - 1233 C: agree on "a" - 1234 C: agree on "a" - 123- C: agree on "a" - 12-1 C: agree on "a" - 12-2 C: hg said "", expected "a" - 12-3 C: agree on "a" - 12-- C: agree on "a" - 1-11 : hg said "", expected "a" - 1-12 : agree on "a" - 1-1- : agree on "" - 1-21 C: agree on "a" - 1-22 C: hg said "", expected "a" - 1-23 C: agree on "a" - 1-2- C: agree on "a" - 1--1 : agree on "a" - 1--2 : agree on "a" - 1--- : agree on "" - -111 : agree on "" - -112 : agree on "a" - -11- : agree on "a" - -121 C: agree on "a" - -122 C: agree on "a" - -123 C: agree on "a" - -12- C: agree on "a" - -1-1 : agree on "" - -1-2 : agree on "a" - -1-- : agree on "a" - --11 : agree on "" - --12 : agree on "a" - --1- : agree on "a" - ---1 : agree on "a" - ---- : agree on "" - All the merges of executable bit. $ range () { @@ -97,7 +35,6 @@ > fi > } -#if execbit $ genmerges fffx : agree on "a" ffxf : agree on "a" @@ -124,34 +61,3 @@ -fx- C: agree on "a" -f-x : hg said "", expected "a" --fx : agree on "a" -#endif - -Files modified or cleanly merged, with no greatest common ancestors: - - $ hg init repo; cd repo - $ touch a0 b0; hg commit -qAm 0 - $ hg up -qr null; touch a1 b1; hg commit -qAm 1 - $ hg merge -qr 0; rm b*; hg commit -qAm 2 - $ hg log -r . -T '{files}\n' - b0 b1 - $ cd ../ - $ rm -rf repo - -A few cases of criss-cross merges involving deletions (listing all -such merges is probably too much). Both gcas contain $files, so we -expect the final merge to behave like a merge with a single gca -containing $files. - - $ hg init repo; cd repo - $ files="c1 u1 c2 u2" - $ touch $files; hg commit -qAm '0 root' - $ for f in $files; do echo f > $f; done; hg commit -qAm '1 gca1' - $ hg up -qr0; hg revert -qr 1 --all; hg commit -qAm '2 gca2' - $ hg up -qr 1; hg merge -qr 2; rm *1; hg commit -qAm '3 p1' - $ hg up -qr 2; hg merge -qr 1; rm *2; hg commit -qAm '4 p2' - $ hg merge -qr 3; echo f > u1; echo f > u2; rm -f c1 c2 - $ hg commit -qAm '5 merge with two gcas' - $ hg log -r . -T '{files}\n' # expecting u1 u2 - - $ cd ../ - $ rm -rf repo diff --git a/tests/test-merge-combination.t b/tests/test-merge-combination-file-content.t copy from tests/test-merge-combination.t copy to tests/test-merge-combination-file-content.t --- a/tests/test-merge-combination.t +++ b/tests/test-merge-combination-file-content.t @@ -1,9 +1,17 @@ +Testing recorded "modified" files for merge commit +================================================== + This file shows what hg says are "modified" files for a merge commit (hg log -T {files}), somewhat exhaustively. -It shows merges that involves files contents changing, and merges that -involve executable bit changing, but not merges with multiple or zero -merge ancestors, nor copies/renames, and nor identical file contents -with different filelog revisions. + +This test file shows merges that involves files contents changing + +For merges taht involves executable bit changing, check test-merge-combination-exec-bytes.t + +For testing of multiple corner case, check test-merge-combination-misc.t + +Case with multiple or zero merge ancestors, copies/renames, and identical file contents +with different filelog revisions are not currently covered. $ . $TESTDIR/testlib/merge-combination-util.sh @@ -78,80 +86,3 @@ --1- : agree on "a" ---1 : agree on "a" ---- : agree on "" - -All the merges of executable bit. - - $ range () { - > max=a - > for i in $@; do - > if [ $i = - ]; then continue; fi - > if [ $i > $max ]; then max=$i; fi - > done - > if [ $max = a ]; then echo f; else echo f x; fi - > } - $ isgood () { case $line in *f*x*) true;; *) false;; esac; } - $ createfile () { - > if [ -f a ] && (([ -x a ] && [ $v = x ]) || (! [ -x a ] && [ $v != x ])) - > then touch $file - > else touch a; if [ $v = x ]; then chmod +x a; else chmod -x a; fi - > fi - > } - -#if execbit - $ genmerges - fffx : agree on "a" - ffxf : agree on "a" - ffxx : agree on "" - ffx- : agree on "a" - ff-x : hg said "", expected "a" - fxff : hg said "", expected "a" - fxfx : hg said "a", expected "" - fxf- : agree on "a" - fxxf : agree on "a" - fxxx : agree on "" - fxx- : agree on "a" - fx-f : hg said "", expected "a" - fx-x : hg said "", expected "a" - fx-- : hg said "", expected "a" - f-fx : agree on "a" - f-xf : agree on "a" - f-xx : hg said "", expected "a" - f-x- : agree on "a" - f--x : agree on "a" - -ffx : agree on "a" - -fxf C: agree on "a" - -fxx C: hg said "", expected "a" - -fx- C: agree on "a" - -f-x : hg said "", expected "a" - --fx : agree on "a" -#endif - -Files modified or cleanly merged, with no greatest common ancestors: - - $ hg init repo; cd repo - $ touch a0 b0; hg commit -qAm 0 - $ hg up -qr null; touch a1 b1; hg commit -qAm 1 - $ hg merge -qr 0; rm b*; hg commit -qAm 2 - $ hg log -r . -T '{files}\n' - b0 b1 - $ cd ../ - $ rm -rf repo - -A few cases of criss-cross merges involving deletions (listing all -such merges is probably too much). Both gcas contain $files, so we -expect the final merge to behave like a merge with a single gca -containing $files. - - $ hg init repo; cd repo - $ files="c1 u1 c2 u2" - $ touch $files; hg commit -qAm '0 root' - $ for f in $files; do echo f > $f; done; hg commit -qAm '1 gca1' - $ hg up -qr0; hg revert -qr 1 --all; hg commit -qAm '2 gca2' - $ hg up -qr 1; hg merge -qr 2; rm *1; hg commit -qAm '3 p1' - $ hg up -qr 2; hg merge -qr 1; rm *2; hg commit -qAm '4 p2' - $ hg merge -qr 3; echo f > u1; echo f > u2; rm -f c1 c2 - $ hg commit -qAm '5 merge with two gcas' - $ hg log -r . -T '{files}\n' # expecting u1 u2 - - $ cd ../ - $ rm -rf repo diff --git a/tests/test-merge-combination.t b/tests/test-merge-combination-misc.t copy from tests/test-merge-combination.t copy to tests/test-merge-combination-misc.t --- a/tests/test-merge-combination.t +++ b/tests/test-merge-combination-misc.t @@ -1,131 +1,21 @@ +Testing recorded "modified" files for merge commit +================================================== + This file shows what hg says are "modified" files for a merge commit (hg log -T {files}), somewhat exhaustively. -It shows merges that involves files contents changing, and merges that -involve executable bit changing, but not merges with multiple or zero -merge ancestors, nor copies/renames, and nor identical file contents -with different filelog revisions. + +This file test multiple corner case. + +For merges that involve files contents changing, check test-merge-combination-file-content.t + +For merges that involve executable bit changing, check test-merge-combination-exec-bytes.t + + +Case with multiple or zero merge ancestors, copies/renames, and identical file contents +with different filelog revisions are not currently covered. $ . $TESTDIR/testlib/merge-combination-util.sh -All the merges of various file contents. - - $ range () { - > max=0 - > for i in $@; do - > if [ $i = - ]; then continue; fi - > if [ $i -gt $max ]; then max=$i; fi - > done - > $TESTDIR/seq.py `expr $max + 1` - > } - $ isgood () { true; } - $ createfile () { - > if [ -f a ] && [ "`cat a`" = $1 ] - > then touch $file - > else echo $v > a - > fi - > } - - $ genmerges - 1111 : agree on "" - 1112 : agree on "a" - 111- : agree on "a" - 1121 : agree on "a" - 1122 : agree on "" - 1123 : agree on "a" - 112- : agree on "a" - 11-1 : hg said "", expected "a" - 11-2 : agree on "a" - 11-- : agree on "" - 1211 : agree on "a" - 1212 : agree on "" - 1213 : agree on "a" - 121- : agree on "a" - 1221 : agree on "a" - 1222 : agree on "" - 1223 : agree on "a" - 122- : agree on "a" - 1231 C: agree on "a" - 1232 C: agree on "a" - 1233 C: agree on "a" - 1234 C: agree on "a" - 123- C: agree on "a" - 12-1 C: agree on "a" - 12-2 C: hg said "", expected "a" - 12-3 C: agree on "a" - 12-- C: agree on "a" - 1-11 : hg said "", expected "a" - 1-12 : agree on "a" - 1-1- : agree on "" - 1-21 C: agree on "a" - 1-22 C: hg said "", expected "a" - 1-23 C: agree on "a" - 1-2- C: agree on "a" - 1--1 : agree on "a" - 1--2 : agree on "a" - 1--- : agree on "" - -111 : agree on "" - -112 : agree on "a" - -11- : agree on "a" - -121 C: agree on "a" - -122 C: agree on "a" - -123 C: agree on "a" - -12- C: agree on "a" - -1-1 : agree on "" - -1-2 : agree on "a" - -1-- : agree on "a" - --11 : agree on "" - --12 : agree on "a" - --1- : agree on "a" - ---1 : agree on "a" - ---- : agree on "" - -All the merges of executable bit. - - $ range () { - > max=a - > for i in $@; do - > if [ $i = - ]; then continue; fi - > if [ $i > $max ]; then max=$i; fi - > done - > if [ $max = a ]; then echo f; else echo f x; fi - > } - $ isgood () { case $line in *f*x*) true;; *) false;; esac; } - $ createfile () { - > if [ -f a ] && (([ -x a ] && [ $v = x ]) || (! [ -x a ] && [ $v != x ])) - > then touch $file - > else touch a; if [ $v = x ]; then chmod +x a; else chmod -x a; fi - > fi - > } - -#if execbit - $ genmerges - fffx : agree on "a" - ffxf : agree on "a" - ffxx : agree on "" - ffx- : agree on "a" - ff-x : hg said "", expected "a" - fxff : hg said "", expected "a" - fxfx : hg said "a", expected "" - fxf- : agree on "a" - fxxf : agree on "a" - fxxx : agree on "" - fxx- : agree on "a" - fx-f : hg said "", expected "a" - fx-x : hg said "", expected "a" - fx-- : hg said "", expected "a" - f-fx : agree on "a" - f-xf : agree on "a" - f-xx : hg said "", expected "a" - f-x- : agree on "a" - f--x : agree on "a" - -ffx : agree on "a" - -fxf C: agree on "a" - -fxx C: hg said "", expected "a" - -fx- C: agree on "a" - -f-x : hg said "", expected "a" - --fx : agree on "a" -#endif - Files modified or cleanly merged, with no greatest common ancestors: $ hg init repo; cd repo diff --git a/tests/testlib/merge-combination-util.sh b/tests/testlib/merge-combination-util.sh --- a/tests/testlib/merge-combination-util.sh +++ b/tests/testlib/merge-combination-util.sh @@ -1,4 +1,4 @@ -# genmerges is the workhorse of the test-merge-combination.t tests. +# genmerges is the workhorse of the test-merge-combination-*.t tests. # Given: # - a `range` function describing the possible values for file a