Merge branch 'jt/fetch-negotiator-skipping'
authorJunio C Hamano <gitster@pobox.com>
Mon, 20 Aug 2018 18:33:51 +0000 (11:33 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 20 Aug 2018 18:33:51 +0000 (11:33 -0700)
Test fix.

* jt/fetch-negotiator-skipping:
t5552: suppress upload-pack trace output

1  2 
t/t5552-skipping-fetch-negotiator.sh
index 3b60bd44e0a925931bc0ccb7c0b67df4809a6773,0ad50dd839fe56d240df9a7fd210c05574e41860..5ad5bece55620138ce76579abb6e76c0710d126d
@@@ -28,6 -28,19 +28,19 @@@ have_not_sent () 
        done
  }
  
+ # trace_fetch <client_dir> <server_dir> [args]
+ #
+ # Trace the packet output of fetch, but make sure we disable the variable
+ # in the child upload-pack, so we don't combine the results in the same file.
+ trace_fetch () {
+       client=$1; shift
+       server=$1; shift
+       GIT_TRACE_PACKET="$(pwd)/trace" \
+       git -C "$client" fetch \
+         --upload-pack 'unset GIT_TRACE_PACKET; git-upload-pack' \
+         "$server" "$@"
+ }
  test_expect_success 'commits with no parents are sent regardless of skip distance' '
        git init server &&
        test_commit -C server to_fetch &&
        # "c1" has no parent, it is still sent as "have" even though it would
        # normally be skipped.
        test_config -C client fetch.negotiationalgorithm skipping &&
-       GIT_TRACE_PACKET="$(pwd)/trace" git -C client fetch "$(pwd)/server" &&
+       trace_fetch client "$(pwd)/server" &&
        have_sent c7 c5 c2 c1 &&
        have_not_sent c6 c4 c3
  '
  
 +test_expect_success 'unknown fetch.negotiationAlgorithm values error out' '
 +      rm -rf server client trace &&
 +      git init server &&
 +      test_commit -C server to_fetch &&
 +
 +      git init client &&
 +      test_commit -C client on_client &&
 +      git -C client checkout on_client &&
 +
 +      test_config -C client fetch.negotiationAlgorithm invalid &&
 +      test_must_fail git -C client fetch "$(pwd)/server" 2>err &&
 +      test_i18ngrep "unknown fetch negotiation algorithm" err &&
 +
 +      # Explicit "default" value
 +      test_config -C client fetch.negotiationAlgorithm default &&
 +      git -C client -c fetch.negotiationAlgorithm=default fetch "$(pwd)/server" &&
 +
 +      # Implementation detail: If there is nothing to fetch, we will not error out
 +      test_config -C client fetch.negotiationAlgorithm invalid &&
 +      git -C client fetch "$(pwd)/server" 2>err &&
 +      test_i18ngrep ! "unknown fetch negotiation algorithm" err
 +'
 +
  test_expect_success 'when two skips collide, favor the larger one' '
        rm -rf server client trace &&
        git init server &&
        # the next "have" sent will be "c1" (from "c6" skip 4) and not "c4"
        # (from "c5side" skip 1).
        test_config -C client fetch.negotiationalgorithm skipping &&
-       GIT_TRACE_PACKET="$(pwd)/trace" git -C client fetch "$(pwd)/server" &&
+       trace_fetch client "$(pwd)/server" &&
        have_sent c5side c11 c9 c6 c1 &&
        have_not_sent c10 c8 c7 c5 c4 c3 c2
  '
@@@ -114,7 -104,7 +127,7 @@@ test_expect_success 'use ref advertisem
        # not need to send any ancestors of "c3", but we still need to send "c3"
        # itself.
        test_config -C client fetch.negotiationalgorithm skipping &&
-       GIT_TRACE_PACKET="$(pwd)/trace" git -C client fetch origin to_fetch &&
+       trace_fetch client origin to_fetch &&
        have_sent c5 c4^ c2side &&
        have_not_sent c4 c4^^ c4^^^
  '
@@@ -144,7 -134,7 +157,7 @@@ test_expect_success 'handle clock skew
        # and sent, because (due to clock skew) its only parent has already been
        # popped off the priority queue.
        test_config -C client fetch.negotiationalgorithm skipping &&
-       GIT_TRACE_PACKET="$(pwd)/trace" git -C client fetch "$(pwd)/server" &&
+       trace_fetch client "$(pwd)/server" &&
        have_sent c2 c1 old4 old2 old1 &&
        have_not_sent old3
  '
@@@ -176,7 -166,7 +189,7 @@@ test_expect_success 'do not send "have
        test_commit -C server commit-on-b1 &&
  
        test_config -C client fetch.negotiationalgorithm skipping &&
-       GIT_TRACE_PACKET="$(pwd)/trace" git -C client fetch "$(pwd)/server" to_fetch &&
+       trace_fetch client "$(pwd)/server" to_fetch &&
        grep "  fetch" trace &&
  
        # fetch-pack sends 2 requests each containing 16 "have" lines before