(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:'fetching via git:// using core.gitproxy' span_id:6))}
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup remote repo' span_id:17))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:21) 
          (Token id:Id.Lit_Chars val:'\tgit init remote &&\n' span_id:22) (Token id:Id.Lit_Chars val:'\t(cd remote &&\n' span_id:23) 
          (Token id:Id.Lit_Chars val:'\t echo content >file &&\n' span_id:24) (Token id:Id.Lit_Chars val:'\t git add file &&\n' span_id:25) 
          (Token id:Id.Lit_Chars val:'\t git commit -m one\n' span_id:26) (Token id:Id.Lit_Chars val:'\t)\n' span_id:27)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup proxy script' span_id:34))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:38) 
          (Token
            id: Id.Lit_Chars
            val: '\twrite_script proxy-get-cmd "$PERL_PATH" <<-\\EOF &&\n'
            span_id: 39
          ) (Token id:Id.Lit_Chars val:'\tread(STDIN, $buf, 4);\n' span_id:40) 
          (Token id:Id.Lit_Chars val:'\tmy $n = hex($buf) - 4;\n' span_id:41) (Token id:Id.Lit_Chars val:'\tread(STDIN, $buf, $n);\n' span_id:42) 
          (Token
            id: Id.Lit_Chars
            val: '\tmy ($cmd, $other) = split /\\0/, $buf;\n'
            span_id: 43
          ) (Token id:Id.Lit_Chars val:'\t# drop absolute-path on repo name\n' span_id:44) 
          (Token id:Id.Lit_Chars val:'\t$cmd =~ s{ /}{ };\n' span_id:45) (Token id:Id.Lit_Chars val:'\tprint $cmd;\n' span_id:46) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:47) (Token id:Id.Lit_Chars val:'\n' span_id:48) 
          (Token id:Id.Lit_Chars val:'\twrite_script proxy <<-\\EOF\n' span_id:49) (Token id:Id.Lit_Chars val:'\techo >&2 "proxying for $*"\n' span_id:50) 
          (Token id:Id.Lit_Chars val:'\tcmd=$(./proxy-get-cmd)\n' span_id:51) (Token id:Id.Lit_Chars val:'\techo >&2 "Running $cmd"\n' span_id:52) 
          (Token id:Id.Lit_Chars val:'\texec $cmd\n' span_id:53) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:54)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup local repo' span_id:61))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:65) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit remote add fake git://example.com/remote &&\n'
            span_id: 66
          ) (Token id:Id.Lit_Chars val:'\tgit config core.gitproxy ./proxy\n' span_id:67)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetch through proxy works' span_id:74))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:78) 
          (Token id:Id.Lit_Chars val:'\tgit fetch fake &&\n' span_id:79) (Token id:Id.Lit_Chars val:'\techo one >expect &&\n' span_id:80) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit log -1 --format=%s FETCH_HEAD >actual &&\n'
            span_id: 81
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:82)
        )
      }
    )
    (C {(test_done)})
  ]
)