(command.CommandList children: [ (command.ShFunction name: test_proto body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:desc) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [24] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:proto) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [28] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:url) op: assign_op.Equal rhs: {($ Id.VSub_Number '$3')} spids: [32] ) ] ) (C {(test_expect_success)} {(DQ ('clone ') ($ Id.VSub_Number '$1') (' (enabled)'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:46) (Token id:Id.Lit_Chars val:'\t\trm -rf tmp.git &&\n' span_id:47) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:48) (Token id: Id.Lit_Chars val: '\t\t\tGIT_ALLOW_PROTOCOL=$proto &&\n' span_id: 49 ) (Token id:Id.Lit_Chars val:'\t\t\texport GIT_ALLOW_PROTOCOL &&\n' span_id:50) (Token id: Id.Lit_Chars val: '\t\t\tgit clone --bare "$url" tmp.git\n' span_id: 51 ) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:52) (Token id:Id.Lit_Chars val:'\t' span_id:53) ) } ) (C {(test_expect_success)} {(DQ ('fetch ') ($ Id.VSub_Number '$1') (' (enabled)'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:67) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:68) (Token id:Id.Lit_Chars val:'\t\t\tcd tmp.git &&\n' span_id:69) (Token id: Id.Lit_Chars val: '\t\t\tGIT_ALLOW_PROTOCOL=$proto &&\n' span_id: 70 ) (Token id:Id.Lit_Chars val:'\t\t\texport GIT_ALLOW_PROTOCOL &&\n' span_id:71) (Token id:Id.Lit_Chars val:'\t\t\tgit fetch\n' span_id:72) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:73) (Token id:Id.Lit_Chars val:'\t' span_id:74) ) } ) (C {(test_expect_success)} {(DQ ('push ') ($ Id.VSub_Number '$1') (' (enabled)'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:88) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:89) (Token id:Id.Lit_Chars val:'\t\t\tcd tmp.git &&\n' span_id:90) (Token id: Id.Lit_Chars val: '\t\t\tGIT_ALLOW_PROTOCOL=$proto &&\n' span_id: 91 ) (Token id:Id.Lit_Chars val:'\t\t\texport GIT_ALLOW_PROTOCOL &&\n' span_id:92) (Token id: Id.Lit_Chars val: '\t\t\tgit push origin HEAD:pushed\n' span_id: 93 ) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:94) (Token id:Id.Lit_Chars val:'\t' span_id:95) ) } ) (C {(test_expect_success)} {(DQ ('push ') ($ Id.VSub_Number '$1') (' (disabled)'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:109) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:110) (Token id:Id.Lit_Chars val:'\t\t\tcd tmp.git &&\n' span_id:111) (Token id: Id.Lit_Chars val: '\t\t\tGIT_ALLOW_PROTOCOL=none &&\n' span_id: 112 ) (Token id:Id.Lit_Chars val:'\t\t\texport GIT_ALLOW_PROTOCOL &&\n' span_id:113) (Token id: Id.Lit_Chars val: '\t\t\ttest_must_fail git push origin HEAD:pushed\n' span_id: 114 ) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:115) (Token id:Id.Lit_Chars val:'\t' span_id:116) ) } ) (C {(test_expect_success)} {(DQ ('fetch ') ($ Id.VSub_Number '$1') (' (disabled)'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:130) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:131) (Token id:Id.Lit_Chars val:'\t\t\tcd tmp.git &&\n' span_id:132) (Token id: Id.Lit_Chars val: '\t\t\tGIT_ALLOW_PROTOCOL=none &&\n' span_id: 133 ) (Token id:Id.Lit_Chars val:'\t\t\texport GIT_ALLOW_PROTOCOL &&\n' span_id:134) (Token id: Id.Lit_Chars val: '\t\t\ttest_must_fail git fetch\n' span_id: 135 ) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:136) (Token id:Id.Lit_Chars val:'\t' span_id:137) ) } ) (C {(test_expect_success)} {(DQ ('clone ') ($ Id.VSub_Number '$1') (' (disabled)'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:151) (Token id:Id.Lit_Chars val:'\t\trm -rf tmp.git &&\n' span_id:152) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:153) (Token id: Id.Lit_Chars val: '\t\t\tGIT_ALLOW_PROTOCOL=none &&\n' span_id: 154 ) (Token id:Id.Lit_Chars val:'\t\t\texport GIT_ALLOW_PROTOCOL &&\n' span_id:155) (Token id: Id.Lit_Chars val: '\t\t\ttest_must_fail git clone --bare "$url" tmp.git\n' span_id: 156 ) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:157) (Token id:Id.Lit_Chars val:'\t' span_id:158) ) } ) ] ) ) (command.ShFunction name: setup_ssh_wrapper body: (command.BraceGroup children: [ (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup ssh wrapper' span_id:181))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:185) (Token id: Id.Lit_Chars val: '\t\twrite_script ssh-wrapper <<-\\EOF &&\n' span_id: 186 ) (Token id:Id.Lit_Chars val:'\t\techo >&2 "ssh: $*"\n' span_id:187) (Token id:Id.Lit_Chars val:'\t\thost=$1; shift\n' span_id:188) (Token id:Id.Lit_Chars val:'\t\tcd "$TRASH_DIRECTORY/$host" &&\n' span_id:189) (Token id:Id.Lit_Chars val:'\t\teval "$*"\n' span_id:190) (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:191) (Token id: Id.Lit_Chars val: '\t\tGIT_SSH="$PWD/ssh-wrapper" &&\n' span_id: 192 ) (Token id:Id.Lit_Chars val:'\t\texport GIT_SSH &&\n' span_id:193) (Token id: Id.Lit_Chars val: '\t\texport TRASH_DIRECTORY\n' span_id: 194 ) (Token id:Id.Lit_Chars val:'\t' span_id:195) ) } ) ] ) ) (command.ShFunction name: setup_ext_wrapper body: (command.BraceGroup children: [ (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup ext wrapper' span_id:221))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:225) (Token id: Id.Lit_Chars val: '\t\twrite_script fake-remote <<-\\EOF &&\n' span_id: 226 ) (Token id:Id.Lit_Chars val:'\t\techo >&2 "fake-remote: $*"\n' span_id:227) (Token id: Id.Lit_Chars val: '\t\tcd "$TRASH_DIRECTORY/remote" &&\n' span_id: 228 ) (Token id:Id.Lit_Chars val:'\t\teval "$*"\n' span_id:229) (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:230) (Token id:Id.Lit_Chars val:'\t\tPATH=$TRASH_DIRECTORY:$PATH &&\n' span_id:231) (Token id: Id.Lit_Chars val: '\t\texport TRASH_DIRECTORY\n' span_id: 232 ) (Token id:Id.Lit_Chars val:'\t' span_id:233) ) } ) ] ) ) ] )