(command.CommandList
  children: [
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [(C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName NO_CURL))})]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'skip_all='> name:skip_all)
                  op: assign_op.Equal
                  rhs: {(SQ <'skipping test, git built without http support'>)}
                  spids: [107]
                )
              ]
              redirects: []
            )
            (C {<test_done>})
          ]
          spids: [94 104]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.AndOr
                  ops: [Id.Op_DAmp]
                  children: [
                    (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName NO_EXPAT))})
                    (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName LIB_HTTPD_DAV))})
                  ]
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'skip_all='> name:skip_all)
                  op: assign_op.Equal
                  rhs: {(SQ <'skipping test, git built without expat support'>)}
                  spids: [141]
                )
              ]
              redirects: []
            )
            (C {<test_done>})
          ]
          spids: [118 138]
        )
      ]
      else_action: []
      redirects: []
    )
    (C {<test_tristate>} {<GIT_TEST_HTTPD>})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (C {<test>} {(DQ ($ Id.VSub_DollarName GIT_TEST_HTTPD))} {<Id.Lit_Equals '='>} {<false>})
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'skip_all='> name:skip_all)
                  op: assign_op.Equal
                  rhs: {(DQ <'Network testing disabled (unset GIT_TEST_HTTPD to enable)'>)}
                  spids: [171]
                )
              ]
              redirects: []
            )
            (C {<test_done>})
          ]
          spids: [156 168]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Pipeline
                      children: [(C {<test_have_prereq>} {<NOT_ROOT>})]
                      negated: T
                      stderr_indices: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<test_skip_or_die>} {($ Id.VSub_DollarName GIT_TEST_HTTPD)} 
              {(DQ <'Cannot run httpd tests as root'>)}
            )
          ]
          spids: [182 191]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'HTTPD_PARA='> name:HTTPD_PARA)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [207]
        )
      ]
      redirects: []
    )
    (command.ForEach
      iter_names: [DEFAULT_HTTPD_PATH]
      iterable: (for_iter.Words words:[{(SQ <'/usr/sbin/httpd'>)} {(SQ <'/usr/sbin/apache2'>)}])
      body: 
        (command.DoGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [(C {<test>} {<-x>} {(DQ ($ Id.VSub_DollarName DEFAULT_HTTPD_PATH))})]
                    )
                  action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                  spids: [229 240]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
        )
      redirects: []
    )
    (command.ForEach
      iter_names: [DEFAULT_HTTPD_MODULE_PATH]
      iterable: 
        (for_iter.Words
          words: [
            {(SQ <'/usr/libexec/apache2'>)}
            {(SQ <'/usr/lib/apache2/modules'>)}
            {(SQ <'/usr/lib64/httpd/modules'>)}
            {(SQ <'/usr/lib/httpd/modules'>)}
          ]
        )
      body: 
        (command.DoGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<test>} {<-d>} {(DQ ($ Id.VSub_DollarName DEFAULT_HTTPD_MODULE_PATH))})
                      ]
                    )
                  action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                  spids: [282 293]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
        )
      redirects: []
    )
    (command.Case
      to_match: 
        {
          (command_sub
            left_token: <Id.Left_DollarParen '$('>
            child: (C {<uname>})
            right: <Id.Eof_RParen _>
          )
        }
      arms: [
        (case_arm
          pat_list: [{<Darwin>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'HTTPD_PARA='> name:HTTPD_PARA)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName HTTPD_PARA) <' -DDarwin'>)}
                  spids: [317]
                )
              ]
              redirects: []
            )
          ]
          spids: [313 314 324 -1]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LIB_HTTPD_PATH='> name:LIB_HTTPD_PATH)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                left: <Id.Left_DollarBrace '${'>
                token: <Id.VSub_Name LIB_HTTPD_PATH>
                var_name: LIB_HTTPD_PATH
                suffix_op: 
                  (suffix_op.Unary
                    op: <Id.VTest_Hyphen _>
                    arg_word: {(DQ ($ Id.VSub_DollarName DEFAULT_HTTPD_PATH))}
                  )
                right: <Id.Right_DollarBrace '}'>
              )
            }
          spids: [329]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LIB_HTTPD_PORT='> name:LIB_HTTPD_PORT)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                left: <Id.Left_DollarBrace '${'>
                token: <Id.VSub_Name LIB_HTTPD_PORT>
                var_name: LIB_HTTPD_PORT
                suffix_op: 
                  (suffix_op.Unary
                    op: <Id.VTest_Hyphen _>
                    arg_word: 
                      {
                        (braced_var_sub
                          left: <Id.Left_DollarBrace '${'>
                          token: <Id.VSub_Name this_test>
                          var_name: this_test
                          suffix_op: (suffix_op.Unary op:<Id.VOp1_Pound '#'> arg_word:{<t>})
                          right: <Id.Right_DollarBrace '}'>
                        )
                      }
                  )
                right: <Id.Right_DollarBrace '}'>
              )
            }
          spids: [338]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TEST_PATH='> name:TEST_PATH)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName TEST_DIRECTORY)) <'/lib-httpd'>}
          spids: [350]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'HTTPD_ROOT_PATH='> name:HTTPD_ROOT_PATH)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName PWD)) <'/httpd'>}
          spids: [356]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike 'HTTPD_DOCUMENT_ROOT_PATH='>
              name: HTTPD_DOCUMENT_ROOT_PATH
            )
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName HTTPD_ROOT_PATH) <'/www'>}
          spids: [362]
        )
      ]
      redirects: []
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GIT_VALGRIND='> name:GIT_VALGRIND)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName GIT_VALGRIND)}
                  spids: [370]
                )
              ]
              redirects: []
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<export>} {<GIT_VALGRIND>})
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'GIT_VALGRIND_OPTIONS='>
                      name: GIT_VALGRIND_OPTIONS
                    )
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName GIT_VALGRIND_OPTIONS)}
                  spids: [378]
                )
              ]
              redirects: []
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<export>} {<GIT_VALGRIND_OPTIONS>})
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GIT_TRACE='> name:GIT_TRACE)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName GIT_TRACE)}
                  spids: [386]
                )
              ]
              redirects: []
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<export>} {<GIT_TRACE>})
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Pipeline
                  children: [(C {<test>} {<-x>} {(DQ ($ Id.VSub_DollarName LIB_HTTPD_PATH))})]
                  negated: T
                  stderr_indices: []
                )
              ]
            )
          action: [
            (C {<test_skip_or_die>} {($ Id.VSub_DollarName GIT_TEST_HTTPD)} 
              {(DQ <'no web server found at \''> ($ Id.VSub_DollarName LIB_HTTPD_PATH) <'\''>)}
            )
          ]
          spids: [395 407]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'HTTPD_VERSION='> name:HTTPD_VERSION)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Pipeline
                    children: [
                      (C {($ Id.VSub_DollarName LIB_HTTPD_PATH)} {<-v>})
                      (C {<sed>} {<-n>} 
                        {(SQ <'s/^Server version: Apache\\/\\([0-9]*\\)\\..*$/\\1/p; q'>)}
                      )
                    ]
                    negated: F
                    stderr_indices: []
                  )
                right: <Id.Eof_RParen _>
              )
            }
          spids: [423]
        )
      ]
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [(C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName HTTPD_VERSION))})]
            )
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [(C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName LIB_HTTPD_MODULE_PATH))})]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Pipeline
                                  children: [
                                    (C {<test>} {($ Id.VSub_DollarName HTTPD_VERSION)} {<-ge>} {<2>})
                                  ]
                                  negated: T
                                  stderr_indices: []
                                )
                              ]
                            )
                          action: [
                            (C {<test_skip_or_die>} {($ Id.VSub_DollarName GIT_TEST_HTTPD)} 
                              {(DQ <'at least Apache version 2 is required'>)}
                            )
                          ]
                          spids: [470 483]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Pipeline
                                  children: [
                                    (C {<test>} {<-d>} 
                                      {(DQ ($ Id.VSub_DollarName DEFAULT_HTTPD_MODULE_PATH))}
                                    )
                                  ]
                                  negated: T
                                  stderr_indices: []
                                )
                              ]
                            )
                          action: [
                            (C {<test_skip_or_die>} {($ Id.VSub_DollarName GIT_TEST_HTTPD)} 
                              {(DQ <'Apache module directory not found'>)}
                            )
                          ]
                          spids: [500 513]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'LIB_HTTPD_MODULE_PATH='>
                              name: LIB_HTTPD_MODULE_PATH
                            )
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName DEFAULT_HTTPD_MODULE_PATH))}
                          spids: [531]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [456 467]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          spids: [443 453]
        )
      ]
      else_action: [
        (C {<test_skip_or_die>} {($ Id.VSub_DollarName GIT_TEST_HTTPD)} 
          {(DQ <'Could not identify web server at \''> ($ Id.VSub_DollarName LIB_HTTPD_PATH) <'\''>)}
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name: install_script
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              words: [
                {<write_script>}
                {(DQ ($ Id.VSub_DollarName HTTPD_ROOT_PATH) <'/'> ($ Id.VSub_Number 1))}
              ]
              redirects: [
                (redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {(DQ ($ Id.VSub_DollarName TEST_PATH) <'/'> ($ Id.VSub_Number 1))}
                )
              ]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: prepare_httpd
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName HTTPD_DOCUMENT_ROOT_PATH))})
            (C {<cp>} {(DQ ($ Id.VSub_DollarName TEST_PATH)) <'/passwd'>} 
              {(DQ ($ Id.VSub_DollarName HTTPD_ROOT_PATH))}
            )
            (C {<install_script>} {<broken-smart-http.sh>})
            (C {<install_script>} {<error.sh>})
            (C {<ln>} {<-s>} {(DQ ($ Id.VSub_DollarName LIB_HTTPD_MODULE_PATH))} 
              {(DQ ($ Id.VSub_DollarName HTTPD_ROOT_PATH) <'/modules'>)}
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [(C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName LIB_HTTPD_SSL))})]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'HTTPD_PROTO='>
                              name: HTTPD_PROTO
                            )
                          op: assign_op.Equal
                          rhs: {<https>}
                          spids: [651]
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      words: [
                        {<openssl>}
                        {<req>}
                        {<-config>}
                        {(DQ ($ Id.VSub_DollarName TEST_PATH) <'/ssl.cnf'>)}
                        {<-new>}
                        {<-x509>}
                        {<-nodes>}
                        {<-out>}
                        {(DQ ($ Id.VSub_DollarName HTTPD_ROOT_PATH) <'/httpd.pem'>)}
                        {<-keyout>}
                        {(DQ ($ Id.VSub_DollarName HTTPD_ROOT_PATH) <'/httpd.pem'>)}
                      ]
                      redirects: []
                      more_env: [
                        (env_pair
                          name: RANDFILE_PATH
                          val: {(DQ ($ Id.VSub_DollarName HTTPD_ROOT_PATH)) <'/.rnd'>}
                          spids: [656]
                        )
                      ]
                      do_fork: T
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'GIT_SSL_NO_VERIFY='>
                              name: GIT_SSL_NO_VERIFY
                            )
                          op: assign_op.Equal
                          rhs: {<t>}
                          spids: [702]
                        )
                      ]
                      redirects: []
                    )
                    (C {<export>} {<GIT_SSL_NO_VERIFY>})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'HTTPD_PARA='> name:HTTPD_PARA)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName HTTPD_PARA) <' -DSSL'>)}
                          spids: [711]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [637 648]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'HTTPD_PROTO='> name:HTTPD_PROTO)
                      op: assign_op.Equal
                      rhs: {<http>}
                      spids: [721]
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'HTTPD_DEST='> name:HTTPD_DEST)
                  op: assign_op.Equal
                  rhs: {<127.0.0.1> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName LIB_HTTPD_PORT)}
                  spids: [728]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'HTTPD_URL='> name:HTTPD_URL)
                  op: assign_op.Equal
                  rhs: 
                    {($ Id.VSub_DollarName HTTPD_PROTO) <Id.Lit_Colon ':'> <'//'> 
                      ($ Id.VSub_DollarName HTTPD_DEST)
                    }
                  spids: [734]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'HTTPD_URL_USER='> name:HTTPD_URL_USER)
                  op: assign_op.Equal
                  rhs: 
                    {($ Id.VSub_DollarName HTTPD_PROTO) <Id.Lit_Colon ':'> <'//user'> 
                      <Id.Lit_Other '%'> <40host> <Id.Lit_At '@'> ($ Id.VSub_DollarName HTTPD_DEST)
                    }
                  spids: [741]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'HTTPD_URL_USER_PASS='>
                      name: HTTPD_URL_USER_PASS
                    )
                  op: assign_op.Equal
                  rhs: 
                    {($ Id.VSub_DollarName HTTPD_PROTO) <Id.Lit_Colon ':'> <'//user'> 
                      <Id.Lit_Other '%'> <40host> <Id.Lit_Colon ':'> <pass> <Id.Lit_Other '%'> <40host> <Id.Lit_At '@'> 
                      ($ Id.VSub_DollarName HTTPD_DEST)
                    }
                  spids: [751]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.AndOr
                          ops: [Id.Op_DPipe]
                          children: [
                            (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName LIB_HTTPD_DAV))})
                            (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName LIB_HTTPD_SVN))})
                          ]
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'HTTPD_PARA='> name:HTTPD_PARA)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName HTTPD_PARA) <' -DDAV'>)}
                          spids: [790]
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [(C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName LIB_HTTPD_SVN))})]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'HTTPD_PARA='>
                                      name: HTTPD_PARA
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName HTTPD_PARA) <' -DSVN'>)}
                                  spids: [812]
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'LIB_HTTPD_SVNPATH='>
                                      name: LIB_HTTPD_SVNPATH
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName rawsvnrepo))}
                                  spids: [819]
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'svnrepo='>
                                      name: svnrepo
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ <'http://127.0.0.1:'> ($ Id.VSub_DollarName LIB_HTTPD_PORT) 
                                        <'/'>
                                      )
                                    }
                                  spids: [825]
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'svnrepo='>
                                      name: svnrepo
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName svnrepo) 
                                        ($ Id.VSub_DollarName LIB_HTTPD_SVN)
                                      )
                                    }
                                  spids: [833]
                                )
                              ]
                              redirects: []
                            )
                            (C {<export>} {<LIB_HTTPD_SVN>} {<LIB_HTTPD_SVNPATH>})
                          ]
                          spids: [798 809]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                  ]
                  spids: [766 787]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: start_httpd
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              words: [{<prepare_httpd>}]
              redirects: [
                (redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<3>})
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<4>})
              ]
              more_env: []
              do_fork: T
            )
            (C {<trap>} {(SQ <'code=$?; stop_httpd; (exit $code); die'>)} {<EXIT>})
            (command.Simple
              words: [
                {(DQ ($ Id.VSub_DollarName LIB_HTTPD_PATH))}
                {<-d>}
                {(DQ ($ Id.VSub_DollarName HTTPD_ROOT_PATH))}
                {<-f>}
                {(DQ ($ Id.VSub_DollarName TEST_PATH) <'/apache.conf'>)}
                {($ Id.VSub_DollarName HTTPD_PARA)}
                {<-c>}
                {(DQ <'Listen 127.0.0.1:'> ($ Id.VSub_DollarName LIB_HTTPD_PORT))}
                {<-k>}
                {<start>}
              ]
              redirects: [
                (redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<3>})
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<4>})
              ]
              more_env: []
              do_fork: T
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [(C {<test>} {($ Id.VSub_QMark '?')} {<-ne>} {<0>})]
                    )
                  action: [
                    (C {<trap>} {(SQ <die>)} {<EXIT>})
                    (command.Simple
                      words: [{<cat>} {(DQ ($ Id.VSub_DollarName HTTPD_ROOT_PATH)) <'/error.log'>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_GreatAnd '>&'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<4>}
                        )
                        (redir
                          op: <Id.Redir_Great '2>'>
                          loc: (redir_loc.Fd fd:2)
                          arg: {<'/dev/null'>}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (C {<test_skip_or_die>} {($ Id.VSub_DollarName GIT_TEST_HTTPD)} 
                      {(DQ <'web server setup failed'>)}
                    )
                  ]
                  spids: [925 936]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: stop_httpd
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<trap>} {(SQ <die>)} {<EXIT>})
            (C {(DQ ($ Id.VSub_DollarName LIB_HTTPD_PATH))} {<-d>} 
              {(DQ ($ Id.VSub_DollarName HTTPD_ROOT_PATH))} {<-f>} {(DQ ($ Id.VSub_DollarName TEST_PATH) <'/apache.conf'>)} {($ Id.VSub_DollarName HTTPD_PARA)} 
              {<-k>} {<stop>}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: test_http_push_nonff
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'REMOTE_REPO='> name:REMOTE_REPO)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                  spids: [1029]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LOCAL_REPO='> name:LOCAL_REPO)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 2)}
                  spids: [1033]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BRANCH='> name:BRANCH)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 3)}
                  spids: [1037]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'EXPECT_CAS_RESULT='>
                      name: EXPECT_CAS_RESULT
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Number 4>
                        var_name: 4
                        suffix_op: (suffix_op.Unary op:<Id.VTest_Hyphen _> arg_word:{<failure>})
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                  spids: [1041]
                )
              ]
              redirects: []
            )
            (C {<test_expect_success>} {(SQ <'non-fast-forward push fails'>)} 
              {
                (SQ <'\n'> <'\t\tcd "$REMOTE_REPO" &&\n'> 
                  <'\t\tHEAD=$(git rev-parse --verify HEAD) &&\n'> <'\n'> <'\t\tcd "$LOCAL_REPO" &&\n'> <'\t\tgit checkout $BRANCH &&\n'> 
                  <'\t\techo "changed" > path2 &&\n'> <'\t\tgit commit -a -m path2 --amend &&\n'> <'\n'> 
                  <'\t\ttest_must_fail git push -v origin >output 2>&1 &&\n'> <'\t\t(cd "$REMOTE_REPO" &&\n'> <'\t\t test $HEAD = $(git rev-parse --verify HEAD))\n'> <'\t'>
                )
              }
            )
            (C {<test_expect_success>} {(SQ <'non-fast-forward push show ref status'>)} 
              {
                (SQ <'\n'> 
                  <
'\t\tgrep "^ ! \\[rejected\\][ ]*$BRANCH -> $BRANCH (non-fast-forward)$" output\n'
                  > <'\t'>
                )
              }
            )
            (C {<test_expect_success>} {(SQ <'non-fast-forward push shows help message'>)} 
              {(SQ <'\n'> <'\t\ttest_i18ngrep "Updates were rejected because" output\n'> <'\t'>)}
            )
            (C {<test_expect_> (${ Id.VSub_Name EXPECT_CAS_RESULT)} {(SQ <'force with lease aka cas'>)} 
              {
                (SQ <'\n'> <'\t\tHEAD=$(\tcd "$REMOTE_REPO" && git rev-parse --verify HEAD ) &&\n'> 
                  <'\t\ttest_when_finished '>
                ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''> ch:'\'') 
                (SQ <'\n'> <'\t\t\t(cd "$REMOTE_REPO" && git update-ref HEAD "$HEAD")\n'> <'\t\t'>) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''> ch:'\'') 
                (SQ <' &&\n'> <'\t\t(\n'> <'\t\t\tcd "$LOCAL_REPO" &&\n'> 
                  <'\t\t\tgit push -v --force-with-lease=$BRANCH:$HEAD origin\n'> <'\t\t) &&\n'> <'\t\tgit rev-parse --verify "$BRANCH" >expect &&\n'> <'\t\t(\n'> 
                  <'\t\t\tcd "$REMOTE_REPO" && git rev-parse --verify HEAD\n'> <'\t\t) >actual &&\n'> <'\t\ttest_cmp expect actual\n'> <'\t'>
                )
              }
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: setup_askpass_helper
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<test_expect_success>} {(SQ <'setup askpass helper'>)} 
              {
                (SQ <'\n'> <'\t\twrite_script "$TRASH_DIRECTORY/askpass" <<-\\EOF &&\n'> 
                  <'\t\techo >>"$TRASH_DIRECTORY/askpass-query" "askpass: $*" &&\n'> <'\t\tcase "$*" in\n'> <'\t\t*Username*)\n'> <'\t\t\twhat=user\n'> <'\t\t\t;;\n'> <'\t\t*Password*)\n'> 
                  <'\t\t\twhat=pass\n'> <'\t\t\t;;\n'> <'\t\tesac &&\n'> <'\t\tcat "$TRASH_DIRECTORY/askpass-$what"\n'> <'\t\tEOF\n'> 
                  <'\t\tGIT_ASKPASS="$TRASH_DIRECTORY/askpass" &&\n'> <'\t\texport GIT_ASKPASS &&\n'> <'\t\texport TRASH_DIRECTORY\n'> <'\t'>
                )
              }
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: set_askpass
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp]
              children: [
                (command.Simple
                  words: []
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_DollarName TRASH_DIRECTORY) <'/askpass-query'>)}
                    )
                  ]
                  more_env: []
                  do_fork: F
                )
                (command.Simple
                  words: [{<echo>} {(DQ ($ Id.VSub_Number 1))}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_DollarName TRASH_DIRECTORY) <'/askpass-user'>)}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
                (command.Simple
                  words: [{<echo>} {(DQ ($ Id.VSub_Number 2))}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_DollarName TRASH_DIRECTORY) <'/askpass-pass'>)}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
              ]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: expect_askpass
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dest='> name:dest)
                  op: assign_op.Equal
                  rhs: 
                    {($ Id.VSub_DollarName HTTPD_DEST) 
                      (braced_var_sub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Number 3>
                        var_name: 3
                        suffix_op: 
                          (suffix_op.Unary
                            op: <Id.VTest_Plus _>
                            arg_word: {<Id.Lit_Slash '/'> ($ Id.VSub_Number 3)}
                          )
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                  spids: [1229]
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_Number 1))}
                      arms: [
                        (case_arm
                          pat_list: [{<none>}]
                          action: []
                          spids: [1252 1253 1256 -1]
                        )
                        (case_arm
                          pat_list: [{<pass>}]
                          action: [
                            (C {<echo>} 
                              {
                                (DQ <'askpass: Password for \'http://'> ($ Id.VSub_Number 2) <'@'> 
                                  ($ Id.VSub_DollarName dest) <'\': '>
                                )
                              }
                            )
                          ]
                          spids: [1259 1260 1274 -1]
                        )
                        (case_arm
                          pat_list: [{<both>}]
                          action: [
                            (C {<echo>} 
                              {
                                (DQ <'askpass: Username for \'http://'> ($ Id.VSub_DollarName dest) 
                                  <'\': '>
                                )
                              }
                            )
                            (C {<echo>} 
                              {
                                (DQ <'askpass: Password for \'http://'> ($ Id.VSub_Number 2) <'@'> 
                                  ($ Id.VSub_DollarName dest) <'\': '>
                                )
                              }
                            )
                          ]
                          spids: [1277 1278 1301 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [(C {<false>})]
                          spids: [1304 1305 1311 -1]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_DollarName TRASH_DIRECTORY) <'/askpass-expect'>)}
                    )
                  ]
                  right: <Id.Lit_RBrace '}'>
                )
                (C {<test_cmp>} {(DQ ($ Id.VSub_DollarName TRASH_DIRECTORY) <'/askpass-expect'>)} 
                  {(DQ ($ Id.VSub_DollarName TRASH_DIRECTORY) <'/askpass-query'>)}
                )
              ]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
  ]
)