[PATCH v2 1/2] t4255: test am submodule with diff.submodule

2014-12-27 Thread Doug Kelly
git am will break when using diff.submodule=log; add some test cases
to illustrate this breakage as simply as possible.  There are
currently two ways this can fail:

* With errors (unrecognized input), if only change
* Silently (no submodule change), if other files change

Test for both conditions and ensure without diff.submodule this works.

Signed-off-by: Doug Kelly dougk@gmail.com
---
 t/t4255-am-submodule.sh | 84 +
 1 file changed, 84 insertions(+)

diff --git a/t/t4255-am-submodule.sh b/t/t4255-am-submodule.sh
index 8bde7db..a2dc083 100755
--- a/t/t4255-am-submodule.sh
+++ b/t/t4255-am-submodule.sh
@@ -18,4 +18,88 @@ am_3way () {
 KNOWN_FAILURE_NOFF_MERGE_ATTEMPTS_TO_MERGE_REMOVED_SUBMODULE_FILES=1
 test_submodule_switch am_3way
 
+test_expect_success 'setup diff.submodule' '
+   echo one one 
+   git add one 
+   test_tick 
+   git commit -m initial 
+   INITIAL=$(git rev-parse HEAD) 
+
+   git init submodule 
+   (
+   cd submodule 
+   echo two two 
+   git add two 
+   test_tick 
+   git commit -m initial submodule 
+   git rev-parse HEAD ../initial-submodule
+   ) 
+   git submodule add ./submodule 
+   test_tick 
+   git commit -m first 
+
+   (
+   cd submodule 
+   echo three three 
+   git add three 
+   test_tick 
+   git commit -m first submodule 
+   git rev-parse HEAD ../first-submodule
+   ) 
+   git add submodule 
+   test_tick 
+   git commit -m second 
+   SECOND=$(git rev-parse HEAD) 
+
+   (
+   cd submodule 
+   git mv two four 
+   test_tick 
+   git commit -m second submodule 
+   git rev-parse HEAD ../second-submodule
+   ) 
+   git add submodule 
+   echo four four 
+   git add four 
+   test_tick 
+   git commit -m third 
+   THIRD=$(git rev-parse HEAD) 
+   git submodule update --init
+'
+
+run_test() {
+   START_COMMIT=$1 
+   EXPECT=$2 
+   (git am --abort || true) 
+   git reset --hard $START_COMMIT 
+   rm -f *.patch 
+   git format-patch -1 
+   git reset --hard $START_COMMIT^ 
+   git submodule update 
+   git am *.patch 
+   git submodule update 
+   (cd submodule  git rev-parse HEAD ../actual) 
+   test_cmp $EXPECT actual
+}
+
+test_expect_success 'diff.submodule unset' '
+   (git config --unset diff.submodule || true) 
+   run_test $SECOND first-submodule
+'
+
+test_expect_success 'diff.submodule unset with extra file' '
+   (git config --unset diff.submodule || true) 
+   run_test $THIRD second-submodule
+'
+
+test_expect_failure 'diff.submodule=log' '
+   git config diff.submodule log 
+   run_test $SECOND first-submodule
+'
+
+test_expect_failure 'diff.submodule=log with extra file' '
+   git config diff.submodule log 
+   run_test $THIRD second-submodule
+'
+
 test_done
-- 
2.0.5

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 1/2] t4255: test am submodule with diff.submodule

2014-12-27 Thread Eric Sunshine
On Sat, Dec 27, 2014 at 07:04:23PM -0600, Doug Kelly wrote:
 git am will break when using diff.submodule=log; add some test cases
 to illustrate this breakage as simply as possible.  There are
 currently two ways this can fail:
 
 * With errors (unrecognized input), if only change
 * Silently (no submodule change), if other files change
 
 Test for both conditions and ensure without diff.submodule this works.
 
 Signed-off-by: Doug Kelly dougk@gmail.com
 ---

Here below the --- line is a good place to explain what changed
since the last version of the patch (or do so in the cover letter of
the new patch series). It's also helpful to reviewers to provide a
link to the previous round, like this[1].

[1]: http://thread.gmane.org/gmane.comp.version-control.git/261830

More below.

  t/t4255-am-submodule.sh | 84 
 +
  1 file changed, 84 insertions(+)
 
 diff --git a/t/t4255-am-submodule.sh b/t/t4255-am-submodule.sh
 index 8bde7db..a2dc083 100755
 --- a/t/t4255-am-submodule.sh
 +++ b/t/t4255-am-submodule.sh
 @@ -18,4 +18,88 @@ am_3way () {
  KNOWN_FAILURE_NOFF_MERGE_ATTEMPTS_TO_MERGE_REMOVED_SUBMODULE_FILES=1
  test_submodule_switch am_3way
  
 +test_expect_success 'setup diff.submodule' '
 + echo one one 
 + git add one 
 + test_tick 
 + git commit -m initial 

Perhaps squash in the following to improve succinctness?

-- 8 --
diff --git a/t/t4255-am-submodule.sh b/t/t4255-am-submodule.sh
index b7ec0f1..b58e776 100755
--- a/t/t4255-am-submodule.sh
+++ b/t/t4255-am-submodule.sh
@@ -19,50 +19,37 @@ 
KNOWN_FAILURE_NOFF_MERGE_ATTEMPTS_TO_MERGE_REMOVED_SUBMODULE_FILES=1
 test_submodule_switch am_3way
 
 test_expect_success 'setup diff.submodule' '
-   echo one one 
-   git add one 
-   test_tick 
-   git commit -m initial 
+   test_commit one 
INITIAL=$(git rev-parse HEAD) 
 
git init submodule 
(
cd submodule 
-   echo two two 
-   git add two 
-   test_tick 
-   git commit -m initial submodule 
+   test_commit two 
git rev-parse HEAD ../initial-submodule
) 
git submodule add ./submodule 
-   test_tick 
git commit -m first 
 
(
cd submodule 
-   echo three three 
-   git add three 
-   test_tick 
-   git commit -m first submodule 
+   test_commit three 
git rev-parse HEAD ../first-submodule
) 
git add submodule 
-   test_tick 
git commit -m second 
SECOND=$(git rev-parse HEAD) 
 
(
cd submodule 
-   git mv two four 
+   git mv two.t four.t 
test_tick 
git commit -m second submodule 
git rev-parse HEAD ../second-submodule
) 
+   test_commit four 
git add submodule 
-   echo four four 
-   git add four 
-   test_tick 
-   git commit -m third 
+   git commit --amend --no-edit 
THIRD=$(git rev-parse HEAD) 
git submodule update --init
 '
-- 
2.2.1.302.gdfcd89f
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html