diff options
Diffstat (limited to 't/t5541-http-push-smart.sh')
-rwxr-xr-x | t/t5541-http-push-smart.sh | 114 |
1 files changed, 47 insertions, 67 deletions
diff --git a/t/t5541-http-push-smart.sh b/t/t5541-http-push-smart.sh index 2f09ff4..71428f3 100755 --- a/t/t5541-http-push-smart.sh +++ b/t/t5541-http-push-smart.sh @@ -36,28 +36,6 @@ test_expect_success 'setup remote repository' ' setup_askpass_helper -cat >exp <<EOF -GET /smart/test_repo.git/info/refs?service=git-upload-pack HTTP/1.1 200 -POST /smart/test_repo.git/git-upload-pack HTTP/1.1 200 -EOF -test_expect_success 'no empty path components' ' - # Clear the log, so that it does not affect the "used receive-pack - # service" test which reads the log too. - test_when_finished ">\"\$HTTPD_ROOT_PATH\"/access.log" && - - # In the URL, add a trailing slash, and see if git appends yet another - # slash. - cd "$ROOT_PATH" && - git clone $HTTPD_URL/smart/test_repo.git/ test_repo_clone && - - # NEEDSWORK: If the overspecification of the expected result is reduced, we - # might be able to run this test in all protocol versions. - if test "$GIT_TEST_PROTOCOL_VERSION" = 0 - then - check_access_log exp - fi -' - test_expect_success 'clone remote repository' ' rm -rf test_repo_clone && git clone $HTTPD_URL/smart/test_repo.git test_repo_clone && @@ -67,6 +45,10 @@ test_expect_success 'clone remote repository' ' ' test_expect_success 'push to remote repository (standard)' ' + # Clear the log, so that the "used receive-pack service" test below + # sees just what we did here. + >"$HTTPD_ROOT_PATH"/access.log && + cd "$ROOT_PATH"/test_repo_clone && : >path2 && git add path2 && @@ -80,6 +62,34 @@ test_expect_success 'push to remote repository (standard)' ' test $HEAD = $(git rev-parse --verify HEAD)) ' +test_expect_success 'used receive-pack service' ' + cat >exp <<-\EOF && + GET /smart/test_repo.git/info/refs?service=git-receive-pack HTTP/1.1 200 + POST /smart/test_repo.git/git-receive-pack HTTP/1.1 200 + EOF + + check_access_log exp +' + +test_expect_success 'push to remote repository (standard) with sending Accept-Language' ' + cat >exp <<-\EOF && + => Send header: Accept-Language: ko-KR, *;q=0.9 + => Send header: Accept-Language: ko-KR, *;q=0.9 + EOF + + cd "$ROOT_PATH"/test_repo_clone && + : >path_lang && + git add path_lang && + test_tick && + git commit -m path_lang && + HEAD=$(git rev-parse --verify HEAD) && + GIT_TRACE_CURL=true LANGUAGE="ko_KR.UTF-8" git push -v -v 2>err && + ! grep "Expect: 100-continue" err && + + grep "=> Send header: Accept-Language:" err >err.language && + test_cmp exp err.language +' + test_expect_success 'push already up-to-date' ' git push ' @@ -122,28 +132,6 @@ test_expect_success 'rejected update prints status' ' ' rm -f "$HTTPD_DOCUMENT_ROOT_PATH/test_repo.git/hooks/update" -cat >exp <<EOF -GET /smart/test_repo.git/info/refs?service=git-upload-pack HTTP/1.1 200 -POST /smart/test_repo.git/git-upload-pack HTTP/1.1 200 -GET /smart/test_repo.git/info/refs?service=git-receive-pack HTTP/1.1 200 -POST /smart/test_repo.git/git-receive-pack HTTP/1.1 200 -GET /smart/test_repo.git/info/refs?service=git-receive-pack HTTP/1.1 200 -GET /smart/test_repo.git/info/refs?service=git-receive-pack HTTP/1.1 200 -POST /smart/test_repo.git/git-receive-pack HTTP/1.1 200 -GET /smart/test_repo.git/info/refs?service=git-receive-pack HTTP/1.1 200 -POST /smart/test_repo.git/git-receive-pack HTTP/1.1 200 -GET /smart/test_repo.git/info/refs?service=git-receive-pack HTTP/1.1 200 -POST /smart/test_repo.git/git-receive-pack HTTP/1.1 200 -EOF -test_expect_success 'used receive-pack service' ' - # NEEDSWORK: If the overspecification of the expected result is reduced, we - # might be able to run this test in all protocol versions. - if test "$GIT_TEST_PROTOCOL_VERSION" = 0 - then - check_access_log exp - fi -' - test_http_push_nonff "$HTTPD_DOCUMENT_ROOT_PATH"/test_repo.git \ "$ROOT_PATH"/test_repo_clone main success @@ -165,7 +153,7 @@ test_expect_success 'push fails for non-fast-forward refs unmatched by remote he ' test_expect_success 'push fails for non-fast-forward refs unmatched by remote helper: our output' ' - test_i18ngrep "Updates were rejected because" \ + test_grep "Updates were rejected because" \ output ' @@ -244,8 +232,9 @@ test_expect_success 'push --atomic fails on server-side errors' ' test_config -C "$d" http.receivepack true && up="$HTTPD_URL"/smart/atomic-branches.git && - # break ref updates for other on the remote site - mkdir "$d/refs/heads/other.lock" && + # Create d/f conflict to break ref updates for other on the remote site. + git -C "$d" update-ref -d refs/heads/other && + git -C "$d" update-ref refs/heads/other/conflict HEAD && # add the new commit to other git branch -f other collateral && @@ -253,18 +242,9 @@ test_expect_success 'push --atomic fails on server-side errors' ' # --atomic should cause entire push to be rejected test_must_fail git push --atomic "$up" atomic other 2>output && - # the new branch should not have been created upstream - test_must_fail git -C "$d" show-ref --verify refs/heads/atomic && - - # upstream should still reflect atomic2, the last thing we pushed - # successfully - git rev-parse atomic2 >expected && - # ...to other. - git -C "$d" rev-parse refs/heads/other >actual && - test_cmp expected actual && - - # the new branch should not have been created upstream + # The atomic and other branches should not be created upstream. test_must_fail git -C "$d" show-ref --verify refs/heads/atomic && + test_must_fail git -C "$d" show-ref --verify refs/heads/other && # the failed refs should be indicated to the user grep "^ ! .*rejected.* other -> other .*atomic transaction failed" output && @@ -309,7 +289,7 @@ test_expect_success TTY 'push shows progress when stderr is a tty' ' cd "$ROOT_PATH"/test_repo_clone && test_commit noisy && test_terminal git push >output 2>&1 && - test_i18ngrep "^Writing objects" output + test_grep "^Writing objects" output ' test_expect_success TTY 'push --quiet silences status and progress' ' @@ -323,16 +303,16 @@ test_expect_success TTY 'push --no-progress silences progress but not status' ' cd "$ROOT_PATH"/test_repo_clone && test_commit no-progress && test_terminal git push --no-progress >output 2>&1 && - test_i18ngrep "^To http" output && - test_i18ngrep ! "^Writing objects" output + test_grep "^To http" output && + test_grep ! "^Writing objects" output ' test_expect_success 'push --progress shows progress to non-tty' ' cd "$ROOT_PATH"/test_repo_clone && test_commit progress && git push --progress >output 2>&1 && - test_i18ngrep "^To http" output && - test_i18ngrep "^Writing objects" output + test_grep "^To http" output && + test_grep "^Writing objects" output ' test_expect_success 'http push gives sane defaults to reflog' ' @@ -501,10 +481,10 @@ test_expect_success 'colorize errors/hints' ' -c color.push=always \ push origin origin/main^:main 2>act && test_decode_color <act >decoded && - test_i18ngrep "<RED>.*rejected.*<RESET>" decoded && - test_i18ngrep "<RED>error: failed to push some refs" decoded && - test_i18ngrep "<YELLOW>hint: " decoded && - test_i18ngrep ! "^hint: " decoded + test_grep "<RED>.*rejected.*<RESET>" decoded && + test_grep "<RED>error: failed to push some refs" decoded && + test_grep "<YELLOW>hint: " decoded && + test_grep ! "^hint: " decoded ' test_expect_success 'report error server does not provide ref status' ' |