(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <'test git-http-backend-noserver'>)}
          spids: [4]
        )
      ]
      spids: [4]
    )
    (C {(.)} {(./test-lib.sh)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:HTTPD_DOCUMENT_ROOT_PATH)
          op: Equal
          rhs: {(DQ ($ VSub_Name '$TRASH_DIRECTORY'))}
          spids: [14]
        )
      ]
      spids: [14]
    )
    (If
      arms: [
        (if_arm
          cond: [(C {(test_have_prereq)} {(GREP_STRIPS_CR)})]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:GREP_OPTIONS) op:Equal rhs:{(-U)} spids:[29])]
              spids: [29]
            )
            (C {(export)} {(GREP_OPTIONS)})
          ]
          spids: [16777215 26]
        )
      ]
      spids: [16777215 37]
    )
    (FuncDef
      name: run_backend
      body: 
        (BraceGroup
          children: [
            (Pipeline
              children: [
                (C {(echo)} {(DQ ($ VSub_Number '$2'))})
                (SimpleCommand
                  words: [{(git)} {(http-backend)}]
                  redirects: [
                    (Redir
                      op_id: Redir_Great
                      fd: 16777215
                      arg_word: {(act.out)}
                      spids: [84]
                    )
                    (Redir
                      op_id: Redir_Great
                      fd: 2
                      arg_word: {(act.err)}
                      spids: [87]
                    )
                  ]
                  more_env: [
                    (env_pair
                      name: QUERY_STRING
                      val: 
                        {
                          (DQ 
                            (BracedVarSub
                              token: <VSub_Number 1>
                              suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{('*[?]')})
                              spids: [58 62]
                            )
                          )
                        }
                      spids: [56]
                    )
                    (env_pair
                      name: PATH_TRANSLATED
                      val: 
                        {
                          (DQ ($ VSub_Name '$HTTPD_DOCUMENT_ROOT_PATH') (/) 
                            (BracedVarSub
                              token: <VSub_Number 1>
                              suffix_op: (StringUnary op_id:VOp1_DPercent arg_word:{('[?]*')})
                              spids: [71 75]
                            )
                          )
                        }
                      spids: [67]
                    )
                  ]
                )
              ]
              negated: False
            )
          ]
          spids: [44]
        )
      spids: [40 43]
    )
    (FuncDef
      name: GET
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:REQUEST_METHOD)
                      op: Equal
                      rhs: {(DQ (GET))}
                      spids: [100]
                    )
                  ]
                  spids: [100]
                )
                (AndOr
                  children: [
                    (C {(export)} {(REQUEST_METHOD)})
                    (AndOr
                      children: [
                        (C {(run_backend)} {(DQ (/repo.git/) ($ VSub_Number '$1'))})
                        (AndOr
                          children: [
                            (C {(sane_unset)} {(REQUEST_METHOD)})
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Pipeline
                                      children: [
                                        (SimpleCommand
                                          words: [{(grep)} {(DQ (Status))} {(act.out)}]
                                          redirects: [
                                            (Redir
                                              op_id: Redir_Great
                                              fd: 16777215
                                              arg_word: {(act)}
                                              spids: [143]
                                            )
                                          ]
                                        )
                                      ]
                                      negated: True
                                    )
                                  ]
                                  action: [
                                    (SimpleCommand
                                      words: [
                                        {(printf)}
                                        {
                                          (DQ ('Status: 200 OK') (Lit_Other '\\') (r) (Lit_Other '\\') 
                                            (n)
                                          )
                                        }
                                      ]
                                      redirects: [
                                        (Redir
                                          op_id: Redir_Great
                                          fd: 16777215
                                          arg_word: {(act)}
                                          spids: [160]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [16777215 147]
                                )
                              ]
                              spids: [16777215 164]
                            )
                          ]
                          op_id: Op_DAmp
                        )
                      ]
                      op_id: Op_DAmp
                    )
                  ]
                  op_id: Op_DAmp
                )
              ]
              op_id: Op_DAmp
            )
            (AndOr
              children: [
                (SimpleCommand
                  words: [
                    {(printf)}
                    {
                      (DQ ('Status: ') ($ VSub_Number '$2') (Lit_Other '\\') (r) (Lit_Other '\\') (n))
                    }
                  ]
                  redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(exp)} spids:[178])]
                )
                (C {(test_cmp)} {(exp)} {(act)})
              ]
              op_id: Op_DAmp
            )
          ]
          spids: [97]
        )
      spids: [93 96]
    )
    (FuncDef
      name: POST
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:REQUEST_METHOD)
                      op: Equal
                      rhs: {(DQ (POST))}
                      spids: [200]
                    )
                  ]
                  spids: [200]
                )
                (AndOr
                  children: [
                    (C {(export)} {(REQUEST_METHOD)})
                    (AndOr
                      children: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:CONTENT_TYPE)
                              op: Equal
                              rhs: {(DQ (application/x-) ($ VSub_Number '$1') (-request))}
                              spids: [214]
                            )
                          ]
                          spids: [214]
                        )
                        (AndOr
                          children: [
                            (C {(export)} {(CONTENT_TYPE)})
                            (AndOr
                              children: [
                                (C {(run_backend)} {(DQ (/repo.git/) ($ VSub_Number '$1'))} 
                                  {(DQ ($ VSub_Number '$2'))}
                                )
                                (AndOr
                                  children: [
                                    (C {(sane_unset)} {(REQUEST_METHOD)})
                                    (AndOr
                                      children: [
                                        (C {(sane_unset)} {(CONTENT_TYPE)})
                                        (If
                                          arms: [
                                            (if_arm
                                              cond: [
                                                (Pipeline
                                                  children: [
                                                    (SimpleCommand
                                                      words: [{(grep)} {(DQ (Status))} {(act.out)}]
                                                      redirects: [
                                                        (Redir
                                                          op_id: Redir_Great
                                                          fd: 16777215
                                                          arg_word: {(act)}
                                                          spids: [270]
                                                        )
                                                      ]
                                                    )
                                                  ]
                                                  negated: True
                                                )
                                              ]
                                              action: [
                                                (SimpleCommand
                                                  words: [
                                                    {(printf)}
                                                    {
                                                      (DQ ('Status: 200 OK') (Lit_Other '\\') (r) 
                                                        (Lit_Other '\\') (n)
                                                      )
                                                    }
                                                  ]
                                                  redirects: [
                                                    (Redir
                                                      op_id: Redir_Great
                                                      fd: 16777215
                                                      arg_word: {(act)}
                                                      spids: [287]
                                                    )
                                                  ]
                                                )
                                              ]
                                              spids: [16777215 274]
                                            )
                                          ]
                                          spids: [16777215 291]
                                        )
                                      ]
                                      op_id: Op_DAmp
                                    )
                                  ]
                                  op_id: Op_DAmp
                                )
                              ]
                              op_id: Op_DAmp
                            )
                          ]
                          op_id: Op_DAmp
                        )
                      ]
                      op_id: Op_DAmp
                    )
                  ]
                  op_id: Op_DAmp
                )
              ]
              op_id: Op_DAmp
            )
            (AndOr
              children: [
                (SimpleCommand
                  words: [
                    {(printf)}
                    {
                      (DQ ('Status: ') ($ VSub_Number '$3') (Lit_Other '\\') (r) (Lit_Other '\\') (n))
                    }
                  ]
                  redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(exp)} spids:[305])]
                )
                (C {(test_cmp)} {(exp)} {(act)})
              ]
              op_id: Op_DAmp
            )
          ]
          spids: [197]
        )
      spids: [193 196]
    )
    (C {(.)} {(DQ ($ VSub_Name '$TEST_DIRECTORY')) (/t556x_common)})
    (FuncDef
      name: expect_aliased
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:REQUEST_METHOD)
                      op: Equal
                      rhs: {(DQ (GET))}
                      spids: [335]
                    )
                  ]
                  spids: [335]
                )
                (AndOr
                  children: [
                    (C {(export)} {(REQUEST_METHOD)})
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: (C {(test)} {($ VSub_Number '$1')} {(Lit_Other '=')} {(0)})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(C {(run_backend)} {(DQ ($ VSub_Number '$2'))})]
                          spids: [16777215 360]
                        )
                      ]
                      else_action: [
                        (AndOr
                          children: [
                            (C {(run_backend)} {(DQ ($ VSub_Number '$2'))})
                            (AndOr
                              children: [
                                (SimpleCommand
                                  words: [
                                    {(echo)}
                                    {(DQ ("fatal: '") ($ VSub_Number '$2') ("': aliased"))}
                                  ]
                                  redirects: [
                                    (Redir
                                      op_id: Redir_Great
                                      fd: 16777215
                                      arg_word: {(exp.err)}
                                      spids: [390]
                                    )
                                  ]
                                )
                                (C {(test_cmp)} {(exp.err)} {(act.err)})
                              ]
                              op_id: Op_DAmp
                            )
                          ]
                          op_id: Op_DAmp
                        )
                      ]
                      spids: [370 403]
                    )
                  ]
                  op_id: Op_DAmp
                )
              ]
              op_id: Op_DAmp
            )
            (C {(unset)} {(REQUEST_METHOD)})
          ]
          spids: [332]
        )
      spids: [328 331]
    )
    (C {(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'>
        )
      }
    )
    (C {(test_done)})
  ]
)