(CommandList
  children: [
    (FuncDef
      name: test_proto
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:desc)
                  op: Equal
                  rhs: {($ VSub_Number "$1")}
                  spids: [24]
                )
              ]
              spids: [24]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:proto)
                  op: Equal
                  rhs: {($ VSub_Number "$2")}
                  spids: [28]
                )
              ]
              spids: [28]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:url)
                  op: Equal
                  rhs: {($ VSub_Number "$3")}
                  spids: [32]
                )
              ]
              spids: [32]
            )
            (C {(test_expect_success)} {(DQ ("clone ") ($ VSub_Number "$1") (" (enabled)"))} 
              {
                (SQ <"\n"> <"\t\trm -rf tmp.git &&\n"> <"\t\t(\n"> 
                  <"\t\t\tGIT_ALLOW_PROTOCOL=$proto &&\n"> <"\t\t\texport GIT_ALLOW_PROTOCOL &&\n"> <"\t\t\tgit clone --bare \"$url\" tmp.git\n"> <"\t\t)\n"> 
                  <"\t">
                )
              }
            )
            (C {(test_expect_success)} {(DQ ("fetch ") ($ VSub_Number "$1") (" (enabled)"))} 
              {
                (SQ <"\n"> <"\t\t(\n"> <"\t\t\tcd tmp.git &&\n"> 
                  <"\t\t\tGIT_ALLOW_PROTOCOL=$proto &&\n"> <"\t\t\texport GIT_ALLOW_PROTOCOL &&\n"> <"\t\t\tgit fetch\n"> <"\t\t)\n"> <"\t">
                )
              }
            )
            (C {(test_expect_success)} {(DQ ("push ") ($ VSub_Number "$1") (" (enabled)"))} 
              {
                (SQ <"\n"> <"\t\t(\n"> <"\t\t\tcd tmp.git &&\n"> 
                  <"\t\t\tGIT_ALLOW_PROTOCOL=$proto &&\n"> <"\t\t\texport GIT_ALLOW_PROTOCOL &&\n"> <"\t\t\tgit push origin HEAD:pushed\n"> <"\t\t)\n"> <"\t">
                )
              }
            )
            (C {(test_expect_success)} {(DQ ("push ") ($ VSub_Number "$1") (" (disabled)"))} 
              {
                (SQ <"\n"> <"\t\t(\n"> <"\t\t\tcd tmp.git &&\n"> <"\t\t\tGIT_ALLOW_PROTOCOL=none &&\n"> 
                  <"\t\t\texport GIT_ALLOW_PROTOCOL &&\n"> <"\t\t\ttest_must_fail git push origin HEAD:pushed\n"> <"\t\t)\n"> <"\t">
                )
              }
            )
            (C {(test_expect_success)} {(DQ ("fetch ") ($ VSub_Number "$1") (" (disabled)"))} 
              {
                (SQ <"\n"> <"\t\t(\n"> <"\t\t\tcd tmp.git &&\n"> <"\t\t\tGIT_ALLOW_PROTOCOL=none &&\n"> 
                  <"\t\t\texport GIT_ALLOW_PROTOCOL &&\n"> <"\t\t\ttest_must_fail git fetch\n"> <"\t\t)\n"> <"\t">
                )
              }
            )
            (C {(test_expect_success)} {(DQ ("clone ") ($ VSub_Number "$1") (" (disabled)"))} 
              {
                (SQ <"\n"> <"\t\trm -rf tmp.git &&\n"> <"\t\t(\n"> 
                  <"\t\t\tGIT_ALLOW_PROTOCOL=none &&\n"> <"\t\t\texport GIT_ALLOW_PROTOCOL &&\n"> <"\t\t\ttest_must_fail git clone --bare \"$url\" tmp.git\n"> 
                  <"\t\t)\n"> <"\t">
                )
              }
            )
          ]
          spids: [21]
        )
      spids: [16 20]
    )
    (FuncDef
      name: setup_ssh_wrapper
      body: 
        (BraceGroup
          children: [
            (C {(test_expect_success)} {(SQ <"setup ssh wrapper">)} 
              {
                (SQ <"\n"> <"\t\twrite_script ssh-wrapper <<-\\EOF &&\n"> 
                  <"\t\techo >&2 \"ssh: $*\"\n"> <"\t\thost=$1; shift\n"> <"\t\tcd \"$TRASH_DIRECTORY/$host\" &&\n"> <"\t\teval \"$*\"\n"> <"\t\tEOF\n"> 
                  <"\t\tGIT_SSH=\"$PWD/ssh-wrapper\" &&\n"> <"\t\texport GIT_SSH &&\n"> <"\t\texport TRASH_DIRECTORY\n"> <"\t">
                )
              }
            )
          ]
          spids: [175]
        )
      spids: [170 174]
    )
    (FuncDef
      name: setup_ext_wrapper
      body: 
        (BraceGroup
          children: [
            (C {(test_expect_success)} {(SQ <"setup ext wrapper">)} 
              {
                (SQ <"\n"> <"\t\twrite_script fake-remote <<-\\EOF &&\n"> 
                  <"\t\techo >&2 \"fake-remote: $*\"\n"> <"\t\tcd \"$TRASH_DIRECTORY/remote\" &&\n"> <"\t\teval \"$*\"\n"> <"\t\tEOF\n"> 
                  <"\t\tPATH=$TRASH_DIRECTORY:$PATH &&\n"> <"\t\texport TRASH_DIRECTORY\n"> <"\t">
                )
              }
            )
          ]
          spids: [215]
        )
      spids: [210 214]
    )
  ]
)