(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: [-1 26]
        )
      ]
      spids: [-1 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: -1
                      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: -1
                                              arg_word: {(act)}
                                              spids: [143]
                                            )
                                          ]
                                        )
                                      ]
                                      negated: True
                                    )
                                  ]
                                  action: [
                                    (SimpleCommand
                                      words: [
                                        {(printf)}
                                        {
                                          (DQ ("Status: 200 OK") 
                                            (EscapedLiteralPart
                                              token: <Lit_EscapedChar "\\r">
                                            ) (EscapedLiteralPart token:<Lit_EscapedChar "\\n">)
                                          )
                                        }
                                      ]
                                      redirects: [
                                        (Redir
                                          op_id: Redir_Great
                                          fd: -1
                                          arg_word: {(act)}
                                          spids: [158]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [-1 147]
                                )
                              ]
                              spids: [-1 162]
                            )
                          ]
                          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") 
                        (EscapedLiteralPart token:<Lit_EscapedChar "\\r">) (EscapedLiteralPart token:<Lit_EscapedChar "\\n">)
                      )
                    }
                  ]
                  redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(exp)} spids:[174])]
                )
                (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: [196]
                    )
                  ]
                  spids: [196]
                )
                (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: [210]
                            )
                          ]
                          spids: [210]
                        )
                        (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: -1
                                                          arg_word: {(act)}
                                                          spids: [266]
                                                        )
                                                      ]
                                                    )
                                                  ]
                                                  negated: True
                                                )
                                              ]
                                              action: [
                                                (SimpleCommand
                                                  words: [
                                                    {(printf)}
                                                    {
                                                      (DQ ("Status: 200 OK") 
                                                        (EscapedLiteralPart
                                                          token: <Lit_EscapedChar "\\r">
                                                        ) (EscapedLiteralPart token:<Lit_EscapedChar "\\n">)
                                                      )
                                                    }
                                                  ]
                                                  redirects: [
                                                    (Redir
                                                      op_id: Redir_Great
                                                      fd: -1
                                                      arg_word: {(act)}
                                                      spids: [281]
                                                    )
                                                  ]
                                                )
                                              ]
                                              spids: [-1 270]
                                            )
                                          ]
                                          spids: [-1 285]
                                        )
                                      ]
                                      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") 
                        (EscapedLiteralPart token:<Lit_EscapedChar "\\r">) (EscapedLiteralPart token:<Lit_EscapedChar "\\n">)
                      )
                    }
                  ]
                  redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(exp)} spids:[297])]
                )
                (C {(test_cmp)} {(exp)} {(act)})
              ]
              op_id: Op_DAmp
            )
          ]
          spids: [193]
        )
      spids: [189 192]
    )
    (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: [327]
                    )
                  ]
                  spids: [327]
                )
                (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: [-1 352]
                        )
                      ]
                      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: -1
                                      arg_word: {(exp.err)}
                                      spids: [382]
                                    )
                                  ]
                                )
                                (C {(test_cmp)} {(exp.err)} {(act.err)})
                              ]
                              op_id: Op_DAmp
                            )
                          ]
                          op_id: Op_DAmp
                        )
                      ]
                      spids: [362 395]
                    )
                  ]
                  op_id: Op_DAmp
                )
              ]
              op_id: Op_DAmp
            )
            (C {(unset)} {(REQUEST_METHOD)})
          ]
          spids: [324]
        )
      spids: [320 323]
    )
    (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)})
  ]
)