(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: 'Test remote-helper import and export commands'
                  span_id: 15
                )
              )
            }
          spids: [13]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(.)} {(DQ ($ Id.VSub_DollarName '$TEST_DIRECTORY')) (/lib-gpg.sh)})
    (command.ShFunction
      name: compare_refs
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp]
              children: [
                (command.Simple
                  words: [
                    {(git)}
                    {(--git-dir) (Id.Lit_Equals '=') (DQ ($ Id.VSub_Number '$1') (/.git))}
                    {(rev-parse)}
                    {(--verify)}
                    {($ Id.VSub_Number '$2')}
                  ]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:53)
                      fd: -1
                      arg_word: {(expect)}
                    )
                  ]
                )
                (command.Simple
                  words: [
                    {(git)}
                    {(--git-dir) (Id.Lit_Equals '=') (DQ ($ Id.VSub_Number '$3') (/.git))}
                    {(rev-parse)}
                    {(--verify)}
                    {($ Id.VSub_Number '$4')}
                  ]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:74)
                      fd: -1
                      arg_word: {(actual)}
                    )
                  ]
                )
                (C {(test_cmp)} {(expect)} {(actual)})
              ]
            )
          ]
        )
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup repository' span_id:92))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:96) 
          (Token id:Id.Lit_Chars val:'\tgit init server &&\n' span_id:97) (Token id:Id.Lit_Chars val:'\t(cd server &&\n' span_id:98) 
          (Token id:Id.Lit_Chars val:'\t echo content >file &&\n' span_id:99) (Token id:Id.Lit_Chars val:'\t git add file &&\n' span_id:100) 
          (Token id:Id.Lit_Chars val:'\t git commit -m one)\n' span_id:101)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'cloning from local repo' span_id:108))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:112) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit clone "testgit::${PWD}/server" local &&\n'
            span_id: 113
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp server/file local/file\n' span_id:114)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'create new commit on remote' span_id:121))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:125) 
          (Token id:Id.Lit_Chars val:'\t(cd server &&\n' span_id:126) (Token id:Id.Lit_Chars val:'\t echo content >>file &&\n' span_id:127) 
          (Token id:Id.Lit_Chars val:'\t git commit -a -m two)\n' span_id:128)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pulling from local repo' span_id:135))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:139) 
          (Token id:Id.Lit_Chars val:'\t(cd local && git pull) &&\n' span_id:140) (Token id:Id.Lit_Chars val:'\ttest_cmp server/file local/file\n' span_id:141)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pushing to local repo' span_id:148))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:152) 
          (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:153) (Token id:Id.Lit_Chars val:'\techo content >>file &&\n' span_id:154) 
          (Token id:Id.Lit_Chars val:'\tgit commit -a -m three &&\n' span_id:155) (Token id:Id.Lit_Chars val:'\tgit push) &&\n' span_id:156) 
          (Token id:Id.Lit_Chars val:'\tcompare_refs local HEAD server HEAD\n' span_id:157)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetch new branch' span_id:164))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:168) 
          (Token id:Id.Lit_Chars val:'\t(cd server &&\n' span_id:169) (Token id:Id.Lit_Chars val:'\t git reset --hard &&\n' span_id:170) 
          (Token id:Id.Lit_Chars val:'\t git checkout -b new &&\n' span_id:171) (Token id:Id.Lit_Chars val:'\t echo content >>file &&\n' span_id:172) 
          (Token id:Id.Lit_Chars val:'\t git commit -a -m five\n' span_id:173) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:174) 
          (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:175) (Token id:Id.Lit_Chars val:'\t git fetch origin new\n' span_id:176) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:177) (Token id:Id.Lit_Chars val:'\tcompare_refs server HEAD local FETCH_HEAD\n' span_id:178)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetch multiple branches' span_id:185))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:189) 
          (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:190) (Token id:Id.Lit_Chars val:'\t git fetch\n' span_id:191) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:192) 
          (Token
            id: Id.Lit_Chars
            val: '\tcompare_refs server master local refs/remotes/origin/master &&\n'
            span_id: 193
          ) (Token id:Id.Lit_Chars val:'\tcompare_refs server new local refs/remotes/origin/new\n' span_id:194)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'push when remote has extra refs' span_id:201))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:205) 
          (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:206) (Token id:Id.Lit_Chars val:'\t git reset --hard origin/master &&\n' span_id:207) 
          (Token id:Id.Lit_Chars val:'\t echo content >>file &&\n' span_id:208) (Token id:Id.Lit_Chars val:'\t git commit -a -m six &&\n' span_id:209) 
          (Token id:Id.Lit_Chars val:'\t git push\n' span_id:210) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:211) 
          (Token
            id: Id.Lit_Chars
            val: '\tcompare_refs local master server master\n'
            span_id: 212
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'push new branch by name' span_id:219))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:223) 
          (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:224) (Token id:Id.Lit_Chars val:'\t git checkout -b new-name  &&\n' span_id:225) 
          (Token id:Id.Lit_Chars val:'\t echo content >>file &&\n' span_id:226) (Token id:Id.Lit_Chars val:'\t git commit -a -m seven &&\n' span_id:227) 
          (Token id:Id.Lit_Chars val:'\t git push origin new-name\n' span_id:228) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:229) 
          (Token
            id: Id.Lit_Chars
            val: '\tcompare_refs local HEAD server refs/heads/new-name\n'
            span_id: 230
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'push new branch with old:new refspec' span_id:237))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:241) 
          (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:242) (Token id:Id.Lit_Chars val:'\t git push origin new-name:new-refspec\n' span_id:243) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:244) (Token id:Id.Lit_Chars val:'\tcompare_refs local HEAD server refs/heads/new-refspec\n' span_id:245)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'push new branch with HEAD:new refspec' span_id:252))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:256) 
          (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:257) (Token id:Id.Lit_Chars val:'\t git checkout new-name\n' span_id:258) 
          (Token id:Id.Lit_Chars val:'\t git push origin HEAD:new-refspec-2\n' span_id:259) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:260) 
          (Token
            id: Id.Lit_Chars
            val: '\tcompare_refs local HEAD server refs/heads/new-refspec-2\n'
            span_id: 261
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'push delete branch' span_id:268))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:272) 
          (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:273) (Token id:Id.Lit_Chars val:'\t git push origin :new-name\n' span_id:274) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:275) (Token id:Id.Lit_Chars val:'\ttest_must_fail git --git-dir="server/.git" \\\n' span_id:276) 
          (Token
            id: Id.Lit_Chars
            val: '\t rev-parse --verify refs/heads/new-name\n'
            span_id: 277
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'forced push' span_id:284))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:288) 
          (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:289) (Token id:Id.Lit_Chars val:'\tgit checkout -b force-test &&\n' span_id:290) 
          (Token id:Id.Lit_Chars val:'\techo content >> file &&\n' span_id:291) (Token id:Id.Lit_Chars val:'\tgit commit -a -m eight &&\n' span_id:292) 
          (Token id:Id.Lit_Chars val:'\tgit push origin force-test &&\n' span_id:293) (Token id:Id.Lit_Chars val:'\techo content >> file &&\n' span_id:294) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit commit -a --amend -m eight-modified &&\n'
            span_id: 295
          ) (Token id:Id.Lit_Chars val:'\tgit push --force origin force-test\n' span_id:296) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:297) 
          (Token
            id: Id.Lit_Chars
            val: '\tcompare_refs local refs/heads/force-test server refs/heads/force-test\n'
            span_id: 298
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'cloning without refspec' span_id:305))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:309) 
          (Token id:Id.Lit_Chars val:'\tGIT_REMOTE_TESTGIT_REFSPEC="" \\\n' span_id:310) (Token id:Id.Lit_Chars val:'\tgit clone "testgit::${PWD}/server" local2 2>error &&\n' span_id:311) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "This remote helper should implement refspec capability" error &&\n'
            span_id: 312
          ) (Token id:Id.Lit_Chars val:'\tcompare_refs local2 HEAD server HEAD\n' span_id:313)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pulling without refspecs' span_id:320))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:324) 
          (Token id:Id.Lit_Chars val:'\t(cd local2 &&\n' span_id:325) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:326) 
          (Token
            id: Id.Lit_Chars
            val: '\tGIT_REMOTE_TESTGIT_REFSPEC="" git pull 2>../error) &&\n'
            span_id: 327
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "This remote helper should implement refspec capability" error &&\n'
            span_id: 328
          ) (Token id:Id.Lit_Chars val:'\tcompare_refs local2 HEAD server HEAD\n' span_id:329)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pushing without refspecs' span_id:336))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:340) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_when_finished "(cd local2 && git reset --hard origin)" &&\n'
            span_id: 341
          ) (Token id:Id.Lit_Chars val:'\t(cd local2 &&\n' span_id:342) 
          (Token id:Id.Lit_Chars val:'\techo content >>file &&\n' span_id:343) (Token id:Id.Lit_Chars val:'\tgit commit -a -m ten &&\n' span_id:344) 
          (Token id:Id.Lit_Chars val:'\tGIT_REMOTE_TESTGIT_REFSPEC="" &&\n' span_id:345) (Token id:Id.Lit_Chars val:'\texport GIT_REMOTE_TESTGIT_REFSPEC &&\n' span_id:346) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git push 2>../error) &&\n'
            span_id: 347
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "remote-helper doesn.t support push; refspec needed" error\n'
            span_id: 348
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pulling without marks' span_id:355))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:359) 
          (Token id:Id.Lit_Chars val:'\t(cd local2 &&\n' span_id:360) (Token id:Id.Lit_Chars val:'\tGIT_REMOTE_TESTGIT_NO_MARKS=1 git pull) &&\n' span_id:361) 
          (Token
            id: Id.Lit_Chars
            val: '\tcompare_refs local2 HEAD server HEAD\n'
            span_id: 362
          )
        )
      }
    )
    (C {(test_expect_failure)} {(SQ (Token id:Id.Lit_Chars val:'pushing without marks' span_id:369))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:373) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_when_finished "(cd local2 && git reset --hard origin)" &&\n'
            span_id: 374
          ) (Token id:Id.Lit_Chars val:'\t(cd local2 &&\n' span_id:375) 
          (Token id:Id.Lit_Chars val:'\techo content >>file &&\n' span_id:376) (Token id:Id.Lit_Chars val:'\tgit commit -a -m twelve &&\n' span_id:377) 
          (Token
            id: Id.Lit_Chars
            val: '\tGIT_REMOTE_TESTGIT_NO_MARKS=1 git push) &&\n'
            span_id: 378
          ) (Token id:Id.Lit_Chars val:'\tcompare_refs local2 HEAD server HEAD\n' span_id:379)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'push all with existing object' span_id:386))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:390) 
          (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:391) (Token id:Id.Lit_Chars val:'\tgit branch dup2 master &&\n' span_id:392) 
          (Token id:Id.Lit_Chars val:'\tgit push origin --all\n' span_id:393) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:394) 
          (Token id:Id.Lit_Chars val:'\tcompare_refs local dup2 server dup2\n' span_id:395)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'push ref with existing object' span_id:402))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:406) 
          (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:407) (Token id:Id.Lit_Chars val:'\tgit branch dup master &&\n' span_id:408) 
          (Token id:Id.Lit_Chars val:'\tgit push origin dup\n' span_id:409) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:410) 
          (Token id:Id.Lit_Chars val:'\tcompare_refs local dup server dup\n' span_id:411)
        )
      }
    )
    (C {(test_expect_success)} {(GPG)} {(SQ (Token id:Id.Lit_Chars val:'push signed tag' span_id:420))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:424) 
          (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:425) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:426) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit tag -s -m signed-tag signed-tag &&\n'
            span_id: 427
          ) (Token id:Id.Lit_Chars val:'\tgit push origin signed-tag\n' span_id:428) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:429) 
          (Token
            id: Id.Lit_Chars
            val: '\tcompare_refs local signed-tag^{} server signed-tag^{} &&\n'
            span_id: 430
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail compare_refs local signed-tag server signed-tag\n'
            span_id: 431
          )
        )
      }
    )
    (C {(test_expect_success)} {(GPG)} 
      {(SQ (Token id:Id.Lit_Chars val:'push signed tag with signed-tags capability' span_id:440))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:444) 
          (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:445) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:446) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit tag -s -m signed-tag signed-tag-2 &&\n'
            span_id: 447
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tGIT_REMOTE_TESTGIT_SIGNED_TAGS=1 git push origin signed-tag-2\n'
            span_id: 448
          ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:449) 
          (Token
            id: Id.Lit_Chars
            val: '\tcompare_refs local signed-tag-2 server signed-tag-2\n'
            span_id: 450
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'push update refs' span_id:457))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:461) 
          (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:462) (Token id:Id.Lit_Chars val:'\tgit checkout -b update master &&\n' span_id:463) 
          (Token id:Id.Lit_Chars val:'\techo update >>file &&\n' span_id:464) (Token id:Id.Lit_Chars val:'\tgit commit -a -m update &&\n' span_id:465) 
          (Token id:Id.Lit_Chars val:'\tgit push origin update &&\n' span_id:466) (Token id:Id.Lit_Chars val:'\tgit rev-parse --verify remotes/origin/update >expect &&\n' span_id:467) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit rev-parse --verify testgit/origin/heads/update >actual &&\n'
            span_id: 468
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:469) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:470)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'push update refs disabled by no-private-update' span_id:477))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:481) 
          (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:482) (Token id:Id.Lit_Chars val:'\techo more-update >>file &&\n' span_id:483) 
          (Token id:Id.Lit_Chars val:'\tgit commit -a -m more-update &&\n' span_id:484) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit rev-parse --verify testgit/origin/heads/update >expect &&\n'
            span_id: 485
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tGIT_REMOTE_TESTGIT_NO_PRIVATE_UPDATE=t git push origin update &&\n'
            span_id: 486
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit rev-parse --verify testgit/origin/heads/update >actual &&\n'
            span_id: 487
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:488) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:489)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'push update refs failure' span_id:496))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:500) 
          (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:501) (Token id:Id.Lit_Chars val:'\tgit checkout update &&\n' span_id:502) 
          (Token id:Id.Lit_Chars val:'\techo "update fail" >>file &&\n' span_id:503) (Token id:Id.Lit_Chars val:'\tgit commit -a -m "update fail" &&\n' span_id:504) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit rev-parse --verify testgit/origin/heads/update >expect &&\n'
            span_id: 505
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_expect_code 1 env GIT_REMOTE_TESTGIT_FAILURE="non-fast forward" \\\n'
            span_id: 506
          ) (Token id:Id.Lit_Chars val:'\t\tgit push origin update &&\n' span_id:507) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit rev-parse --verify testgit/origin/heads/update >actual &&\n'
            span_id: 508
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:509) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:510)
        )
      }
    )
    (command.ShFunction
      name: clean_mark
      body: 
        (command.BraceGroup
          children: [
            (command.Pipeline
              children: [
                (C {(cut)} {(-f)} {(2)} {(-d)} {(SQ (Token id:Id.Lit_Chars val:' ' span_id:531))} 
                  {(DQ ($ Id.VSub_Number '$1'))}
                )
                (C {(git)} {(cat-file)} {(--batch-check)})
                (C {(grep)} {(commit)})
                (command.Simple
                  words: [{(sort)}]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:559)
                      fd: -1
                      arg_word: 
                        {
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:560)
                            command_list: 
                              (command.CommandList
                                children: [(C {(basename)} {(DQ ($ Id.VSub_Number '$1'))})]
                              )
                          )
                        }
                    )
                  ]
                )
              ]
              negated: F
            )
          ]
        )
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'proper failure checks for fetching' span_id:574))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:578) 
          (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:579) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail env GIT_REMOTE_TESTGIT_FAILURE=1 git fetch 2>error &&\n'
            span_id: 580
          ) (Token id:Id.Lit_Chars val:'\tcat error &&\n' span_id:581) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep -q "Error while running fast-import" error\n'
            span_id: 582
          ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:583)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'proper failure checks for pushing' span_id:590))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:594) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_when_finished "rm -rf local/git.marks local/testgit.marks" &&\n'
            span_id: 595
          ) (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:596) 
          (Token id:Id.Lit_Chars val:'\tgit checkout -b crash master &&\n' span_id:597) (Token id:Id.Lit_Chars val:'\techo crash >>file &&\n' span_id:598) 
          (Token id:Id.Lit_Chars val:'\tgit commit -a -m crash &&\n' span_id:599) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail env GIT_REMOTE_TESTGIT_FAILURE=1 git push --all &&\n'
            span_id: 600
          ) (Token id:Id.Lit_Chars val:'\tclean_mark ".git/testgit/origin/git.marks" &&\n' span_id:601) 
          (Token
            id: Id.Lit_Chars
            val: '\tclean_mark ".git/testgit/origin/testgit.marks" &&\n'
            span_id: 602
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp git.marks testgit.marks\n' span_id:603) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:604)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'push messages' span_id:611))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:615) 
          (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:616) (Token id:Id.Lit_Chars val:'\tgit checkout -b new_branch master &&\n' span_id:617) 
          (Token id:Id.Lit_Chars val:'\techo new >>file &&\n' span_id:618) (Token id:Id.Lit_Chars val:'\tgit commit -a -m new &&\n' span_id:619) 
          (Token id:Id.Lit_Chars val:'\tgit push origin new_branch &&\n' span_id:620) (Token id:Id.Lit_Chars val:'\tgit fetch origin &&\n' span_id:621) 
          (Token id:Id.Lit_Chars val:'\techo new >>file &&\n' span_id:622) (Token id:Id.Lit_Chars val:'\tgit commit -a -m new &&\n' span_id:623) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit push origin new_branch 2> msg &&\n'
            span_id: 624
          ) (Token id:Id.Lit_Chars val:'\t! grep "\\[new branch\\]" msg\n' span_id:625) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:626)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetch HEAD' span_id:633))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:637) 
          (Token id:Id.Lit_Chars val:'\t(cd server &&\n' span_id:638) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:639) 
          (Token id:Id.Lit_Chars val:'\techo more >>file &&\n' span_id:640) (Token id:Id.Lit_Chars val:'\tgit commit -a -m more\n' span_id:641) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:642) (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:643) 
          (Token id:Id.Lit_Chars val:'\tgit fetch origin HEAD\n' span_id:644) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:645) 
          (Token
            id: Id.Lit_Chars
            val: '\tcompare_refs server HEAD local FETCH_HEAD\n'
            span_id: 646
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetch url' span_id:653))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:657) 
          (Token id:Id.Lit_Chars val:'\t(cd server &&\n' span_id:658) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:659) 
          (Token id:Id.Lit_Chars val:'\techo more >>file &&\n' span_id:660) (Token id:Id.Lit_Chars val:'\tgit commit -a -m more\n' span_id:661) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:662) (Token id:Id.Lit_Chars val:'\t(cd local &&\n' span_id:663) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit fetch "testgit::${PWD}/../server"\n'
            span_id: 664
          ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:665) 
          (Token
            id: Id.Lit_Chars
            val: '\tcompare_refs server HEAD local FETCH_HEAD\n'
            span_id: 666
          )
        )
      }
    )
    (C {(test_done)})
  ]
)