Patchwork D9768: test: split tests/test-merge-combination.t into multiple parts

login
register
mail settings
Submitter phabricator
Date Jan. 14, 2021, 10:52 a.m.
Message ID <differential-rev-PHID-DREV-ad3eoyydbpbim3nkoelf-req@mercurial-scm.org>
Download mbox | patch
Permalink /patch/48079/
State Superseded
Headers show

Comments

phabricator - Jan. 14, 2021, 10:52 a.m.
marmoute created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  That test is quite slow, lets split it in smaller bits.

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D9768

AFFECTED FILES
  tests/test-merge-combination-exec-bytes.t
  tests/test-merge-combination-file-content.t
  tests/test-merge-combination-misc.t
  tests/test-merge-combination.t
  tests/testlib/merge-combination-util.sh

CHANGE DETAILS




To: marmoute, #hg-reviewers
Cc: mercurial-patches, mercurial-devel

Patch

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
diff --git a/tests/test-merge-combination.t b/tests/test-merge-combination-misc.t
rename from tests/test-merge-combination.t
rename 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/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-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