(command.CommandList
  children: [
    (command.If
      arms: [
        (if_arm
          cond: [(C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$NO_CURL'))})]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:skip_all)
                  op: assign_op.Equal
                  rhs: {(SQ <'skipping test, git built without http support'>)}
                  spids: [107]
                )
              ]
            )
            (C {<test_done>})
          ]
          spids: [94 104]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (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 name:skip_all)
                  op: assign_op.Equal
                  rhs: {(SQ <'skipping test, git built without expat support'>)}
                  spids: [141]
                )
              ]
            )
            (C {<test_done>})
          ]
          spids: [118 138]
        )
      ]
    )
    (C {<test_tristate>} {<GIT_TEST_HTTPD>})
    (command.If
      arms: [
        (if_arm
          cond: [
            (C {<test>} {(DQ ($ Id.VSub_DollarName '$GIT_TEST_HTTPD'))} {<Id.Lit_Equals '='>} {<false>})
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:skip_all)
                  op: assign_op.Equal
                  rhs: {(DQ <'Network testing disabled (unset GIT_TEST_HTTPD to enable)'>)}
                  spids: [171]
                )
              ]
            )
            (C {<test_done>})
          ]
          spids: [156 168]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (command.Pipeline children:[(C {<test_have_prereq>} {<NOT_ROOT>})] negated:T)
              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]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:HTTPD_PARA)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [207]
        )
      ]
    )
    (command.ForEach
      iter_name: DEFAULT_HTTPD_PATH
      iter_words: [{(SQ <'/usr/sbin/httpd'>)} {(SQ <'/usr/sbin/apache2'>)}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [(C {<test>} {<-x>} {(DQ ($ Id.VSub_DollarName '$DEFAULT_HTTPD_PATH'))})]
                  action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                  spids: [229 240]
                )
              ]
            )
          ]
        )
    )
    (command.ForEach
      iter_name: DEFAULT_HTTPD_MODULE_PATH
      iter_words: [
        {(SQ <'/usr/libexec/apache2'>)}
        {(SQ <'/usr/lib/apache2/modules'>)}
        {(SQ <'/usr/lib64/httpd/modules'>)}
        {(SQ <'/usr/lib/httpd/modules'>)}
      ]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [(C {<test>} {<-d>} {(DQ ($ Id.VSub_DollarName '$DEFAULT_HTTPD_MODULE_PATH'))})]
                  action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                  spids: [282 293]
                )
              ]
            )
          ]
        )
    )
    (command.Case
      to_match: {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<uname>}))}
      arms: [
        (case_arm
          pat_list: [{<Darwin>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:HTTPD_PARA)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$HTTPD_PARA') <' -DDarwin'>)}
                  spids: [317]
                )
              ]
            )
          ]
          spids: [313 314 324 -1]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:LIB_HTTPD_PATH)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name LIB_HTTPD_PATH>
                suffix_op: 
                  (suffix_op.Unary
                    op_id: Id.VTest_Hyphen
                    arg_word: {(DQ ($ Id.VSub_DollarName '$DEFAULT_HTTPD_PATH'))}
                  )
              )
            }
          spids: [329]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:LIB_HTTPD_PORT)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name LIB_HTTPD_PORT>
                suffix_op: 
                  (suffix_op.Unary
                    op_id: Id.VTest_Hyphen
                    arg_word: 
                      {
                        (braced_var_sub
                          token: <Id.VSub_Name this_test>
                          suffix_op: (suffix_op.Unary op_id:Id.VOp1_Pound arg_word:{<t>})
                        )
                      }
                  )
              )
            }
          spids: [338]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:TEST_PATH)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$TEST_DIRECTORY')) <'/lib-httpd'>}
          spids: [350]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:HTTPD_ROOT_PATH)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$PWD')) <'/httpd'>}
          spids: [356]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:HTTPD_DOCUMENT_ROOT_PATH)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$HTTPD_ROOT_PATH') <'/www'>}
          spids: [362]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:GIT_VALGRIND)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$GIT_VALGRIND')}
                  spids: [370]
                )
              ]
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<export>} {<GIT_VALGRIND>})
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:GIT_VALGRIND_OPTIONS)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$GIT_VALGRIND_OPTIONS')}
                  spids: [378]
                )
              ]
            )
          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 name:GIT_TRACE)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$GIT_TRACE')}
                  spids: [386]
                )
              ]
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<export>} {<GIT_TRACE>})
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Pipeline
              children: [(C {<test>} {<-x>} {(DQ ($ Id.VSub_DollarName '$LIB_HTTPD_PATH'))})]
              negated: T
            )
          ]
          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]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name 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
                  )
              )
            }
          spids: [423]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [(C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$HTTPD_VERSION'))})]
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: [(C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$LIB_HTTPD_MODULE_PATH'))})]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Pipeline
                              children: [
                                (C {<test>} {($ Id.VSub_DollarName '$HTTPD_VERSION')} {<-ge>} {<2>})
                              ]
                              negated: T
                            )
                          ]
                          action: [
                            (C {<test_skip_or_die>} {($ Id.VSub_DollarName '$GIT_TEST_HTTPD')} 
                              {(DQ <'at least Apache version 2 is required'>)}
                            )
                          ]
                          spids: [470 483]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Pipeline
                              children: [
                                (C {<test>} {<-d>} 
                                  {(DQ ($ Id.VSub_DollarName '$DEFAULT_HTTPD_MODULE_PATH'))}
                                )
                              ]
                              negated: T
                            )
                          ]
                          action: [
                            (C {<test_skip_or_die>} {($ Id.VSub_DollarName '$GIT_TEST_HTTPD')} 
                              {(DQ <'Apache module directory not found'>)}
                            )
                          ]
                          spids: [500 513]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:LIB_HTTPD_MODULE_PATH)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName '$DEFAULT_HTTPD_MODULE_PATH'))}
                          spids: [531]
                        )
                      ]
                    )
                  ]
                  spids: [456 467]
                )
              ]
            )
          ]
          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') <'\''>)
          }
        )
      ]
    )
    (command.ShFunction
      name: install_script
      body: 
        (BraceGroup
          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'))}
                )
              ]
              do_fork: T
            )
          ]
        )
    )
    (command.ShFunction
      name: prepare_httpd
      body: 
        (BraceGroup
          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: [(C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$LIB_HTTPD_SSL'))})]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:HTTPD_PROTO)
                          op: assign_op.Equal
                          rhs: {<https>}
                          spids: [651]
                        )
                      ]
                    )
                    (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'>)}
                      ]
                      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 name:GIT_SSL_NO_VERIFY)
                          op: assign_op.Equal
                          rhs: {<t>}
                          spids: [702]
                        )
                      ]
                    )
                    (C {<export>} {<GIT_SSL_NO_VERIFY>})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:HTTPD_PARA)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName '$HTTPD_PARA') <' -DSSL'>)}
                          spids: [711]
                        )
                      ]
                    )
                  ]
                  spids: [637 648]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:HTTPD_PROTO)
                      op: assign_op.Equal
                      rhs: {<http>}
                      spids: [721]
                    )
                  ]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:HTTPD_DEST)
                  op: assign_op.Equal
                  rhs: {<127.0.0.1> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName '$LIB_HTTPD_PORT')}
                  spids: [728]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:HTTPD_URL)
                  op: assign_op.Equal
                  rhs: 
                    {($ Id.VSub_DollarName '$HTTPD_PROTO') <Id.Lit_Colon ':'> <'//'> 
                      ($ Id.VSub_DollarName '$HTTPD_DEST')
                    }
                  spids: [734]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:HTTPD_URL_USER)
                  op: assign_op.Equal
                  rhs: 
                    {($ Id.VSub_DollarName '$HTTPD_PROTO') <Id.Lit_Colon ':'> <'//user'> 
                      <Id.Lit_Other '%'> <40host> <Id.Lit_Other '@'> ($ Id.VSub_DollarName '$HTTPD_DEST')
                    }
                  spids: [741]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name 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 ':'> <Id.KW_Pass pass> <Id.Lit_Other '%'> <40host> <Id.Lit_Other '@'> 
                      ($ Id.VSub_DollarName '$HTTPD_DEST')
                    }
                  spids: [751]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (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 name:HTTPD_PARA)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName '$HTTPD_PARA') <' -DDAV'>)}
                          spids: [790]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [(C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$LIB_HTTPD_SVN'))})]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:HTTPD_PARA)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName '$HTTPD_PARA') <' -DSVN'>)}
                                  spids: [812]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:LIB_HTTPD_SVNPATH)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName '$rawsvnrepo'))}
                                  spids: [819]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:svnrepo)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ <'http://127.0.0.1:'> 
                                        ($ Id.VSub_DollarName '$LIB_HTTPD_PORT') <'/'>
                                      )
                                    }
                                  spids: [825]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:svnrepo)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName '$svnrepo') 
                                        ($ Id.VSub_DollarName '$LIB_HTTPD_SVN')
                                      )
                                    }
                                  spids: [833]
                                )
                              ]
                            )
                            (C {<export>} {<LIB_HTTPD_SVN>} {<LIB_HTTPD_SVNPATH>})
                          ]
                          spids: [798 809]
                        )
                      ]
                    )
                  ]
                  spids: [766 787]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: start_httpd
      body: 
        (BraceGroup
          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>})
              ]
              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>})
              ]
              do_fork: T
            )
            (command.If
              arms: [
                (if_arm
                  cond: [(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'>}
                        )
                      ]
                      do_fork: T
                    )
                    (C {<test_skip_or_die>} {($ Id.VSub_DollarName '$GIT_TEST_HTTPD')} 
                      {(DQ <'web server setup failed'>)}
                    )
                  ]
                  spids: [925 936]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: stop_httpd
      body: 
        (BraceGroup
          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>}
            )
          ]
        )
    )
    (command.ShFunction
      name: test_http_push_nonff
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:REMOTE_REPO)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [1029]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:LOCAL_REPO)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$2')}
                  spids: [1033]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:BRANCH)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$3')}
                  spids: [1037]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:EXPECT_CAS_RESULT)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Number 4>
                        suffix_op: (suffix_op.Unary op_id:Id.VTest_Hyphen arg_word:{<failure>})
                      )
                    }
                  spids: [1041]
                )
              ]
            )
            (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 '\\\''>) 
                (SQ <'\n'> <'\t\t\t(cd "$REMOTE_REPO" && git update-ref HEAD "$HEAD")\n'> <'\t\t'>) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''>) 
                (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'>
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: setup_askpass_helper
      body: 
        (BraceGroup
          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'>
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: set_askpass
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp]
              children: [
                (command.Simple
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_DollarName '$TRASH_DIRECTORY') <'/askpass-query'>)}
                    )
                  ]
                  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'>)}
                    )
                  ]
                  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'>)}
                    )
                  ]
                  do_fork: T
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: expect_askpass
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:dest)
                  op: assign_op.Equal
                  rhs: 
                    {($ Id.VSub_DollarName '$HTTPD_DEST') 
                      (braced_var_sub
                        token: <Id.VSub_Number 3>
                        suffix_op: 
                          (suffix_op.Unary
                            op_id: Id.VTest_Plus
                            arg_word: {<Id.Lit_Slash '/'> ($ Id.VSub_Number '$3')}
                          )
                      )
                    }
                  spids: [1229]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (BraceGroup
                  children: [
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_Number '$1'))}
                      arms: [
                        (case_arm
                          pat_list: [{<none>}]
                          spids: [1252 1253 1256 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.KW_Pass 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: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_DollarName '$TRASH_DIRECTORY') <'/askpass-expect'>)}
                    )
                  ]
                )
                (C {<test_cmp>} {(DQ ($ Id.VSub_DollarName '$TRASH_DIRECTORY') <'/askpass-expect'>)} 
                  {(DQ ($ Id.VSub_DollarName '$TRASH_DIRECTORY') <'/askpass-query'>)}
                )
              ]
            )
          ]
        )
    )
  ]
)