t / t556x_commonon commit Merge branch 'jc/fsck-dropped-errors' (30ce3b3)
   1#!/bin/sh
   2
   3find_file() {
   4        cd "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
   5        find $1 -type f |
   6        sed -e 1q
   7}
   8
   9config() {
  10        git --git-dir="$HTTPD_DOCUMENT_ROOT_PATH/repo.git" config $1 $2
  11}
  12
  13test_expect_success 'setup repository' '
  14        echo content >file &&
  15        git add file &&
  16        git commit -m one &&
  17
  18        mkdir "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
  19        (cd "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
  20         git --bare init &&
  21         : >objects/info/alternates &&
  22         : >objects/info/http-alternates
  23        ) &&
  24        git remote add public "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
  25        git push public master:master &&
  26
  27        (cd "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
  28         git repack -a -d
  29        ) &&
  30
  31        echo other >file &&
  32        git add file &&
  33        git commit -m two &&
  34        git push public master:master &&
  35
  36        LOOSE_URL=$(find_file objects/??) &&
  37        PACK_URL=$(find_file objects/pack/*.pack) &&
  38        IDX_URL=$(find_file objects/pack/*.idx)
  39'
  40
  41get_static_files() {
  42        GET HEAD "$1" &&
  43        GET info/refs "$1" &&
  44        GET objects/info/packs "$1" &&
  45        GET objects/info/alternates "$1" &&
  46        GET objects/info/http-alternates "$1" &&
  47        GET $LOOSE_URL "$1" &&
  48        GET $PACK_URL "$1" &&
  49        GET $IDX_URL "$1"
  50}
  51
  52SMART=smart
  53GIT_HTTP_EXPORT_ALL=1 && export GIT_HTTP_EXPORT_ALL
  54test_expect_success 'direct refs/heads/master not found' '
  55        log_div "refs/heads/master" &&
  56        GET refs/heads/master "404 Not Found"
  57'
  58test_expect_success 'static file is ok' '
  59        log_div "getanyfile default" &&
  60        get_static_files "200 OK"
  61'
  62SMART=smart_noexport
  63unset GIT_HTTP_EXPORT_ALL
  64test_expect_success 'no export by default' '
  65        log_div "no git-daemon-export-ok" &&
  66        get_static_files "404 Not Found"
  67'
  68test_expect_success 'export if git-daemon-export-ok' '
  69        log_div "git-daemon-export-ok" &&
  70        (cd "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
  71         touch git-daemon-export-ok
  72        ) &&
  73        get_static_files "200 OK"
  74'
  75SMART=smart
  76GIT_HTTP_EXPORT_ALL=1 && export GIT_HTTP_EXPORT_ALL
  77test_expect_success 'static file if http.getanyfile true is ok' '
  78        log_div "getanyfile true" &&
  79        config http.getanyfile true &&
  80        get_static_files "200 OK"
  81'
  82test_expect_success 'static file if http.getanyfile false fails' '
  83        log_div "getanyfile false" &&
  84        config http.getanyfile false &&
  85        get_static_files "403 Forbidden"
  86'
  87
  88test_expect_success 'http.uploadpack default enabled' '
  89        log_div "uploadpack default" &&
  90        GET info/refs?service=git-upload-pack "200 OK"  &&
  91        POST git-upload-pack 0000 "200 OK"
  92'
  93test_expect_success 'http.uploadpack true' '
  94        log_div "uploadpack true" &&
  95        config http.uploadpack true &&
  96        GET info/refs?service=git-upload-pack "200 OK" &&
  97        POST git-upload-pack 0000 "200 OK"
  98'
  99test_expect_success 'http.uploadpack false' '
 100        log_div "uploadpack false" &&
 101        config http.uploadpack false &&
 102        GET info/refs?service=git-upload-pack "403 Forbidden" &&
 103        POST git-upload-pack 0000 "403 Forbidden"
 104'
 105
 106test_expect_success 'http.receivepack default disabled' '
 107        log_div "receivepack default" &&
 108        GET info/refs?service=git-receive-pack "403 Forbidden"  &&
 109        POST git-receive-pack 0000 "403 Forbidden"
 110'
 111test_expect_success 'http.receivepack true' '
 112        log_div "receivepack true" &&
 113        config http.receivepack true &&
 114        GET info/refs?service=git-receive-pack "200 OK" &&
 115        POST git-receive-pack 0000 "200 OK"
 116'
 117test_expect_success 'http.receivepack false' '
 118        log_div "receivepack false" &&
 119        config http.receivepack false &&
 120        GET info/refs?service=git-receive-pack "403 Forbidden" &&
 121        POST git-receive-pack 0000 "403 Forbidden"
 122'