(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description spids:[13]) op: Equal rhs: { (SQ <'test WebDAV http-push\n'> <'\n'> <'This test runs various sanity checks on http-push.'> ) } spids: [13] ) ] spids: [13] ) (C {(.)} {(./test-lib.sh)}) (If arms: [ (if_arm cond: [ (AndOr ops: [Op_DPipe] children: [ (SimpleCommand words: [{(git)} {(http-push)}] redirects: [ (Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(/dev/null)}) (Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)}) ] ) (C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(-eq)} {(128)} {(Lit_Other ']')}) ] ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:skip_all spids:[54]) op: Equal rhs: {(DQ ('skipping test, USE_CURL_MULTI is not defined'))} spids: [54] ) ] spids: [54] ) (C {(test_done)}) ] spids: [16777215 51] ) ] spids: [16777215 62] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:LIB_HTTPD_DAV spids:[65]) op:Equal rhs:{(t)} spids:[65])] spids: [65] ) (C {(.)} {(DQ ($ VSub_Name '$TEST_DIRECTORY')) (/lib-httpd.sh)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ROOT_PATH spids:[75]) op: Equal rhs: {(DQ ($ VSub_Name '$PWD'))} spids: [75] ) ] spids: [75] ) (C {(start_httpd)}) (C {(test_expect_success)} {(SQ <'setup remote repository'>)} { (SQ <'\n'> <'\tcd "$ROOT_PATH" &&\n'> <'\tmkdir test_repo &&\n'> <'\tcd test_repo &&\n'> <'\tgit init &&\n'> <'\t: >path1 &&\n'> <'\tgit add path1 &&\n'> <'\ttest_tick &&\n'> <'\tgit commit -m initial &&\n'> <'\tcd - &&\n'> <'\tgit clone --bare test_repo test_repo.git &&\n'> <'\tcd test_repo.git &&\n'> <'\tgit --bare update-server-info &&\n'> <'\tmv hooks/post-update.sample hooks/post-update &&\n'> <'\tORIG_HEAD=$(git rev-parse --verify HEAD) &&\n'> <'\tcd - &&\n'> <'\tmv test_repo.git "$HTTPD_DOCUMENT_ROOT_PATH"\n'> ) } ) (C {(test_expect_success)} {(SQ <'create password-protected repository'>)} { (SQ <'\n'> <'\tmkdir -p "$HTTPD_DOCUMENT_ROOT_PATH/auth/dumb" &&\n'> <'\tcp -Rf "$HTTPD_DOCUMENT_ROOT_PATH/test_repo.git" \\\n'> <'\t "$HTTPD_DOCUMENT_ROOT_PATH/auth/dumb/test_repo.git"\n'> ) } ) (C {(setup_askpass_helper)}) (C {(test_expect_success)} {(SQ <'clone remote repository'>)} { (SQ <'\n'> <'\tcd "$ROOT_PATH" &&\n'> <'\tgit clone $HTTPD_URL/dumb/test_repo.git test_repo_clone\n'> ) } ) (C {(test_expect_success)} {(SQ <'push to remote repository with packed refs'>)} { (SQ <'\n'> <'\tcd "$ROOT_PATH"/test_repo_clone &&\n'> <'\t: >path2 &&\n'> <'\tgit add path2 &&\n'> <'\ttest_tick &&\n'> <'\tgit commit -m path2 &&\n'> <'\tHEAD=$(git rev-parse --verify HEAD) &&\n'> <'\tgit push &&\n'> <'\t(cd "$HTTPD_DOCUMENT_ROOT_PATH"/test_repo.git &&\n'> <'\t test $HEAD = $(git rev-parse --verify HEAD))\n'> ) } ) (C {(test_expect_success)} {(SQ <'push already up-to-date'>)} {(SQ <'\n'> <'\tgit push\n'>)}) (C {(test_expect_success)} {(SQ <'push to remote repository with unpacked refs'>)} { (SQ <'\n'> <'\t(cd "$HTTPD_DOCUMENT_ROOT_PATH"/test_repo.git &&\n'> <'\t rm packed-refs &&\n'> <'\t git update-ref refs/heads/master $ORIG_HEAD &&\n'> <'\t git --bare update-server-info) &&\n'> <'\tgit push &&\n'> <'\t(cd "$HTTPD_DOCUMENT_ROOT_PATH"/test_repo.git &&\n'> <'\t test $HEAD = $(git rev-parse --verify HEAD))\n'> ) } ) (C {(test_expect_success)} {(SQ <'http-push fetches unpacked objects'>)} { (SQ <'\n'> <'\tcp -R "$HTTPD_DOCUMENT_ROOT_PATH"/test_repo.git \\\n'> <'\t\t"$HTTPD_DOCUMENT_ROOT_PATH"/test_repo_unpacked.git &&\n'> <'\n'> <'\tgit clone $HTTPD_URL/dumb/test_repo_unpacked.git \\\n'> <'\t\t"$ROOT_PATH"/fetch_unpacked &&\n'> <'\n'> <'\t# By reset, we force git to retrieve the object\n'> <'\t(cd "$ROOT_PATH"/fetch_unpacked &&\n'> <'\t git reset --hard HEAD^ &&\n'> <'\t git remote rm origin &&\n'> <'\t git reflog expire --expire=0 --all &&\n'> <'\t git prune &&\n'> <'\t git push -f -v $HTTPD_URL/dumb/test_repo_unpacked.git master)\n'> ) } ) (C {(test_expect_success)} {(SQ <'http-push fetches packed objects'>)} { (SQ <'\n'> <'\tcp -R "$HTTPD_DOCUMENT_ROOT_PATH"/test_repo.git \\\n'> <'\t\t"$HTTPD_DOCUMENT_ROOT_PATH"/test_repo_packed.git &&\n'> <'\n'> <'\tgit clone $HTTPD_URL/dumb/test_repo_packed.git \\\n'> <'\t\t"$ROOT_PATH"/test_repo_clone_packed &&\n'> <'\n'> <'\t(cd "$HTTPD_DOCUMENT_ROOT_PATH"/test_repo_packed.git &&\n'> <'\t git --bare repack &&\n'> <'\t git --bare prune-packed) &&\n'> <'\n'> <'\t# By reset, we force git to retrieve the packed object\n'> <'\t(cd "$ROOT_PATH"/test_repo_clone_packed &&\n'> <'\t git reset --hard HEAD^ &&\n'> <'\t git remote remove origin &&\n'> <'\t git reflog expire --expire=0 --all &&\n'> <'\t git prune &&\n'> <'\t git push -f -v $HTTPD_URL/dumb/test_repo_packed.git master)\n'> ) } ) (C {(test_expect_success)} {(SQ <'create and delete remote branch'>)} { (SQ <'\n'> <'\tcd "$ROOT_PATH"/test_repo_clone &&\n'> <'\tgit checkout -b dev &&\n'> <'\t: >path3 &&\n'> <'\tgit add path3 &&\n'> <'\ttest_tick &&\n'> <'\tgit commit -m dev &&\n'> <'\tgit push origin dev &&\n'> <'\tgit push origin :dev &&\n'> <'\ttest_must_fail git show-ref --verify refs/remotes/origin/dev\n'> ) } ) (C {(test_expect_success)} {(SQ <'MKCOL sends directory names with trailing slashes'>)} { (SQ <'\n'> <'\n'> <'\t! grep "\\"MKCOL.*[^/] HTTP/[^ ]*\\"" < "$HTTPD_ROOT_PATH"/access.log\n'> <'\n'> ) } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:x1 spids:[276]) op: Equal rhs: {(DQ ('[0-9a-f]'))} spids: [276] ) ] spids: [276] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:x2 spids:[281]) op: Equal rhs: {(DQ ($ VSub_Name '$x1') ($ VSub_Name '$x1'))} spids: [281] ) ] spids: [281] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:x5 spids:[287]) op: Equal rhs: { (DQ ($ VSub_Name '$x1') ($ VSub_Name '$x1') ($ VSub_Name '$x1') ($ VSub_Name '$x1') ($ VSub_Name '$x1') ) } spids: [287] ) ] spids: [287] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:x38 spids:[296]) op: Equal rhs: { (DQ ($ VSub_Name '$x5') ($ VSub_Name '$x5') ($ VSub_Name '$x5') ($ VSub_Name '$x5') ($ VSub_Name '$x5') ($ VSub_Name '$x5') ($ VSub_Name '$x5') ($ VSub_Name '$x1') ($ VSub_Name '$x1') ($ VSub_Name '$x1') ) } spids: [296] ) ] spids: [296] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:x40 spids:[310]) op: Equal rhs: {(DQ ($ VSub_Name '$x38') ($ VSub_Name '$x2'))} spids: [310] ) ] spids: [310] ) (C {(test_expect_success)} {(SQ <'PUT and MOVE sends object to URLs with SHA-1 hash suffix'>)} { (SQ <'\n'> <'\tsed \\\n'> <'\t\t-e "s/PUT /OP /" \\\n'> <'\t\t-e "s/MOVE /OP /" \\\n'> <'\t -e "s|/objects/$x2/${x38}_$x40|WANTED_PATH_REQUEST|" \\\n'> <'\t\t"$HTTPD_ROOT_PATH"/access.log |\n'> <'\tgrep -e "\\"OP .*WANTED_PATH_REQUEST HTTP/[.0-9]*\\" 20[0-9] "\n'> <'\n'> ) } ) (C {(test_http_push_nonff)} {(DQ ($ VSub_Name '$HTTPD_DOCUMENT_ROOT_PATH')) (/test_repo.git)} {(DQ ($ VSub_Name '$ROOT_PATH')) (/test_repo_clone)} {(master)} ) (C {(test_expect_success)} {(SQ <'push to password-protected repository (user in URL)'>)} { (SQ <'\n'> <'\ttest_commit pw-user &&\n'> <'\tset_askpass user@host pass@host &&\n'> <'\tgit push "$HTTPD_URL_USER/auth/dumb/test_repo.git" HEAD &&\n'> <'\tgit rev-parse --verify HEAD >expect &&\n'> <'\tgit --git-dir="$HTTPD_DOCUMENT_ROOT_PATH/auth/dumb/test_repo.git" \\\n'> <'\t\trev-parse --verify HEAD >actual &&\n'> <'\ttest_cmp expect actual\n'> ) } ) (C {(test_expect_failure)} {(SQ <'user was prompted only once for password'>)} {(SQ <'\n'> <'\texpect_askpass pass user@host\n'>)} ) (C {(test_expect_failure)} {(SQ <'push to password-protected repository (no user in URL)'>)} { (SQ <'\n'> <'\ttest_commit pw-nouser &&\n'> <'\tset_askpass user@host pass@host &&\n'> <'\tgit push "$HTTPD_URL/auth/dumb/test_repo.git" HEAD &&\n'> <'\texpect_askpass both user@host &&\n'> <'\tgit rev-parse --verify HEAD >expect &&\n'> <'\tgit --git-dir="$HTTPD_DOCUMENT_ROOT_PATH/auth/dumb/test_repo.git" \\\n'> <'\t\trev-parse --verify HEAD >actual &&\n'> <'\ttest_cmp expect actual\n'> ) } ) (C {(stop_httpd)}) (C {(test_done)}) ] )