Merge branch 'jt/test-protocol-version' into jt/fetch-no-update-shallow-in-proto-v2
authorJunio C Hamano <gitster@pobox.com>
Mon, 1 Apr 2019 06:35:01 +0000 (15:35 +0900)
committerJunio C Hamano <gitster@pobox.com>
Mon, 1 Apr 2019 06:35:01 +0000 (15:35 +0900)
* jt/test-protocol-version:
t5552: compensate for v2 filtering ref adv.
tests: fix protocol version for overspecifications
t5700: only run with protocol version 1
t5512: compensate for v0 only sending HEAD symrefs
t5503: fix overspecification of trace expectation
tests: always test fetch of unreachable with v0
t5601: check ssh command only with protocol v0
tests: define GIT_TEST_PROTOCOL_VERSION

1  2 
t/README
t/t5551-http-fetch-smart.sh
diff --combined t/README
index 656288edcea5a23a5893ade5c2d81ee429eb26e8,21e941eb9453dccc0322e34e88299e7feee36cf7..136913ec2d62c282bf5bccf4022950fc97c711de
+++ b/t/README
@@@ -170,15 -170,6 +170,15 @@@ appropriately before running "make"
        implied by other options like --valgrind and
        GIT_TEST_INSTALLED.
  
 +--no-bin-wrappers::
 +      By default, the test suite uses the wrappers in
 +      `../bin-wrappers/` to execute `git` and friends. With this option,
 +      `../git` and friends are run directly. This is not recommended
 +      in general, as the wrappers contain safeguards to ensure that no
 +      files from an installed Git are used, but can speed up test runs
 +      especially on platforms where running shell scripts is expensive
 +      (most notably, Windows).
 +
  --root=<directory>::
        Create "trash" directories used to store all temporary data during
        testing under <directory>, instead of the t/ directory.
        variable to "1" or "0", respectively.
  
  --stress::
 ---stress=<N>::
        Run the test script repeatedly in multiple parallel jobs until
        one of them fails.  Useful for reproducing rare failures in
        flaky tests.  The number of parallel jobs is, in order of
 -      precedence: <N>, or the value of the GIT_TEST_STRESS_LOAD
 +      precedence: the value of the GIT_TEST_STRESS_LOAD
        environment variable, or twice the number of available
        processors (as shown by the 'getconf' utility), or 8.
        Implies `--verbose -x --immediate` to get the most information
        '.stress-<nr>' suffix, and the trash directory of the failed
        test job is renamed to end with a '.stress-failed' suffix.
  
 +--stress-jobs=<N>::
 +      Override the number of parallel jobs. Implies `--stress`.
 +
 +--stress-limit=<N>::
 +      When combined with --stress run the test script repeatedly
 +      this many times in each of the parallel jobs or until one of
 +      them fails, whichever comes first. Implies `--stress`.
 +
  You can also set the GIT_TEST_INSTALLED environment variable to
  the bindir of an existing git installation to test that installation.
  You still need to have built this git sandbox, from which various
@@@ -343,6 -327,9 +343,9 @@@ marked strings" in po/README for detail
  GIT_TEST_SPLIT_INDEX=<boolean> forces split-index mode on the whole
  test suite. Accept any boolean values that are accepted by git-config.
  
+ GIT_TEST_PROTOCOL_VERSION=<n>, when set, overrides the
+ 'protocol.version' setting to n if it is less than n.
  GIT_TEST_FULL_IN_PACK_ARRAY=<boolean> exercises the uncommon
  pack-objects code path where there are more than 1024 packs even if
  the actual number of packs in repository is below this limit. Accept
@@@ -374,10 -361,6 +377,10 @@@ GIT_TEST_INDEX_VERSION=<n> exercises th
  for the index version specified.  Can be set to any valid version
  (currently 2, 3, or 4).
  
 +GIT_TEST_PACK_SPARSE=<boolean> if enabled will default the pack-objects
 +builtin to use the sparse object walk. This can still be overridden by
 +the --no-sparse command-line argument.
 +
  GIT_TEST_PRELOAD_INDEX=<boolean> exercises the preload-index code path
  by overriding the minimum number of cache entries required per thread.
  
@@@ -934,15 -917,6 +937,15 @@@ library for your script to use
     test_oid_init or test_oid_cache.  Providing an unknown key is an
     error.
  
 + - yes [<string>]
 +
 +   This is often seen in modern UNIX but some platforms lack it, so
 +   the test harness overrides the platform implementation with a
 +   more limited one.  Use this only when feeding a handful lines of
 +   output to the downstream---unlike the real version, it generates
 +   only up to 99 lines.
 +
 +
  Prerequisites
  -------------
  
index ba83e567e5ca49c1664fe13f447e2744d55bfb3a,4c854e5189f61fc0191fc5dbb4d38f8e4fad21cf..a685d3edb66d197cef137186f667a7b4123e0f13
@@@ -43,7 -43,8 +43,8 @@@ test_expect_success 'clone http reposit
        < Cache-Control: no-cache, max-age=0, must-revalidate
        < Content-Type: application/x-git-upload-pack-result
        EOF
-       GIT_TRACE_CURL=true git clone --quiet $HTTPD_URL/smart/repo.git clone 2>err &&
+       GIT_TRACE_CURL=true GIT_TEST_PROTOCOL_VERSION= \
+               git clone --quiet $HTTPD_URL/smart/repo.git clone 2>err &&
        test_cmp file clone/file &&
        tr '\''\015'\'' Q <err |
        sed -e "
                /^< Content-Length: /d
                /^< Transfer-Encoding: /d
        " >actual &&
-       sed -e "s/^> Accept-Encoding: .*/> Accept-Encoding: ENCODINGS/" \
-                       actual >actual.smudged &&
-       test_cmp exp actual.smudged &&
  
-       grep "Accept-Encoding:.*gzip" actual >actual.gzip &&
-       test_line_count = 2 actual.gzip
+       # NEEDSWORK: If the overspecification of the expected result is reduced, we
+       # might be able to run this test in all protocol versions.
+       if test -z "$GIT_TEST_PROTOCOL_VERSION"
+       then
+               sed -e "s/^> Accept-Encoding: .*/> Accept-Encoding: ENCODINGS/" \
+                               actual >actual.smudged &&
+               test_cmp exp actual.smudged &&
+               grep "Accept-Encoding:.*gzip" actual >actual.gzip &&
+               test_line_count = 2 actual.gzip
+       fi
  '
  
  test_expect_success 'fetch changes via http' '
@@@ -103,7 -110,13 +110,13 @@@ test_expect_success 'used upload-pack s
        GET  /smart/repo.git/info/refs?service=git-upload-pack HTTP/1.1 200
        POST /smart/repo.git/git-upload-pack HTTP/1.1 200
        EOF
-       check_access_log exp
+       # NEEDSWORK: If the overspecification of the expected result is reduced, we
+       # might be able to run this test in all protocol versions.
+       if test -z "$GIT_TEST_PROTOCOL_VERSION"
+       then
+               check_access_log exp
+       fi
  '
  
  test_expect_success 'follow redirects (301)' '
@@@ -215,8 -228,14 +228,14 @@@ test_expect_success 'cookies stored in 
        git config http.cookiefile cookies.txt &&
        git config http.savecookies true &&
        git ls-remote $HTTPD_URL/smart_cookies/repo.git master &&
-       tail -3 cookies.txt | sort >cookies_tail.txt &&
-       test_cmp expect_cookies.txt cookies_tail.txt
+       # NEEDSWORK: If the overspecification of the expected result is reduced, we
+       # might be able to run this test in all protocol versions.
+       if test -z "$GIT_TEST_PROTOCOL_VERSION"
+       then
+               tail -3 cookies.txt | sort >cookies_tail.txt &&
+               test_cmp expect_cookies.txt cookies_tail.txt
+       fi
  '
  
  test_expect_success 'transfer.hiderefs works over smart-http' '
@@@ -306,7 -325,10 +325,10 @@@ test_expect_success 'test allowreachabl
  
        git init --bare test_reachable.git &&
        git -C test_reachable.git remote add origin "$HTTPD_URL/smart/repo.git" &&
-       test_must_fail git -C test_reachable.git fetch origin "$(git rev-parse HEAD)"
+       # Some protocol versions (e.g. 2) support fetching
+       # unadvertised objects, so restrict this test to v0.
+       test_must_fail env GIT_TEST_PROTOCOL_VERSION= \
+               git -C test_reachable.git fetch origin "$(git rev-parse HEAD)"
  '
  
  test_expect_success 'test allowanysha1inwant with unreachable' '
  
        git init --bare test_reachable.git &&
        git -C test_reachable.git remote add origin "$HTTPD_URL/smart/repo.git" &&
-       test_must_fail git -C test_reachable.git fetch origin "$(git rev-parse HEAD)" &&
+       # Some protocol versions (e.g. 2) support fetching
+       # unadvertised objects, so restrict this test to v0.
+       test_must_fail env GIT_TEST_PROTOCOL_VERSION= \
+               git -C test_reachable.git fetch origin "$(git rev-parse HEAD)" &&
  
        git -C "$server" config uploadpack.allowanysha1inwant 1 &&
        git -C test_reachable.git fetch origin "$(git rev-parse HEAD)"
@@@ -429,10 -454,5 +454,10 @@@ test_expect_success 'GIT_TRACE_CURL_NO_
        ! grep "=> Send data" err
  '
  
 +test_expect_success 'server-side error detected' '
 +      test_must_fail git clone $HTTPD_URL/error_smart/repo.git 2>actual &&
 +      grep "server-side error" actual
 +'
 +
  stop_httpd
  test_done