t / t5560-http-backend-noserver.shon commit Skip 'git archive --remote' test on msysGit (97f2c33)
   1#!/bin/sh
   2
   3test_description='test git-http-backend-noserver'
   4. ./test-lib.sh
   5
   6HTTPD_DOCUMENT_ROOT_PATH="$TRASH_DIRECTORY"
   7
   8test_have_prereq MINGW && export GREP_OPTIONS=-U
   9
  10run_backend() {
  11        echo "$2" |
  12        QUERY_STRING="${1#*\?}" \
  13        GIT_PROJECT_ROOT="$HTTPD_DOCUMENT_ROOT_PATH" \
  14        PATH_INFO="${1%%\?*}" \
  15        git http-backend >act.out 2>act.err
  16}
  17
  18GET() {
  19        export REQUEST_METHOD="GET" &&
  20        run_backend "/repo.git/$1" &&
  21        unset REQUEST_METHOD &&
  22        if ! grep "Status" act.out >act
  23        then
  24                printf "Status: 200 OK\r\n" >act
  25        fi
  26        printf "Status: $2\r\n" >exp &&
  27        test_cmp exp act
  28}
  29
  30POST() {
  31        export REQUEST_METHOD="POST" &&
  32        export CONTENT_TYPE="application/x-$1-request" &&
  33        run_backend "/repo.git/$1" "$2" &&
  34        unset REQUEST_METHOD &&
  35        unset CONTENT_TYPE &&
  36        if ! grep "Status" act.out >act
  37        then
  38                printf "Status: 200 OK\r\n" >act
  39        fi
  40        printf "Status: $3\r\n" >exp &&
  41        test_cmp exp act
  42}
  43
  44log_div() {
  45        return 0
  46}
  47
  48. "$TEST_DIRECTORY"/t556x_common
  49
  50expect_aliased() {
  51        export REQUEST_METHOD="GET" &&
  52        if test $1 = 0; then
  53                run_backend "$2"
  54        else
  55                run_backend "$2" &&
  56                echo "fatal: '$2': aliased" >exp.err &&
  57                test_cmp exp.err act.err
  58        fi
  59        unset REQUEST_METHOD
  60}
  61
  62test_expect_success 'http-backend blocks bad PATH_INFO' '
  63        config http.getanyfile true &&
  64
  65        expect_aliased 0 /repo.git/HEAD &&
  66
  67        expect_aliased 1 /repo.git/../HEAD &&
  68        expect_aliased 1 /../etc/passwd &&
  69        expect_aliased 1 ../etc/passwd &&
  70        expect_aliased 1 /etc//passwd &&
  71        expect_aliased 1 /etc/./passwd &&
  72        expect_aliased 1 //domain/data.txt
  73'
  74
  75test_done