Merge branch 'cb/httpd-test-fix-port'
authorJunio C Hamano <gitster@pobox.com>
Wed, 19 Oct 2011 04:59:11 +0000 (21:59 -0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 19 Oct 2011 04:59:11 +0000 (21:59 -0700)
* cb/httpd-test-fix-port:
use test number as port number

1  2 
t/t5550-http-fetch.sh
diff --combined t/t5550-http-fetch.sh
index d1ab4d0e4c8e0c669a88c2a52a6592643a3a99c6,a2db096a1e9474ae9c41083d0a49e05e45a67418..311a33ca84f693b9410bab9e282ad0ebcae87441
@@@ -1,15 -1,15 +1,15 @@@
  #!/bin/sh
  
 -test_description='test fetching over http'
 +test_description='test dumb fetching over http via static file'
  . ./test-lib.sh
  
  if test -n "$NO_CURL"; then
 -      say 'skipping test, git built without http support'
 +      skip_all='skipping test, git built without http support'
        test_done
  fi
  
- . "$TEST_DIRECTORY"/lib-httpd.sh
  LIB_HTTPD_PORT=${LIB_HTTPD_PORT-'5550'}
+ . "$TEST_DIRECTORY"/lib-httpd.sh
  start_httpd
  
  test_expect_success 'setup repository' '
@@@ -30,135 -30,17 +30,135 @@@ test_expect_success 'create http-access
  '
  
  test_expect_success 'clone http repository' '
 -      git clone $HTTPD_URL/repo.git clone &&
 +      git clone $HTTPD_URL/dumb/repo.git clone-tmpl &&
 +      cp -R clone-tmpl clone &&
        test_cmp file clone/file
  '
  
 +test_expect_success 'create password-protected repository' '
 +      mkdir "$HTTPD_DOCUMENT_ROOT_PATH/auth/" &&
 +      cp -Rf "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" \
 +             "$HTTPD_DOCUMENT_ROOT_PATH/auth/repo.git"
 +'
 +
 +test_expect_success 'setup askpass helpers' '
 +      cat >askpass <<-EOF &&
 +      #!/bin/sh
 +      echo >>"$PWD/askpass-query" "askpass: \$*" &&
 +      cat "$PWD/askpass-response"
 +      EOF
 +      chmod +x askpass &&
 +      GIT_ASKPASS="$PWD/askpass" &&
 +      export GIT_ASKPASS &&
 +      >askpass-expect-none &&
 +      echo "askpass: Password for '\''$HTTPD_DEST'\'': " >askpass-expect-pass &&
 +      { echo "askpass: Username for '\''$HTTPD_DEST'\'': " &&
 +        cat askpass-expect-pass
 +      } >askpass-expect-both
 +'
 +
 +test_expect_success 'cloning password-protected repository can fail' '
 +      >askpass-query &&
 +      echo wrong >askpass-response &&
 +      test_must_fail git clone "$HTTPD_URL/auth/repo.git" clone-auth-fail &&
 +      test_cmp askpass-expect-both askpass-query
 +'
 +
 +test_expect_success 'http auth can use user/pass in URL' '
 +      >askpass-query &&
 +      echo wrong >askpass-reponse &&
 +      git clone "$HTTPD_URL_USER_PASS/auth/repo.git" clone-auth-none &&
 +      test_cmp askpass-expect-none askpass-query
 +'
 +
 +test_expect_success 'http auth can use just user in URL' '
 +      >askpass-query &&
 +      echo user@host >askpass-response &&
 +      git clone "$HTTPD_URL_USER/auth/repo.git" clone-auth-pass &&
 +      test_cmp askpass-expect-pass askpass-query
 +'
 +
 +test_expect_success 'http auth can request both user and pass' '
 +      >askpass-query &&
 +      echo user@host >askpass-response &&
 +      git clone "$HTTPD_URL/auth/repo.git" clone-auth-both &&
 +      test_cmp askpass-expect-both askpass-query
 +'
 +
  test_expect_success 'fetch changes via http' '
        echo content >>file &&
        git commit -a -m two &&
 -      git push public
 +      git push public &&
        (cd clone && git pull) &&
        test_cmp file clone/file
  '
  
 +test_expect_success 'fetch changes via manual http-fetch' '
 +      cp -R clone-tmpl clone2 &&
 +
 +      HEAD=$(git rev-parse --verify HEAD) &&
 +      (cd clone2 &&
 +       git http-fetch -a -w heads/master-new $HEAD $(git config remote.origin.url) &&
 +       git checkout master-new &&
 +       test $HEAD = $(git rev-parse --verify HEAD)) &&
 +      test_cmp file clone2/file
 +'
 +
 +test_expect_success 'http remote detects correct HEAD' '
 +      git push public master:other &&
 +      (cd clone &&
 +       git remote set-head origin -d &&
 +       git remote set-head origin -a &&
 +       git symbolic-ref refs/remotes/origin/HEAD > output &&
 +       echo refs/remotes/origin/master > expect &&
 +       test_cmp expect output
 +      )
 +'
 +
 +test_expect_success 'fetch packed objects' '
 +      cp -R "$HTTPD_DOCUMENT_ROOT_PATH"/repo.git "$HTTPD_DOCUMENT_ROOT_PATH"/repo_pack.git &&
 +      (cd "$HTTPD_DOCUMENT_ROOT_PATH"/repo_pack.git &&
 +       git --bare repack &&
 +       git --bare prune-packed
 +      ) &&
 +      git clone $HTTPD_URL/dumb/repo_pack.git
 +'
 +
 +test_expect_success 'fetch notices corrupt pack' '
 +      cp -R "$HTTPD_DOCUMENT_ROOT_PATH"/repo_pack.git "$HTTPD_DOCUMENT_ROOT_PATH"/repo_bad1.git &&
 +      (cd "$HTTPD_DOCUMENT_ROOT_PATH"/repo_bad1.git &&
 +       p=`ls objects/pack/pack-*.pack` &&
 +       chmod u+w $p &&
 +       printf %0256d 0 | dd of=$p bs=256 count=1 seek=1 conv=notrunc
 +      ) &&
 +      mkdir repo_bad1.git &&
 +      (cd repo_bad1.git &&
 +       git --bare init &&
 +       test_must_fail git --bare fetch $HTTPD_URL/dumb/repo_bad1.git &&
 +       test 0 = `ls objects/pack/pack-*.pack | wc -l`
 +      )
 +'
 +
 +test_expect_success 'fetch notices corrupt idx' '
 +      cp -R "$HTTPD_DOCUMENT_ROOT_PATH"/repo_pack.git "$HTTPD_DOCUMENT_ROOT_PATH"/repo_bad2.git &&
 +      (cd "$HTTPD_DOCUMENT_ROOT_PATH"/repo_bad2.git &&
 +       p=`ls objects/pack/pack-*.idx` &&
 +       chmod u+w $p &&
 +       printf %0256d 0 | dd of=$p bs=256 count=1 seek=1 conv=notrunc
 +      ) &&
 +      mkdir repo_bad2.git &&
 +      (cd repo_bad2.git &&
 +       git --bare init &&
 +       test_must_fail git --bare fetch $HTTPD_URL/dumb/repo_bad2.git &&
 +       test 0 = `ls objects/pack | wc -l`
 +      )
 +'
 +
 +test_expect_success 'did not use upload-pack service' '
 +      grep '/git-upload-pack' <"$HTTPD_ROOT_PATH"/access.log >act
 +      : >exp
 +      test_cmp exp act
 +'
 +
  stop_httpd
  test_done