Merge branch 'jc/diff-merge-base-multi'
[gitweb.git] / t / lib-httpd.sh
index 28aff887b5a92ec5919f4005010ef64f85d908e9..71effc5becd09d1289361767f6f54af8f1594627 100644 (file)
@@ -5,8 +5,7 @@
 
 if test -z "$GIT_TEST_HTTPD"
 then
-       say "skipping test, network testing disabled by default"
-       say "(define GIT_TEST_HTTPD to enable)"
+       skip_all="Network testing disabled (define GIT_TEST_HTTPD to enable)"
        test_done
 fi
 
@@ -46,7 +45,7 @@ HTTPD_DOCUMENT_ROOT_PATH=$HTTPD_ROOT_PATH/www
 
 if ! test -x "$LIB_HTTPD_PATH"
 then
-       say "skipping test, no web server found at '$LIB_HTTPD_PATH'"
+       skip_all="skipping test, no web server found at '$LIB_HTTPD_PATH'"
        test_done
 fi
 
@@ -59,12 +58,12 @@ then
        then
                if ! test $HTTPD_VERSION -ge 2
                then
-                       say "skipping test, at least Apache version 2 is required"
+                       skip_all="skipping test, at least Apache version 2 is required"
                        test_done
                fi
                if ! test -d "$DEFAULT_HTTPD_MODULE_PATH"
                then
-                       say "Apache module directory not found.  Skipping tests."
+                       skip_all="Apache module directory not found.  Skipping tests."
                        test_done
                fi
 
@@ -119,7 +118,7 @@ start_httpd() {
                >&3 2>&4
        if test $? -ne 0
        then
-               say "skipping test, web server setup failed"
+               skip_all="skipping test, web server setup failed"
                trap 'die' EXIT
                test_done
        fi
@@ -131,3 +130,32 @@ stop_httpd() {
        "$LIB_HTTPD_PATH" -d "$HTTPD_ROOT_PATH" \
                -f "$TEST_PATH/apache.conf" $HTTPD_PARA -k stop
 }
+
+test_http_push_nonff() {
+       REMOTE_REPO=$1
+       LOCAL_REPO=$2
+       BRANCH=$3
+
+       test_expect_success 'non-fast-forward push fails' '
+               cd "$REMOTE_REPO" &&
+               HEAD=$(git rev-parse --verify HEAD) &&
+
+               cd "$LOCAL_REPO" &&
+               git checkout $BRANCH &&
+               echo "changed" > path2 &&
+               git commit -a -m path2 --amend &&
+
+               !(git push -v origin >output 2>&1) &&
+               (cd "$REMOTE_REPO" &&
+                test $HEAD = $(git rev-parse --verify HEAD))
+       '
+
+       test_expect_success 'non-fast-forward push show ref status' '
+               grep "^ ! \[rejected\][ ]*$BRANCH -> $BRANCH (non-fast-forward)$" output
+       '
+
+       test_expect_success 'non-fast-forward push shows help message' '
+               grep "To prevent you from losing history, non-fast-forward updates were rejected" \
+                       output
+       '
+}