Changes since v3, all suggested/endorsed by Junio (range-diff at the end):
  - Moved the actual fix from being last patch in the series to the first
    (other patches in this series are just test code cleanups)
  - Anchored regexes to avoid matching another filename as a substring
  - Add test_path_exists() to test-lib-function.sh and use it (we had
    test_path_is_dir, test_path_is_file, and test_path_is_missing, but
    not simple test_path_exists)

Elijah Newren (5):
  t7406: fix call that was failing for the wrong reason
  t7406: simplify by using diff --name-only instead of diff --raw
  t7406: avoid having git commands upstream of a pipe
  t7406: prefer test_* helper functions to test -[feds]
  t7406: avoid using test_must_fail for commands other than git

 t/t7406-submodule-update.sh | 37 +++++++++++++++++++++++--------------
 t/test-lib-functions.sh     |  8 ++++++++
 2 files changed, 31 insertions(+), 14 deletions(-)

-:  ---------- > 1:  5f257af6c8 t7406: fix call that was failing for the wrong 
reason
1:  3c369bf73d ! 2:  9e5400a1ad t7406: simplify by using diff --name-only 
instead of diff --raw
    @@ -16,10 +16,10 @@
          compare_head
         ) &&
     -   git diff --raw | grep "        submodule" &&
    -+   git diff --name-only | grep submodule &&
    ++   git diff --name-only | grep ^submodule$ &&
         git submodule update &&
     -   git diff --raw | grep "        submodule" &&
    -+   git diff --name-only | grep submodule &&
    ++   git diff --name-only | grep ^submodule$ &&
         (cd submodule &&
          compare_head
         ) &&
    @@ -28,10 +28,12 @@
          compare_head
         ) &&
     -   git diff --raw | grep "        submodule" &&
    -+   git diff --name-only | grep submodule &&
    ++   git diff --name-only | grep ^submodule$ &&
         git submodule update --checkout &&
    --   test_must_fail git diff --raw \| grep "        submodule" &&
    -+   test_must_fail git diff --name-only \| grep submodule &&
    +-   git diff --raw >out &&
    +-   ! grep "       submodule" out &&
    ++   git diff --name-only >out &&
    ++   ! grep ^submodule$ out &&
         (cd submodule &&
          test_must_fail compare_head
         ) &&
2:  ba50d6b0f3 ! 3:  4e8cdf60f4 t7406: avoid having git commands upstream of a 
pipe
    @@ -26,13 +26,13 @@
          git checkout master &&
          compare_head
         ) &&
    --   git diff --name-only | grep submodule &&
    +-   git diff --name-only | grep ^submodule$ &&
     +   git diff --name-only >out &&
    -+   grep submodule out &&
    ++   grep ^submodule$ out &&
         git submodule update &&
    --   git diff --name-only | grep submodule &&
    +-   git diff --name-only | grep ^submodule$ &&
     +   git diff --name-only >out &&
    -+   grep submodule out &&
    ++   grep ^submodule$ out &&
         (cd submodule &&
          compare_head
         ) &&
    @@ -40,12 +40,12 @@
          git checkout master &&
          compare_head
         ) &&
    --   git diff --name-only | grep submodule &&
    +-   git diff --name-only | grep ^submodule$ &&
     +   git diff --name-only >out &&
    -+   grep submodule out &&
    ++   grep ^submodule$ out &&
         git submodule update --checkout &&
    -    test_must_fail git diff --name-only \| grep submodule &&
    -    (cd submodule &&
    +    git diff --name-only >out &&
    +    ! grep ^submodule$ out &&
     @@
         H=$(git rev-parse --short HEAD) &&
         git commit -am "pre move" &&
3:  42f7b7f225 ! 4:  f171cbcc9a t7406: prefer test_* helper functions to test 
-[feds]
    @@ -6,13 +6,12 @@
         test failures, so use the test_* helper functions from
         test-lib-functions.sh.
     
    -    Note: The use of 'test_path_is_file submodule/.git' may look odd, but
    -    it is a file which is populated with a
    +    Also, add test_path_exists() to test-lib-function.sh while at it, so
    +    that we don't need to worry whether submodule/.git is a file or a
    +    directory.  It currently is a file with contents of the form
            gitdir: ../.git/modules/submodule
    -    directive.  If, in the future, handling of the submodule is changed and
    -    submodule/.git becomes a directory we can change this to
    -    test_path_is_dir (or perhaps write a test_path_exists helper function
    -    that doesn't care whether the path is a file or a directory).
    +    but it could be changed in the future to be a directory; this test
    +    only really cares that it exists.
     
         Signed-off-by: Elijah Newren <new...@gmail.com>
     
    @@ -34,8 +33,27 @@
         git submodule update --init &&
     -   test -e submodule/.git &&
     -   test_must_fail test -e none/.git
    -+   test_path_is_file submodule/.git &&
    ++   test_path_exists submodule/.git &&
     +   test_path_is_missing none/.git
        )
      '
      
    +
    +diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh
    +--- a/t/test-lib-functions.sh
    ++++ b/t/test-lib-functions.sh
    +@@
    +   fi
    + }
    +
    ++test_path_exists () {
    ++  if ! test -e "$1"
    ++  then
    ++          echo "Path $1 doesn't exist. $2"
    ++          false
    ++  fi
    ++}
    ++
    + # Check if the directory exists and is empty as expected, barf otherwise.
    + test_dir_is_empty () {
    +   test_path_is_dir "$1" &&
4:  54cf6531ec ! 5:  a44c566321 t7406: avoid using test_must_fail for commands 
other than git
    @@ -8,8 +8,8 @@
     --- a/t/t7406-submodule-update.sh
     +++ b/t/t7406-submodule-update.sh
     @@
    -    git submodule update --checkout &&
    -    test_must_fail git diff --name-only \| grep submodule &&
    +    git diff --name-only >out &&
    +    ! grep ^submodule$ out &&
         (cd submodule &&
     -    test_must_fail compare_head
     +    ! compare_head
5:  3019f2d01c < -:  ---------- t7406: fix call that was failing for the wrong 
reason

-- 
2.18.0.556.g1604670984

Reply via email to