summaryrefslogtreecommitdiff
path: root/t/t5545-push-options.sh
diff options
context:
space:
mode:
authorStefan Beller <sbeller@google.com>2017-02-08 22:04:00 (GMT)
committerJunio C Hamano <gitster@pobox.com>2017-02-08 23:45:01 (GMT)
commit438fc68462d5839ef6ca231cdcb411105eaf0ba2 (patch)
treea3cb6629e7da46a4888232c2a789af6954cbf95d /t/t5545-push-options.sh
parent6e3a7b3398559305c7a239a42e447c21a8f39ff8 (diff)
downloadgit-438fc68462d5839ef6ca231cdcb411105eaf0ba2.zip
git-438fc68462d5839ef6ca231cdcb411105eaf0ba2.tar.gz
git-438fc68462d5839ef6ca231cdcb411105eaf0ba2.tar.bz2
push options: pass push options to the transport helper
When using non-builtin protocols relying on a transport helper (such as http), push options are not propagated to the helper. The user could ask for push options and a push would seemingly succeed, but the push options would never be transported to the server, misleading the users expectation. Fix this by propagating the push options to the transport helper. This is only addressing the first issue of (1) the helper protocol does not propagate push-option (2) the http helper is not prepared to handle push-option Once we fix (2), the http transport helper can make use of push options as well, but that happens as a follow up. (1) is a bug fix, whereas (2) is a feature, which is why we only do (1) here. Signed-off-by: Stefan Beller <sbeller@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t5545-push-options.sh')
-rwxr-xr-xt/t5545-push-options.sh15
1 files changed, 15 insertions, 0 deletions
diff --git a/t/t5545-push-options.sh b/t/t5545-push-options.sh
index ea813b9..9a57a7d 100755
--- a/t/t5545-push-options.sh
+++ b/t/t5545-push-options.sh
@@ -3,6 +3,8 @@
test_description='pushing to a repository using push options'
. ./test-lib.sh
+. "$TEST_DIRECTORY"/lib-httpd.sh
+start_httpd
mk_repo_pair () {
rm -rf workbench upstream &&
@@ -100,4 +102,17 @@ test_expect_success 'two push options work' '
test_cmp expect upstream/.git/hooks/post-receive.push_options
'
+test_expect_success 'push option denied properly by http remote helper' '\
+ mk_repo_pair &&
+ git -C upstream config receive.advertisePushOptions false &&
+ git -C upstream config http.receivepack true &&
+ cp -R upstream/.git "$HTTPD_DOCUMENT_ROOT_PATH"/upstream.git &&
+ git clone "$HTTPD_URL"/smart/upstream test_http_clone &&
+ test_commit -C test_http_clone one &&
+ test_must_fail git -C test_http_clone push --push-option=asdf origin master &&
+ git -C test_http_clone push origin master
+'
+
+stop_httpd
+
test_done