(command.CommandList
  children: [
    (command.ShAssignment
      left: <Id.Lit_VarLike 'test_description='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'test_description='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'test_description='> name:test_description)
          op: assign_op.Equal
          rhs: {(SQ <'test smart pushing over http via http-backend'>)}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <.>
      more_env: []
      words: [{<.>} {<'./test-lib.sh'>}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'ROOT_PATH='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'ROOT_PATH='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ROOT_PATH='> name:ROOT_PATH)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName PWD))}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <.>
      more_env: []
      words: [{<.>} {(DQ ($ Id.VSub_DollarName TEST_DIRECTORY)) <'/lib-gpg.sh'>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <.>
      more_env: []
      words: [{<.>} {(DQ ($ Id.VSub_DollarName TEST_DIRECTORY)) <'/lib-httpd.sh'>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <.>
      more_env: []
      words: [{<.>} {(DQ ($ Id.VSub_DollarName TEST_DIRECTORY)) <'/lib-terminal.sh'>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <start_httpd>
      more_env: []
      words: [{<start_httpd>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<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 config http.receivepack true &&\n'> <'\tgit config core.logallrefupdates true &&\n'> <'\tORIG_HEAD=$(git rev-parse --verify HEAD) &&\n'> 
            <'\tcd - &&\n'> <'\tmv test_repo.git "$HTTPD_DOCUMENT_ROOT_PATH"\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <setup_askpass_helper>
      more_env: []
      words: [{<setup_askpass_helper>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <cat>
      more_env: []
      words: [{<cat>}]
      redirects: [
        (Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<exp>})
        (Redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_tok: <Id.Undefined_Tok ''>
              stdin_parts: [
                <'GET  /smart/test_repo.git/info/refs?service=git-upload-pack HTTP/1.1 200\n'>
                <'POST /smart/test_repo.git/git-upload-pack HTTP/1.1 200\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'no empty path components'>)}
        {
          (SQ <'\n'> <'\t# In the URL, add a trailing slash, and see if git appends yet another\n'> 
            <'\t# slash.\n'> <'\tcd "$ROOT_PATH" &&\n'> <'\tgit clone $HTTPD_URL/smart/test_repo.git/ test_repo_clone &&\n'> <'\n'> 
            <'\tsed -e "\n'> <'\t\ts/^.* \\"//\n'> <'\t\ts/\\"//\n'> <'\t\ts/ [1-9][0-9]*\\$//\n'> <'\t\ts/^GET /GET  /\n'> 
            <'\t" >act <"$HTTPD_ROOT_PATH"/access.log &&\n'> <'\n'> <'\t# Clear the log, so that it does not affect the "used receive-pack\n'> 
            <'\t# service" test which reads the log too.\n'> <'\t#\n'> <'\t# We do this before the actual comparison to ensure the log is cleared.\n'> 
            <'\techo > "$HTTPD_ROOT_PATH"/access.log &&\n'> <'\n'> <'\ttest_cmp exp act\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'clone remote repository'>)}
        {
          (SQ <'\n'> <'\trm -rf test_repo_clone &&\n'> 
            <'\tgit clone $HTTPD_URL/smart/test_repo.git test_repo_clone &&\n'> <'\t(\n'> <'\t\tcd test_repo_clone && git config push.default matching\n'> <'\t)\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'push to remote repository (standard)'>)}
        {
          (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_TRACE_CURL=true git push -v -v 2>err &&\n'> <'\t! grep "Expect: 100-continue" err &&\n'> 
            <'\tgrep "POST git-receive-pack ([0-9]* bytes)" err &&\n'> <'\t(cd "$HTTPD_DOCUMENT_ROOT_PATH"/test_repo.git &&\n'> 
            <'\t test $HEAD = $(git rev-parse --verify HEAD))\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [{<test_expect_success>} {(SQ <'push already up-to-date'>)} {(SQ <'\n'> <'\tgit push\n'>)}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<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'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <cat>
      more_env: []
      words: [{<cat>}]
      redirects: [
        (Redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {(DQ ($ Id.VSub_DollarName HTTPD_DOCUMENT_ROOT_PATH) <'/test_repo.git/hooks/update'>)}
        )
        (Redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_tok: <Id.Undefined_Tok ''>
              stdin_parts: [<'#!/bin/sh\n'> <'exit 1\n'>]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      blame_tok: <chmod>
      more_env: []
      words: [
        {<chmod>}
        {<a> <Id.Lit_Other '+'> <x>}
        {(DQ ($ Id.VSub_DollarName HTTPD_DOCUMENT_ROOT_PATH) <'/test_repo.git/hooks/update'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <cat>
      more_env: []
      words: [{<cat>}]
      redirects: [
        (Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<exp>})
        (Redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_tok: <Id.Undefined_Tok ''>
              stdin_parts: [
                <'remote: error: hook declined to update refs/heads/dev2\n'>
                <'To http://127.0.0.1:'>
                ($ Id.VSub_DollarName LIB_HTTPD_PORT)
                <'/smart/test_repo.git\n'>
                <' ! [remote rejected] dev2 -> dev2 (hook declined)\n'>
                <'error: failed to push some refs to \'http://127.0.0.1:'>
                ($ Id.VSub_DollarName LIB_HTTPD_PORT)
                <'/smart/test_repo.git\'\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'rejected update prints status'>)}
        {
          (SQ <'\n'> <'\tcd "$ROOT_PATH"/test_repo_clone &&\n'> <'\tgit checkout -b dev2 &&\n'> 
            <'\t: >path4 &&\n'> <'\tgit add path4 &&\n'> <'\ttest_tick &&\n'> <'\tgit commit -m dev2 &&\n'> 
            <'\ttest_must_fail git push origin dev2 2>act &&\n'> <'\tsed -e "/^remote: /s/ *$//" <act >cmp &&\n'> <'\ttest_i18ncmp exp cmp\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <rm>
      more_env: []
      words: [
        {<rm>}
        {<-f>}
        {(DQ ($ Id.VSub_DollarName HTTPD_DOCUMENT_ROOT_PATH) <'/test_repo.git/hooks/update'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <cat>
      more_env: []
      words: [{<cat>}]
      redirects: [
        (Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<exp>})
        (Redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_tok: <Id.Undefined_Tok ''>
              stdin_parts: [
                <'\n'>
                <'GET  /smart/test_repo.git/info/refs?service=git-upload-pack HTTP/1.1 200\n'>
                <'POST /smart/test_repo.git/git-upload-pack HTTP/1.1 200\n'>
                <'GET  /smart/test_repo.git/info/refs?service=git-receive-pack HTTP/1.1 200\n'>
                <'POST /smart/test_repo.git/git-receive-pack HTTP/1.1 200\n'>
                <'GET  /smart/test_repo.git/info/refs?service=git-receive-pack HTTP/1.1 200\n'>
                <'GET  /smart/test_repo.git/info/refs?service=git-receive-pack HTTP/1.1 200\n'>
                <'POST /smart/test_repo.git/git-receive-pack HTTP/1.1 200\n'>
                <'GET  /smart/test_repo.git/info/refs?service=git-receive-pack HTTP/1.1 200\n'>
                <'POST /smart/test_repo.git/git-receive-pack HTTP/1.1 200\n'>
                <'GET  /smart/test_repo.git/info/refs?service=git-receive-pack HTTP/1.1 200\n'>
                <'POST /smart/test_repo.git/git-receive-pack HTTP/1.1 200\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'used receive-pack service'>)}
        {
          (SQ <'\n'> <'\tsed -e "\n'> <'\t\ts/^.* \\"//\n'> <'\t\ts/\\"//\n'> 
            <'\t\ts/ [1-9][0-9]*\\$//\n'> <'\t\ts/^GET /GET  /\n'> <'\t" >act <"$HTTPD_ROOT_PATH"/access.log &&\n'> <'\ttest_cmp exp act\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_http_push_nonff>
      more_env: []
      words: [
        {<test_http_push_nonff>}
        {(DQ ($ Id.VSub_DollarName HTTPD_DOCUMENT_ROOT_PATH)) <'/test_repo.git'>}
        {(DQ ($ Id.VSub_DollarName ROOT_PATH)) <'/test_repo_clone'>}
        {<master>}
        {<success>}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'push fails for non-fast-forward refs unmatched by remote helper'>)}
        {
          (SQ <'\n'> 
            <'\t# create a dissimilarly-named remote ref so that git is unable to match the\n'> <'\t# two refs (viz. local, remote) unless an explicit refspec is provided.\n'> 
            <'\tgit push origin master:retsam &&\n'> <'\n'> <'\techo "change changed" > path2 &&\n'> <'\tgit commit -a -m path2 --amend &&\n'> <'\n'> 
            <'\t# push master too; this ensures there is at least one '>
          ) (DQ <'\'push\''>) 
          (SQ <' command to\n'> <'\t# the remote helper and triggers interaction with the helper.\n'> 
            <'\ttest_must_fail git push -v origin +master master:retsam >output 2>&1'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'push fails for non-fast-forward refs unmatched by remote helper: remote output'>)}
        {
          (SQ <'\n'> 
            <
'\tgrep "^ + [a-f0-9]*\\.\\.\\.[a-f0-9]* *master -> master (forced update)$" output &&\n'
            > <'\tgrep "^ ! \\[rejected\\] *master -> retsam (non-fast-forward)$" output\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'push fails for non-fast-forward refs unmatched by remote helper: our output'>)}
        {(SQ <'\n'> <'\ttest_i18ngrep "Updates were rejected because" \\\n'> <'\t\toutput\n'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'push (chunked)'>)}
        {
          (SQ <'\n'> <'\tgit checkout master &&\n'> <'\ttest_commit commit path3 &&\n'> 
            <'\tHEAD=$(git rev-parse --verify HEAD) &&\n'> <'\ttest_config http.postbuffer 4 &&\n'> <'\tgit push -v -v origin $BRANCH 2>err &&\n'> 
            <'\tgrep "POST git-receive-pack (chunked)" err &&\n'> <'\t(cd "$HTTPD_DOCUMENT_ROOT_PATH"/test_repo.git &&\n'> 
            <'\t test $HEAD = $(git rev-parse --verify HEAD))\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'push --all can push to empty repo'>)}
        {
          (SQ <'\n'> <'\td=$HTTPD_DOCUMENT_ROOT_PATH/empty-all.git &&\n'> 
            <'\tgit init --bare "$d" &&\n'> <'\tgit --git-dir="$d" config http.receivepack true &&\n'> 
            <'\tgit push --all "$HTTPD_URL"/smart/empty-all.git\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'push --mirror can push to empty repo'>)}
        {
          (SQ <'\n'> <'\td=$HTTPD_DOCUMENT_ROOT_PATH/empty-mirror.git &&\n'> 
            <'\tgit init --bare "$d" &&\n'> <'\tgit --git-dir="$d" config http.receivepack true &&\n'> 
            <'\tgit push --mirror "$HTTPD_URL"/smart/empty-mirror.git\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'push --all to repo with alternates'>)}
        {
          (SQ <'\n'> <'\ts=$HTTPD_DOCUMENT_ROOT_PATH/test_repo.git &&\n'> 
            <'\td=$HTTPD_DOCUMENT_ROOT_PATH/alternates-all.git &&\n'> <'\tgit clone --bare --shared "$s" "$d" &&\n'> 
            <'\tgit --git-dir="$d" config http.receivepack true &&\n'> <'\tgit --git-dir="$d" repack -adl &&\n'> <'\tgit push --all "$HTTPD_URL"/smart/alternates-all.git\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'push --mirror to repo with alternates'>)}
        {
          (SQ <'\n'> <'\ts=$HTTPD_DOCUMENT_ROOT_PATH/test_repo.git &&\n'> 
            <'\td=$HTTPD_DOCUMENT_ROOT_PATH/alternates-mirror.git &&\n'> <'\tgit clone --bare --shared "$s" "$d" &&\n'> 
            <'\tgit --git-dir="$d" config http.receivepack true &&\n'> <'\tgit --git-dir="$d" repack -adl &&\n'> 
            <'\tgit push --mirror "$HTTPD_URL"/smart/alternates-mirror.git\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {<TTY>}
        {(SQ <'push shows progress when stderr is a tty'>)}
        {
          (SQ <'\n'> <'\tcd "$ROOT_PATH"/test_repo_clone &&\n'> <'\ttest_commit noisy &&\n'> 
            <'\ttest_terminal git push >output 2>&1 &&\n'> <'\ttest_i18ngrep "^Writing objects" output\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {<TTY>}
        {(SQ <'push --quiet silences status and progress'>)}
        {
          (SQ <'\n'> <'\tcd "$ROOT_PATH"/test_repo_clone &&\n'> <'\ttest_commit quiet &&\n'> 
            <'\ttest_terminal git push --quiet >output 2>&1 &&\n'> <'\ttest_cmp /dev/null output\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {<TTY>}
        {(SQ <'push --no-progress silences progress but not status'>)}
        {
          (SQ <'\n'> <'\tcd "$ROOT_PATH"/test_repo_clone &&\n'> <'\ttest_commit no-progress &&\n'> 
            <'\ttest_terminal git push --no-progress >output 2>&1 &&\n'> <'\ttest_i18ngrep "^To http" output &&\n'> <'\ttest_i18ngrep ! "^Writing objects"\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'push --progress shows progress to non-tty'>)}
        {
          (SQ <'\n'> <'\tcd "$ROOT_PATH"/test_repo_clone &&\n'> <'\ttest_commit progress &&\n'> 
            <'\tgit push --progress >output 2>&1 &&\n'> <'\ttest_i18ngrep "^To http" output &&\n'> <'\ttest_i18ngrep "^Writing objects" output\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'http push gives sane defaults to reflog'>)}
        {
          (SQ <'\n'> <'\tcd "$ROOT_PATH"/test_repo_clone &&\n'> <'\ttest_commit reflog-test &&\n'> 
            <'\tgit push "$HTTPD_URL"/smart/test_repo.git &&\n'> <'\tgit --git-dir="$HTTPD_DOCUMENT_ROOT_PATH/test_repo.git" \\\n'> 
            <'\t\tlog -g -1 --format="%gn <%ge>" >actual &&\n'> <'\techo "anonymous <anonymous@http.127.0.0.1>" >expect &&\n'> <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'http push respects GIT_COMMITTER_* in reflog'>)}
        {
          (SQ <'\n'> <'\tcd "$ROOT_PATH"/test_repo_clone &&\n'> 
            <'\ttest_commit custom-reflog-test &&\n'> <'\tgit push "$HTTPD_URL"/smart_custom_env/test_repo.git &&\n'> 
            <'\tgit --git-dir="$HTTPD_DOCUMENT_ROOT_PATH/test_repo.git" \\\n'> <'\t\tlog -g -1 --format="%gn <%ge>" >actual &&\n'> 
            <'\techo "Custom User <custom@example.com>" >expect &&\n'> <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'push over smart http with auth'>)}
        {
          (SQ <'\n'> <'\tcd "$ROOT_PATH/test_repo_clone" &&\n'> <'\techo push-auth-test >expect &&\n'> 
            <'\ttest_commit push-auth-test &&\n'> <'\tset_askpass user@host pass@host &&\n'> <'\tgit push "$HTTPD_URL"/auth/smart/test_repo.git &&\n'> 
            <'\tgit --git-dir="$HTTPD_DOCUMENT_ROOT_PATH/test_repo.git" \\\n'> <'\t\tlog -1 --format=%s >actual &&\n'> <'\texpect_askpass both user@host &&\n'> 
            <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'push to auth-only-for-push repo'>)}
        {
          (SQ <'\n'> <'\tcd "$ROOT_PATH/test_repo_clone" &&\n'> <'\techo push-half-auth >expect &&\n'> 
            <'\ttest_commit push-half-auth &&\n'> <'\tset_askpass user@host pass@host &&\n'> 
            <'\tgit push "$HTTPD_URL"/auth-push/smart/test_repo.git &&\n'> <'\tgit --git-dir="$HTTPD_DOCUMENT_ROOT_PATH/test_repo.git" \\\n'> 
            <'\t\tlog -1 --format=%s >actual &&\n'> <'\texpect_askpass both user@host &&\n'> <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'create repo without http.receivepack set'>)}
        {
          (SQ <'\n'> <'\tcd "$ROOT_PATH" &&\n'> <'\tgit init half-auth &&\n'> <'\t(\n'> 
            <'\t\tcd half-auth &&\n'> <'\t\ttest_commit one\n'> <'\t) &&\n'> 
            <'\tgit clone --bare half-auth "$HTTPD_DOCUMENT_ROOT_PATH/half-auth.git"\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'clone via half-auth-complete does not need password'>)}
        {
          (SQ <'\n'> <'\tcd "$ROOT_PATH" &&\n'> <'\tset_askpass wrong &&\n'> 
            <'\tgit clone "$HTTPD_URL"/half-auth-complete/smart/half-auth.git \\\n'> <'\t\thalf-auth-clone &&\n'> <'\texpect_askpass none\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'push into half-auth-complete requires password'>)}
        {
          (SQ <'\n'> <'\tcd "$ROOT_PATH/half-auth-clone" &&\n'> <'\techo two >expect &&\n'> 
            <'\ttest_commit two &&\n'> <'\tset_askpass user@host pass@host &&\n'> 
            <'\tgit push "$HTTPD_URL/half-auth-complete/smart/half-auth.git" &&\n'> <'\tgit --git-dir="$HTTPD_DOCUMENT_ROOT_PATH/half-auth.git" \\\n'> 
            <'\t\tlog -1 --format=%s >actual &&\n'> <'\texpect_askpass both user@host &&\n'> <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {<CMDLINE_LIMIT>}
        {(SQ <'push 2000 tags over http'>)}
        {
          (SQ <'\n'> <'\tsha1=$(git rev-parse HEAD) &&\n'> <'\ttest_seq 2000 |\n'> <'\t  sort |\n'> 
            <'\t  sed "s|.*|$sha1 refs/tags/really-long-tag-name-&|" \\\n'> <'\t  >.git/packed-refs &&\n'> <'\trun_with_limited_cmdline git push --mirror\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {<GPG>}
        {(SQ <'push with post-receive to inspect certificate'>)}
        {
          (SQ <'\n'> <'\t(\n'> <'\t\tcd "$HTTPD_DOCUMENT_ROOT_PATH"/test_repo.git &&\n'> 
            <'\t\tmkdir -p hooks &&\n'> <'\t\twrite_script hooks/post-receive <<-\\EOF &&\n'> <'\t\t# discard the update list\n'> 
            <'\t\tcat >/dev/null\n'> <'\t\t# record the push certificate\n'> <'\t\tif test -n "${GIT_PUSH_CERT-}"\n'> <'\t\tthen\n'> 
            <'\t\t\tgit cat-file blob $GIT_PUSH_CERT >../push-cert\n'> <'\t\tfi &&\n'> <'\t\tcat >../push-cert-status <<E_O_F\n'> 
            <'\t\tSIGNER=${GIT_PUSH_CERT_SIGNER-nobody}\n'> <'\t\tKEY=${GIT_PUSH_CERT_KEY-nokey}\n'> <'\t\tSTATUS=${GIT_PUSH_CERT_STATUS-nostatus}\n'> 
            <'\t\tNONCE_STATUS=${GIT_PUSH_CERT_NONCE_STATUS-nononcestatus}\n'> <'\t\tNONCE=${GIT_PUSH_CERT_NONCE-nononce}\n'> <'\t\tE_O_F\n'> <'\t\tEOF\n'> <'\n'> 
            <'\t\tgit config receive.certnonceseed sekrit &&\n'> <'\t\tgit config receive.certnonceslop 30\n'> <'\t) &&\n'> <'\tcd "$ROOT_PATH/test_repo_clone" &&\n'> 
            <'\ttest_commit cert-test &&\n'> <'\tgit push --signed "$HTTPD_URL/smart/test_repo.git" &&\n'> <'\t(\n'> 
            <'\t\tcd "$HTTPD_DOCUMENT_ROOT_PATH" &&\n'> <'\t\tcat <<-\\EOF &&\n'> <'\t\tSIGNER=C O Mitter <committer@example.com>\n'> 
            <'\t\tKEY=13B6F51ECDDE430D\n'> <'\t\tSTATUS=G\n'> <'\t\tNONCE_STATUS=OK\n'> <'\t\tEOF\n'> 
            <'\t\tsed -n -e "s/^nonce /NONCE=/p" -e "/^$/q" push-cert\n'> <'\t) >expect &&\n'> <'\ttest_cmp expect "$HTTPD_DOCUMENT_ROOT_PATH/push-cert-status"\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'push status output scrubs password'>)}
        {
          (SQ <'\n'> <'\tcd "$ROOT_PATH/test_repo_clone" &&\n'> <'\tgit push --porcelain \\\n'> 
            <'\t\t"$HTTPD_URL_USER_PASS/smart/test_repo.git" \\\n'> <'\t\t+HEAD:scrub >status &&\n'> <'\t# should have been scrubbed down to vanilla URL\n'> 
            <'\tgrep "^To $HTTPD_URL/smart/test_repo.git" status\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <stop_httpd>
      more_env: []
      words: [{<stop_httpd>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_done>
      more_env: []
      words: [{<test_done>}]
      redirects: []
      do_fork: T
    )
  ]
)