On Tue, Aug 08, 2017 at 05:32:21PM +0200, René Scharfe wrote: > Am 08.08.2017 um 17:18 schrieb Adam Dinwoodie: > > The t3700-add.sh test is currently failing on the pu branch on Cygwin. > > To my surprise, the problem appears to have been introduced by a merge, > > 867fa1d6a. Both parents of that merge have the test succeeding, but > > it's failing on that merge commit. > > > > Failing test output below: > > > expecting success: > > git reset --hard && > > echo foo >foo3 && > > git add foo3 && > > git add --chmod=+x foo3 && > > test_mode_in_index 100755 foo3 && > > echo foo >xfoo3 && > > chmod 755 xfoo3 && > > git add xfoo3 && > > git add --chmod=-x xfoo3 && > > test_mode_in_index 100644 xfoo3 > > > > ++ git reset --hard > > HEAD is now at d12df1f commit all > > ++ echo foo > > ++ git add foo3 > > ++ git add --chmod=+x foo3 > > ++ test_mode_in_index 100755 foo3 > > ++ case "$(git ls-files -s "$2")" in > > +++ git ls-files -s foo3 > > ++ echo pass > > pass > > ++ echo foo > > ++ chmod 755 xfoo3 > > ++ git add xfoo3 > > ++ git add --chmod=-x xfoo3 > > cannot chmod 'xfoo3'++ test_mode_in_index 100644 xfoo3 > > ++ case "$(git ls-files -s "$2")" in > > +++ git ls-files -s xfoo3 > > ++ echo fail > > fail > > ++ git ls-files -s xfoo3 > > 120000 c5c4ca97a3a080c32920941b665e94a997901491 0 xfoo3 > > ++ return 1 > > + test_eval_ret_=1 > > + want_trace > > + test t = t > > + test t = t > > + set +x > > error: last command exited with $?=1 > > not ok 41 - git add --chmod=[+-]x changes index with already added file > > # > > # git reset --hard && > > # echo foo >foo3 && > > # git add foo3 && > > # git add --chmod=+x foo3 && > > # test_mode_in_index 100755 foo3 && > > # echo foo >xfoo3 && > > # chmod 755 xfoo3 && > > # git add xfoo3 && > > # git add --chmod=-x xfoo3 && > > # test_mode_in_index 100644 xfoo3 > > # > > > > That's strange. The two changes don't seem to be related at all: > > diff --git a/t/t3700-add.sh b/t/t3700-add.sh > index f3a4b4a913..06e3835efb 100755 > --- a/t/t3700-add.sh > +++ b/t/t3700-add.sh > @@ -331,9 +331,8 @@ test_expect_success 'git add --dry-run --ignore-missing of non-existing file out > test_i18ncmp expect.err actual.err > ' > > -test_expect_success 'git add empty string should invoke warning' ' > - git add "" 2>output && > - test_i18ngrep "warning: empty strings" output > +test_expect_success 'git add empty string should fail' ' > + test_must_fail git add "" > ' > > test_expect_success 'git add --chmod=[+-]x stages correctly' ' > @@ -355,7 +354,7 @@ test_expect_success POSIXPERM,SYMLINKS 'git add --chmod=+x with symlinks' ' > ' > > test_expect_success 'git add --chmod=[+-]x changes index with already added file' ' > - rm -f foo3 xfoo3 && > + git reset --hard && > echo foo >foo3 && > git add foo3 && > git add --chmod=+x foo3 && > > The only difference I can see being introduced with the first change > is that the file "output" is gone now. Yep! I thought it was strange too. I spent some time undoing and redoing the changes to check the problem was reproducible. > Does it help to add the "rm -f foo3 xfoo3 &&" back, in addition to > the "git reset --hard"? Apparently so. Including only the output from that test: expecting success: rm -f foo3 xfoo3 && git reset --hard && echo foo >foo3 && git add foo3 && git add --chmod=+x foo3 && test_mode_in_index 100755 foo3 && echo foo >xfoo3 && chmod 755 xfoo3 && git add xfoo3 && git add --chmod=-x xfoo3 && test_mode_in_index 100644 xfoo3 ++ rm -f foo3 xfoo3 ++ git reset --hard HEAD is now at 02bfd98 commit all ++ echo foo ++ git add foo3 ++ git add --chmod=+x foo3 ++ test_mode_in_index 100755 foo3 ++ case "$(git ls-files -s "$2")" in +++ git ls-files -s foo3 ++ echo pass pass ++ echo foo ++ chmod 755 xfoo3 ++ git add xfoo3 ++ git add --chmod=-x xfoo3 ++ test_mode_in_index 100644 xfoo3 ++ case "$(git ls-files -s "$2")" in +++ git ls-files -s xfoo3 ++ echo pass pass + test_eval_ret_=0 + want_trace + test t = t + test t = t + set +x ok 41 - git add --chmod=[+-]x changes index with already added file I'm running a bisect overnight to try to isolate the commit on the left merge parent that seems to be interacting badly with the commit on the right, and will send in the results from that when I have them.