(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: 
            {
              (SQ 
                (Token
                  id: Id.Lit_Chars
                  val: 'detect some push errors early (before contacting remote)'
                  span_id: 6
                )
              )
            }
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup commits' span_id:17))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:21) 
          (Token id:Id.Lit_Chars val:'\ttest_commit one\n' span_id:22)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup remote' span_id:29))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:33) 
          (Token id:Id.Lit_Chars val:'\tgit init --bare remote.git &&\n' span_id:34) (Token id:Id.Lit_Chars val:'\tgit remote add origin remote.git\n' span_id:35)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup fake receive-pack' span_id:42))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:46) 
          (Token id:Id.Lit_Chars val:'\tFAKE_RP_ROOT=$(pwd) &&\n' span_id:47) (Token id:Id.Lit_Chars val:'\texport FAKE_RP_ROOT &&\n' span_id:48) 
          (Token id:Id.Lit_Chars val:'\twrite_script fake-rp <<-\\EOF &&\n' span_id:49) (Token id:Id.Lit_Chars val:'\techo yes >"$FAKE_RP_ROOT"/rp-ran\n' span_id:50) 
          (Token id:Id.Lit_Chars val:'\texit 1\n' span_id:51) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:52) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config remote.origin.receivepack "\\"\\$FAKE_RP_ROOT/fake-rp\\""\n'
            span_id: 53
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'detect missing branches early' span_id:60))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:64) 
          (Token id:Id.Lit_Chars val:'\techo no >rp-ran &&\n' span_id:65) (Token id:Id.Lit_Chars val:'\techo no >expect &&\n' span_id:66) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git push origin missing &&\n'
            span_id: 67
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect rp-ran\n' span_id:68)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'detect missing sha1 expressions early' span_id:75))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:79) 
          (Token id:Id.Lit_Chars val:'\techo no >rp-ran &&\n' span_id:80) (Token id:Id.Lit_Chars val:'\techo no >expect &&\n' span_id:81) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git push origin master~2:master &&\n'
            span_id: 82
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect rp-ran\n' span_id:83)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'detect ambiguous refs early' span_id:90))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:94) 
          (Token id:Id.Lit_Chars val:'\tgit branch foo &&\n' span_id:95) (Token id:Id.Lit_Chars val:'\tgit tag foo &&\n' span_id:96) 
          (Token id:Id.Lit_Chars val:'\techo no >rp-ran &&\n' span_id:97) (Token id:Id.Lit_Chars val:'\techo no >expect &&\n' span_id:98) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git push origin foo &&\n'
            span_id: 99
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect rp-ran\n' span_id:100)
        )
      }
    )
    (C {(test_done)})
  ]
)