1#!/bin/sh23test_description='test git-http-backend-noserver'4. ./test-lib.sh56HTTPD_DOCUMENT_ROOT_PATH="$TRASH_DIRECTORY"78if test_have_prereq GREP_STRIPS_CR9then10GREP_OPTIONS=-U11export GREP_OPTIONS12fi1314run_backend() {15echo "$2" |16QUERY_STRING="${1#*[?]}" \17PATH_TRANSLATED="$HTTPD_DOCUMENT_ROOT_PATH/${1%%[?]*}" \18git http-backend >act.out 2>act.err19}2021GET() {22REQUEST_METHOD="GET" && export REQUEST_METHOD &&23run_backend "/repo.git/$1" &&24sane_unset REQUEST_METHOD &&25if ! grep "Status" act.out >act26then27printf "Status: 200 OK\r\n" >act28fi29printf "Status: $2\r\n" >exp &&30test_cmp exp act31}3233POST() {34REQUEST_METHOD="POST" && export REQUEST_METHOD &&35CONTENT_TYPE="application/x-$1-request" && export CONTENT_TYPE &&36run_backend "/repo.git/$1" "$2" &&37sane_unset REQUEST_METHOD &&38sane_unset CONTENT_TYPE &&39if ! grep "Status" act.out >act40then41printf "Status: 200 OK\r\n" >act42fi43printf "Status: $3\r\n" >exp &&44test_cmp exp act45}4647log_div() {48return 049}5051. "$TEST_DIRECTORY"/t556x_common5253expect_aliased() {54REQUEST_METHOD="GET" && export REQUEST_METHOD &&55if test $1 = 0; then56run_backend "$2"57else58run_backend "$2" &&59echo "fatal: '$2': aliased" >exp.err &&60test_cmp exp.err act.err61fi62unset REQUEST_METHOD63}6465test_expect_success 'http-backend blocks bad PATH_INFO' '66config http.getanyfile true &&6768expect_aliased 0 /repo.git/HEAD &&6970expect_aliased 1 /repo.git/../HEAD &&71expect_aliased 1 /../etc/passwd &&72expect_aliased 1 ../etc/passwd &&73expect_aliased 1 /etc//passwd &&74expect_aliased 1 /etc/./passwd &&75expect_aliased 1 //domain/data.txt76'7778test_done