(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <"test git-http-backend">)}
          spids: [4]
        )
      ]
      spids: [4]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(.)} {(DQ ($ VSub_Name "$TEST_DIRECTORY")) (/lib-httpd.sh)})
    (C {(start_httpd)})
    (FuncDef
      name: GET
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (SimpleCommand
                  words: [
                    {(curl)}
                    {(--include)}
                    {
                      (DQ ($ VSub_Name "$HTTPD_URL") (/) ($ VSub_Name "$SMART") (/repo.git/) 
                        ($ VSub_Number "$1")
                      )
                    }
                  ]
                  redirects: [
                    (Redir op_id:Redir_Great fd:-1 arg_word:{(out)} spids:[42])
                    (Redir
                      op_id: Redir_Great
                      fd: 2
                      arg_word: {(/dev/null)}
                      spids: [45]
                    )
                  ]
                )
                (AndOr
                  children: [
                    (Pipeline
                      children: [
                        (SimpleCommand
                          words: [{(tr)} {(SQ <"\\015">)} {(Q)}]
                          redirects: [(Redir op_id:Redir_Less fd:-1 arg_word:{(out)} spids:[59])]
                        )
                        (SimpleCommand
                          words: [{(sed)} {(SQ <"\n"> <"\t\ts/Q$//\n"> <"\t\t1q\n"> <"\t">)}]
                          redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(act)} spids:[74])]
                        )
                      ]
                      negated: False
                    )
                    (AndOr
                      children: [
                        (SimpleCommand
                          words: [{(echo)} {(DQ ("HTTP/1.1 ") ($ VSub_Number "$2"))}]
                          redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(exp)} spids:[87])]
                        )
                        (C {(test_cmp)} {(exp)} {(act)})
                      ]
                      op_id: Op_DAmp
                    )
                  ]
                  op_id: Op_DAmp
                )
              ]
              op_id: Op_DAmp
            )
          ]
          spids: [27]
        )
      spids: [23 26]
    )
    (FuncDef
      name: POST
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (SimpleCommand
                  words: [
                    {(curl)}
                    {(--include)}
                    {(--data)}
                    {(DQ ($ VSub_Number "$2"))}
                    {(--header)}
                    {(DQ ("Content-Type: application/x-") ($ VSub_Number "$1") (-request))}
                    {(DQ ($ VSub_Name "$HTTPD_URL") (/smart/repo.git/) ($ VSub_Number "$1"))}
                  ]
                  redirects: [
                    (Redir op_id:Redir_Great fd:-1 arg_word:{(out)} spids:[137])
                    (Redir
                      op_id: Redir_Great
                      fd: 2
                      arg_word: {(/dev/null)}
                      spids: [140]
                    )
                  ]
                )
                (AndOr
                  children: [
                    (Pipeline
                      children: [
                        (SimpleCommand
                          words: [{(tr)} {(SQ <"\\015">)} {(Q)}]
                          redirects: [(Redir op_id:Redir_Less fd:-1 arg_word:{(out)} spids:[154])]
                        )
                        (SimpleCommand
                          words: [{(sed)} {(SQ <"\n"> <"\t\ts/Q$//\n"> <"\t\t1q\n"> <"\t">)}]
                          redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(act)} spids:[169])]
                        )
                      ]
                      negated: False
                    )
                    (AndOr
                      children: [
                        (SimpleCommand
                          words: [{(echo)} {(DQ ("HTTP/1.1 ") ($ VSub_Number "$3"))}]
                          redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(exp)} spids:[182])]
                        )
                        (C {(test_cmp)} {(exp)} {(act)})
                      ]
                      op_id: Op_DAmp
                    )
                  ]
                  op_id: Op_DAmp
                )
              ]
              op_id: Op_DAmp
            )
          ]
          spids: [106]
        )
      spids: [102 105]
    )
    (C {(.)} {(DQ ($ VSub_Name "$TEST_DIRECTORY")) (/t556x_common)})
    (SimpleCommand
      words: [{(grep)} {(SQ <"^[^#]">)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(exp)} spids:[211])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("\n") ("###  refs/heads/master\n") ("###\n") 
                ("GET  /smart/repo.git/refs/heads/master HTTP/1.1 404 -\n") ("\n") ("###  getanyfile default\n") ("###\n") ("GET  /smart/repo.git/HEAD HTTP/1.1 200\n") 
                ("GET  /smart/repo.git/info/refs HTTP/1.1 200\n") ("GET  /smart/repo.git/objects/info/packs HTTP/1.1 200\n") 
                ("GET  /smart/repo.git/objects/info/alternates HTTP/1.1 200 -\n") ("GET  /smart/repo.git/objects/info/http-alternates HTTP/1.1 200 -\n") ("GET  /smart/repo.git/") 
                ($ VSub_Name "$LOOSE_URL") (" HTTP/1.1 200\n") ("GET  /smart/repo.git/") ($ VSub_Name "$PACK_URL") (" HTTP/1.1 200\n") 
                ("GET  /smart/repo.git/") ($ VSub_Name "$IDX_URL") (" HTTP/1.1 200\n") ("\n") ("###  no git-daemon-export-ok\n") ("###\n") 
                ("GET  /smart_noexport/repo.git/HEAD HTTP/1.1 404 -\n") ("GET  /smart_noexport/repo.git/info/refs HTTP/1.1 404 -\n") 
                ("GET  /smart_noexport/repo.git/objects/info/packs HTTP/1.1 404 -\n") ("GET  /smart_noexport/repo.git/objects/info/alternates HTTP/1.1 404 -\n") 
                ("GET  /smart_noexport/repo.git/objects/info/http-alternates HTTP/1.1 404 -\n") ("GET  /smart_noexport/repo.git/") ($ VSub_Name "$LOOSE_URL") (" HTTP/1.1 404 -\n") 
                ("GET  /smart_noexport/repo.git/") ($ VSub_Name "$PACK_URL") (" HTTP/1.1 404 -\n") ("GET  /smart_noexport/repo.git/") 
                ($ VSub_Name "$IDX_URL") (" HTTP/1.1 404 -\n") ("\n") ("###  git-daemon-export-ok\n") ("###\n") 
                ("GET  /smart_noexport/repo.git/HEAD HTTP/1.1 200\n") ("GET  /smart_noexport/repo.git/info/refs HTTP/1.1 200\n") 
                ("GET  /smart_noexport/repo.git/objects/info/packs HTTP/1.1 200\n") ("GET  /smart_noexport/repo.git/objects/info/alternates HTTP/1.1 200 -\n") 
                ("GET  /smart_noexport/repo.git/objects/info/http-alternates HTTP/1.1 200 -\n") ("GET  /smart_noexport/repo.git/") ($ VSub_Name "$LOOSE_URL") (" HTTP/1.1 200\n") 
                ("GET  /smart_noexport/repo.git/") ($ VSub_Name "$PACK_URL") (" HTTP/1.1 200\n") ("GET  /smart_noexport/repo.git/") 
                ($ VSub_Name "$IDX_URL") (" HTTP/1.1 200\n") ("\n") ("###  getanyfile true\n") ("###\n") 
                ("GET  /smart/repo.git/HEAD HTTP/1.1 200\n") ("GET  /smart/repo.git/info/refs HTTP/1.1 200\n") 
                ("GET  /smart/repo.git/objects/info/packs HTTP/1.1 200\n") ("GET  /smart/repo.git/objects/info/alternates HTTP/1.1 200 -\n") 
                ("GET  /smart/repo.git/objects/info/http-alternates HTTP/1.1 200 -\n") ("GET  /smart/repo.git/") ($ VSub_Name "$LOOSE_URL") (" HTTP/1.1 200\n") ("GET  /smart/repo.git/") 
                ($ VSub_Name "$PACK_URL") (" HTTP/1.1 200\n") ("GET  /smart/repo.git/") ($ VSub_Name "$IDX_URL") (" HTTP/1.1 200\n") ("\n") 
                ("###  getanyfile false\n") ("###\n") ("GET  /smart/repo.git/HEAD HTTP/1.1 403 -\n") 
                ("GET  /smart/repo.git/info/refs HTTP/1.1 403 -\n") ("GET  /smart/repo.git/objects/info/packs HTTP/1.1 403 -\n") 
                ("GET  /smart/repo.git/objects/info/alternates HTTP/1.1 403 -\n") ("GET  /smart/repo.git/objects/info/http-alternates HTTP/1.1 403 -\n") ("GET  /smart/repo.git/") 
                ($ VSub_Name "$LOOSE_URL") (" HTTP/1.1 403 -\n") ("GET  /smart/repo.git/") ($ VSub_Name "$PACK_URL") (" HTTP/1.1 403 -\n") 
                ("GET  /smart/repo.git/") ($ VSub_Name "$IDX_URL") (" HTTP/1.1 403 -\n") ("\n") ("###  uploadpack default\n") ("###\n") 
                ("GET  /smart/repo.git/info/refs?service=git-upload-pack HTTP/1.1 200\n") ("POST /smart/repo.git/git-upload-pack HTTP/1.1 200 -\n") ("\n") ("###  uploadpack true\n") ("###\n") 
                ("GET  /smart/repo.git/info/refs?service=git-upload-pack HTTP/1.1 200\n") ("POST /smart/repo.git/git-upload-pack HTTP/1.1 200 -\n") ("\n") ("###  uploadpack false\n") ("###\n") 
                ("GET  /smart/repo.git/info/refs?service=git-upload-pack HTTP/1.1 403 -\n") ("POST /smart/repo.git/git-upload-pack HTTP/1.1 403 -\n") ("\n") ("###  receivepack default\n") 
                ("###\n") ("GET  /smart/repo.git/info/refs?service=git-receive-pack HTTP/1.1 403 -\n") 
                ("POST /smart/repo.git/git-receive-pack HTTP/1.1 403 -\n") ("\n") ("###  receivepack true\n") ("###\n") 
                ("GET  /smart/repo.git/info/refs?service=git-receive-pack HTTP/1.1 200\n") ("POST /smart/repo.git/git-receive-pack HTTP/1.1 200 -\n") ("\n") ("###  receivepack false\n") ("###\n") 
                ("GET  /smart/repo.git/info/refs?service=git-receive-pack HTTP/1.1 403 -\n") ("POST /smart/repo.git/git-receive-pack HTTP/1.1 403 -\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [214]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"server request log matches test results">)} 
      {
        (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">
        )
      }
    )
    (C {(stop_httpd)})
    (C {(test_done)})
  ]
)