(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 git-http-backend-noserver'>)}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <.>
      more_env: []
      words: [{<.>} {<'./test-lib.sh'>}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'HTTPD_DOCUMENT_ROOT_PATH='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'HTTPD_DOCUMENT_ROOT_PATH='>
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike 'HTTPD_DOCUMENT_ROOT_PATH='>
              name: HTTPD_DOCUMENT_ROOT_PATH
            )
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName TRASH_DIRECTORY))}
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Simple
                  blame_tok: <test_have_prereq>
                  more_env: []
                  words: [{<test_have_prereq>} {<GREP_STRIPS_CR>}]
                  redirects: []
                  do_fork: T
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'GREP_OPTIONS='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'GREP_OPTIONS='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GREP_OPTIONS='> name:GREP_OPTIONS)
                  op: assign_op.Equal
                  rhs: {<-U>}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <export>
              more_env: []
              words: [{<export>} {<GREP_OPTIONS>}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [20 26]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShFunction
      name_tok: <run_backend>
      name: run_backend
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ ($ Id.VSub_Number 2))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <git>
                  more_env: [
                    (EnvPair
                      left: <Id.Lit_VarLike 'QUERY_STRING='>
                      name: QUERY_STRING
                      val: 
                        {
                          (DQ 
                            (BracedVarSub
                              left: <Id.Left_DollarBrace '${'>
                              token: <Id.VSub_Number 1>
                              var_name: 1
                              suffix_op: 
                                (suffix_op.Unary
                                  op: <Id.VOp1_Pound '#'>
                                  arg_word: {<Id.Lit_Other '*'> <'['> <Id.Lit_Other '?'> <']'>}
                                )
                              right: <Id.Right_DollarBrace '}'>
                            )
                          )
                        }
                    )
                    (EnvPair
                      left: <Id.Lit_VarLike 'PATH_TRANSLATED='>
                      name: PATH_TRANSLATED
                      val: 
                        {
                          (DQ ($ Id.VSub_DollarName HTTPD_DOCUMENT_ROOT_PATH) <'/'> 
                            (BracedVarSub
                              left: <Id.Left_DollarBrace '${'>
                              token: <Id.VSub_Number 1>
                              var_name: 1
                              suffix_op: 
                                (suffix_op.Unary
                                  op: <Id.VOp1_DPercent '%%'>
                                  arg_word: {<'['> <Id.Lit_Other '?'> <']'> <Id.Lit_Other '*'>}
                                )
                              right: <Id.Right_DollarBrace '}'>
                            )
                          )
                        }
                    )
                  ]
                  words: [{<git>} {<http-backend>}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<act.out>}
                    )
                    (Redir
                      op: <Id.Redir_Great '2>'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {<act.err>}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <GET>
      name: GET
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'REQUEST_METHOD='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'REQUEST_METHOD='>
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'REQUEST_METHOD='>
                          name: REQUEST_METHOD
                        )
                      op: assign_op.Equal
                      rhs: {(DQ <GET>)}
                    )
                  ]
                  redirects: []
                )
                (command.Simple
                  blame_tok: <export>
                  more_env: []
                  words: [{<export>} {<REQUEST_METHOD>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <run_backend>
                  more_env: []
                  words: [{<run_backend>} {(DQ <'/repo.git/'> ($ Id.VSub_Number 1))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sane_unset>
                  more_env: []
                  words: [{<sane_unset>} {<REQUEST_METHOD>}]
                  redirects: []
                  do_fork: T
                )
                (command.If
                  if_kw: <Id.KW_If if>
                  arms: [
                    (IfArm
                      keyword: <Id.KW_If if>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Pipeline
                              negated: <Id.KW_Bang '!'>
                              children: [
                                (command.Simple
                                  blame_tok: <grep>
                                  more_env: []
                                  words: [{<grep>} {(DQ <Status>)} {<act.out>}]
                                  redirects: [
                                    (Redir
                                      op: <Id.Redir_Great '>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<act>}
                                    )
                                  ]
                                  do_fork: T
                                )
                              ]
                              ops: []
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [
                        (command.Simple
                          blame_tok: <printf>
                          more_env: []
                          words: [
                            {<printf>}
                            {
                              (DQ <'Status: 200 OK'> <Id.Lit_BadBackslash '\\'> <r> 
                                <Id.Lit_BadBackslash '\\'> <n>
                              )
                            }
                          ]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<act>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                      spids: [137 153]
                    )
                  ]
                  else_action: []
                  fi_kw: <Id.KW_Fi fi>
                  redirects: []
                )
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <printf>
                  more_env: []
                  words: [
                    {<printf>}
                    {
                      (DQ <'Status: '> ($ Id.VSub_Number 2) <Id.Lit_BadBackslash '\\'> <r> 
                        <Id.Lit_BadBackslash '\\'> <n>
                      )
                    }
                  ]
                  redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<exp>})]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <test_cmp>
                  more_env: []
                  words: [{<test_cmp>} {<exp>} {<act>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <POST>
      name: POST
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'REQUEST_METHOD='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'REQUEST_METHOD='>
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'REQUEST_METHOD='>
                          name: REQUEST_METHOD
                        )
                      op: assign_op.Equal
                      rhs: {(DQ <POST>)}
                    )
                  ]
                  redirects: []
                )
                (command.Simple
                  blame_tok: <export>
                  more_env: []
                  words: [{<export>} {<REQUEST_METHOD>}]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'CONTENT_TYPE='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'CONTENT_TYPE='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CONTENT_TYPE='> name:CONTENT_TYPE)
                      op: assign_op.Equal
                      rhs: {(DQ <'application/x-'> ($ Id.VSub_Number 1) <-request>)}
                    )
                  ]
                  redirects: []
                )
                (command.Simple
                  blame_tok: <export>
                  more_env: []
                  words: [{<export>} {<CONTENT_TYPE>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <run_backend>
                  more_env: []
                  words: [
                    {<run_backend>}
                    {(DQ <'/repo.git/'> ($ Id.VSub_Number 1))}
                    {(DQ ($ Id.VSub_Number 2))}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sane_unset>
                  more_env: []
                  words: [{<sane_unset>} {<REQUEST_METHOD>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sane_unset>
                  more_env: []
                  words: [{<sane_unset>} {<CONTENT_TYPE>}]
                  redirects: []
                  do_fork: T
                )
                (command.If
                  if_kw: <Id.KW_If if>
                  arms: [
                    (IfArm
                      keyword: <Id.KW_If if>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Pipeline
                              negated: <Id.KW_Bang '!'>
                              children: [
                                (command.Simple
                                  blame_tok: <grep>
                                  more_env: []
                                  words: [{<grep>} {(DQ <Status>)} {<act.out>}]
                                  redirects: [
                                    (Redir
                                      op: <Id.Redir_Great '>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<act>}
                                    )
                                  ]
                                  do_fork: T
                                )
                              ]
                              ops: []
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [
                        (command.Simple
                          blame_tok: <printf>
                          more_env: []
                          words: [
                            {<printf>}
                            {
                              (DQ <'Status: 200 OK'> <Id.Lit_BadBackslash '\\'> <r> 
                                <Id.Lit_BadBackslash '\\'> <n>
                              )
                            }
                          ]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<act>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                      spids: [264 280]
                    )
                  ]
                  else_action: []
                  fi_kw: <Id.KW_Fi fi>
                  redirects: []
                )
              ]
              ops: [
                <Id.Op_DAmp _>
                <Id.Op_DAmp _>
                <Id.Op_DAmp _>
                <Id.Op_DAmp _>
                <Id.Op_DAmp _>
                <Id.Op_DAmp _>
                <Id.Op_DAmp _>
              ]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <printf>
                  more_env: []
                  words: [
                    {<printf>}
                    {
                      (DQ <'Status: '> ($ Id.VSub_Number 3) <Id.Lit_BadBackslash '\\'> <r> 
                        <Id.Lit_BadBackslash '\\'> <n>
                      )
                    }
                  ]
                  redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<exp>})]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <test_cmp>
                  more_env: []
                  words: [{<test_cmp>} {<exp>} {<act>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.Simple
      blame_tok: <.>
      more_env: []
      words: [{<.>} {(DQ ($ Id.VSub_DollarName TEST_DIRECTORY)) <'/t556x_common'>}]
      redirects: []
      do_fork: T
    )
    (command.ShFunction
      name_tok: <expect_aliased>
      name: expect_aliased
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'REQUEST_METHOD='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'REQUEST_METHOD='>
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'REQUEST_METHOD='>
                          name: REQUEST_METHOD
                        )
                      op: assign_op.Equal
                      rhs: {(DQ <GET>)}
                    )
                  ]
                  redirects: []
                )
                (command.Simple
                  blame_tok: <export>
                  more_env: []
                  words: [{<export>} {<REQUEST_METHOD>}]
                  redirects: []
                  do_fork: T
                )
                (command.If
                  if_kw: <Id.KW_If if>
                  arms: [
                    (IfArm
                      keyword: <Id.KW_If if>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.Simple
                                  blame_tok: <test>
                                  more_env: []
                                  words: [{<test>} {($ Id.VSub_Number 1)} {<Id.Lit_Equals '='>} {<0>}]
                                  redirects: []
                                  do_fork: T
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [
                        (command.Simple
                          blame_tok: <run_backend>
                          more_env: []
                          words: [{<run_backend>} {(DQ ($ Id.VSub_Number 2))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      spids: [355 366]
                    )
                  ]
                  else_kw: <Id.KW_Else else>
                  else_action: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <run_backend>
                          more_env: []
                          words: [{<run_backend>} {(DQ ($ Id.VSub_Number 2))}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>} {(DQ <'fatal: \''> ($ Id.VSub_Number 2) <'\': aliased'>)}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<exp.err>}
                            )
                          ]
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <test_cmp>
                          more_env: []
                          words: [{<test_cmp>} {<exp.err>} {<act.err>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
                    )
                  ]
                  fi_kw: <Id.KW_Fi fi>
                  redirects: []
                )
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
            )
            (command.Simple
              blame_tok: <unset>
              more_env: []
              words: [{<unset>} {<REQUEST_METHOD>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'http-backend blocks bad PATH_INFO'>)}
        {
          (SQ <'\n'> <'\tconfig http.getanyfile true &&\n'> <'\n'> 
            <'\texpect_aliased 0 /repo.git/HEAD &&\n'> <'\n'> <'\texpect_aliased 1 /repo.git/../HEAD &&\n'> <'\texpect_aliased 1 /../etc/passwd &&\n'> 
            <'\texpect_aliased 1 ../etc/passwd &&\n'> <'\texpect_aliased 1 /etc//passwd &&\n'> <'\texpect_aliased 1 /etc/./passwd &&\n'> 
            <'\texpect_aliased 1 //domain/data.txt\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_done>
      more_env: []
      words: [{<test_done>}]
      redirects: []
      do_fork: T
    )
  ]
)