(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 smart fetching over http via http-backend' span_id: 6 ) ) } spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(.)} {(DQ ($ Id.VSub_DollarName '$TEST_DIRECTORY')) (/lib-httpd.sh)}) (C {(start_httpd)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup repository' span_id:26))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:30) (Token id:Id.Lit_Chars val:'\tgit config push.default matching &&\n' span_id:31) (Token id:Id.Lit_Chars val:'\techo content >file &&\n' span_id:32) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:33) (Token id:Id.Lit_Chars val:'\tgit commit -m one\n' span_id:34) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'create http-accessible bare repository' span_id:41))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:45) (Token id: Id.Lit_Chars val: '\tmkdir "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&\n' span_id: 46 ) (Token id:Id.Lit_Chars val:'\t(cd "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&\n' span_id:47) (Token id:Id.Lit_Chars val:'\t git --bare init\n' span_id:48) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:49) (Token id: Id.Lit_Chars val: '\tgit remote add public "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&\n' span_id: 50 ) (Token id:Id.Lit_Chars val:'\tgit push public master:master\n' span_id:51) ) } ) (C {(setup_askpass_helper)}) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:60) fd:-1 arg_word:{(exp)}) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:63) fd: -1 here_begin: {(EOF)} here_end_span_id: 84 stdin_parts: [ ('> GET /smart/repo.git/info/refs?service=git-upload-pack HTTP/1.1\n') ('> Accept: */*\n') ('> Accept-Encoding: gzip\n') ('> Pragma: no-cache\n') ('< HTTP/1.1 200 OK\n') ('< Pragma: no-cache\n') ('< Cache-Control: no-cache, max-age=0, must-revalidate\n') ('< Content-Type: application/x-git-upload-pack-advertisement\n') ('> POST /smart/repo.git/git-upload-pack HTTP/1.1\n') ('> Accept-Encoding: gzip\n') ('> Content-Type: application/x-git-upload-pack-request\n') ('> Accept: application/x-git-upload-pack-result\n') ('> Content-Length: xxx\n') ('< HTTP/1.1 200 OK\n') ('< Pragma: no-cache\n') ('< Cache-Control: no-cache, max-age=0, must-revalidate\n') ('< Content-Type: application/x-git-upload-pack-result\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'clone http repository' span_id:88))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:92) (Token id: Id.Lit_Chars val: '\tGIT_TRACE_CURL=true git clone --quiet $HTTPD_URL/smart/repo.git clone 2>err &&\n' span_id: 93 ) (Token id:Id.Lit_Chars val:'\ttest_cmp file clone/file &&\n' span_id:94) (Token id:Id.Lit_Chars val:'\ttr ' span_id:95) ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:"\\'" span_id:97)) (SQ (Token id:Id.Lit_Chars val:'\\015' span_id:99)) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:"\\'" span_id:101)) (SQ (Token id:Id.Lit_Chars val:' Q <err |\n' span_id:103) (Token id:Id.Lit_Chars val:'\tsed -e "\n' span_id:104) (Token id:Id.Lit_Chars val:'\t\ts/Q\\$//\n' span_id:105) (Token id:Id.Lit_Chars val:'\t\t/^[*] /d\n' span_id:106) (Token id:Id.Lit_Chars val:'\t\t/^== Info:/d\n' span_id:107) (Token id:Id.Lit_Chars val:'\t\t/^=> Send header, /d\n' span_id:108) (Token id:Id.Lit_Chars val:'\t\t/^=> Send header:$/d\n' span_id:109) (Token id:Id.Lit_Chars val:'\t\t/^<= Recv header, /d\n' span_id:110) (Token id:Id.Lit_Chars val:'\t\t/^<= Recv header:$/d\n' span_id:111) (Token id:Id.Lit_Chars val:'\t\ts/=> Send header: //\n' span_id:112) (Token id:Id.Lit_Chars val:'\t\ts/= Recv header://\n' span_id:113) (Token id:Id.Lit_Chars val:'\t\t/^<= Recv data/d\n' span_id:114) (Token id:Id.Lit_Chars val:'\t\t/^=> Send data/d\n' span_id:115) (Token id:Id.Lit_Chars val:'\t\t/^$/d\n' span_id:116) (Token id:Id.Lit_Chars val:'\t\t/^< $/d\n' span_id:117) (Token id:Id.Lit_Chars val:'\n' span_id:118) (Token id:Id.Lit_Chars val:'\t\t/^[^><]/{\n' span_id:119) (Token id:Id.Lit_Chars val:'\t\t\ts/^/> /\n' span_id:120) (Token id:Id.Lit_Chars val:'\t\t}\n' span_id:121) (Token id:Id.Lit_Chars val:'\n' span_id:122) (Token id:Id.Lit_Chars val:'\t\t/^> User-Agent: /d\n' span_id:123) (Token id:Id.Lit_Chars val:'\t\t/^> Host: /d\n' span_id:124) (Token id:Id.Lit_Chars val:'\t\t/^> POST /,$ {\n' span_id:125) (Token id:Id.Lit_Chars val:'\t\t\t/^> Accept: [*]\\\\/[*]/d\n' span_id:126) (Token id:Id.Lit_Chars val:'\t\t}\n' span_id:127) (Token id:Id.Lit_Chars val:'\t\ts/^> Content-Length: .*/> Content-Length: xxx/\n' span_id:128) (Token id:Id.Lit_Chars val:'\t\t/^> 00..want /d\n' span_id:129) (Token id:Id.Lit_Chars val:'\t\t/^> 00.*done/d\n' span_id:130) (Token id:Id.Lit_Chars val:'\n' span_id:131) (Token id:Id.Lit_Chars val:'\t\t/^< Server: /d\n' span_id:132) (Token id:Id.Lit_Chars val:'\t\t/^< Expires: /d\n' span_id:133) (Token id:Id.Lit_Chars val:'\t\t/^< Date: /d\n' span_id:134) (Token id:Id.Lit_Chars val:'\t\t/^< Content-Length: /d\n' span_id:135) (Token id:Id.Lit_Chars val:'\t\t/^< Transfer-Encoding: /d\n' span_id:136) (Token id:Id.Lit_Chars val:'\t" >act &&\n' span_id:137) (Token id:Id.Lit_Chars val:'\ttest_cmp exp act\n' span_id:138) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetch changes via http' span_id:145))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:149) (Token id:Id.Lit_Chars val:'\techo content >>file &&\n' span_id:150) (Token id:Id.Lit_Chars val:'\tgit commit -a -m two &&\n' span_id:151) (Token id:Id.Lit_Chars val:'\tgit push public &&\n' span_id:152) (Token id:Id.Lit_Chars val:'\t(cd clone && git pull) &&\n' span_id:153) (Token id:Id.Lit_Chars val:'\ttest_cmp file clone/file\n' span_id:154) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:160) fd:-1 arg_word:{(exp)}) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:163) fd: -1 here_begin: {(EOF)} here_end_span_id: 171 stdin_parts: [ ('GET /smart/repo.git/info/refs?service=git-upload-pack HTTP/1.1 200\n') ('POST /smart/repo.git/git-upload-pack HTTP/1.1 200\n') ('GET /smart/repo.git/info/refs?service=git-upload-pack HTTP/1.1 200\n') ('POST /smart/repo.git/git-upload-pack HTTP/1.1 200\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'used upload-pack service' span_id:175))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:179) (Token id:Id.Lit_Chars val:'\tsed -e "\n' span_id:180) (Token id:Id.Lit_Chars val:'\t\ts/^.* \\"//\n' span_id:181) (Token id:Id.Lit_Chars val:'\t\ts/\\"//\n' span_id:182) (Token id:Id.Lit_Chars val:'\t\ts/ [1-9][0-9]*\\$//\n' span_id:183) (Token id:Id.Lit_Chars val:'\t\ts/^GET /GET /\n' span_id:184) (Token id:Id.Lit_Chars val:'\t" >act <"$HTTPD_ROOT_PATH"/access.log &&\n' span_id:185) (Token id:Id.Lit_Chars val:'\ttest_cmp exp act\n' span_id:186) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'follow redirects (301)' span_id:193))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:197) (Token id: Id.Lit_Chars val: '\tgit clone $HTTPD_URL/smart-redir-perm/repo.git --quiet repo-p\n' span_id: 198 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'follow redirects (302)' span_id:205))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:209) (Token id: Id.Lit_Chars val: '\tgit clone $HTTPD_URL/smart-redir-temp/repo.git --quiet repo-t\n' span_id: 210 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'redirects re-root further requests' span_id:217))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:221) (Token id: Id.Lit_Chars val: '\tgit clone $HTTPD_URL/smart-redir-limited/repo.git repo-redir-limited\n' span_id: 222 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'clone from password-protected repository' span_id:229))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:233) (Token id:Id.Lit_Chars val:'\techo two >expect &&\n' span_id:234) (Token id:Id.Lit_Chars val:'\tset_askpass user@host pass@host &&\n' span_id:235) (Token id: Id.Lit_Chars val: '\tgit clone --bare "$HTTPD_URL/auth/smart/repo.git" smart-auth &&\n' span_id: 236 ) (Token id:Id.Lit_Chars val:'\texpect_askpass both user@host &&\n' span_id:237) (Token id: Id.Lit_Chars val: '\tgit --git-dir=smart-auth log -1 --format=%s >actual &&\n' span_id: 238 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:239) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'clone from auth-only-for-push repository' span_id:246))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:250) (Token id:Id.Lit_Chars val:'\techo two >expect &&\n' span_id:251) (Token id:Id.Lit_Chars val:'\tset_askpass wrong &&\n' span_id:252) (Token id: Id.Lit_Chars val: '\tgit clone --bare "$HTTPD_URL/auth-push/smart/repo.git" smart-noauth &&\n' span_id: 253 ) (Token id:Id.Lit_Chars val:'\texpect_askpass none &&\n' span_id:254) (Token id: Id.Lit_Chars val: '\tgit --git-dir=smart-noauth log -1 --format=%s >actual &&\n' span_id: 255 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:256) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'clone from auth-only-for-objects repository' span_id:263))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:267) (Token id:Id.Lit_Chars val:'\techo two >expect &&\n' span_id:268) (Token id:Id.Lit_Chars val:'\tset_askpass user@host pass@host &&\n' span_id:269) (Token id: Id.Lit_Chars val: '\tgit clone --bare "$HTTPD_URL/auth-fetch/smart/repo.git" half-auth &&\n' span_id: 270 ) (Token id:Id.Lit_Chars val:'\texpect_askpass both user@host &&\n' span_id:271) (Token id: Id.Lit_Chars val: '\tgit --git-dir=half-auth log -1 --format=%s >actual &&\n' span_id: 272 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:273) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'no-op half-auth fetch does not require a password' span_id: 280 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:284) (Token id:Id.Lit_Chars val:'\tset_askpass wrong &&\n' span_id:285) (Token id:Id.Lit_Chars val:'\tgit --git-dir=half-auth fetch &&\n' span_id:286) (Token id:Id.Lit_Chars val:'\texpect_askpass none\n' span_id:287) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'redirects send auth to new location' span_id:294))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:298) (Token id:Id.Lit_Chars val:'\tset_askpass user@host pass@host &&\n' span_id:299) (Token id:Id.Lit_Chars val:'\tgit -c credential.useHttpPath=true \\\n' span_id:300) (Token id: Id.Lit_Chars val: '\t clone $HTTPD_URL/smart-redir-auth/repo.git repo-redir-auth &&\n' span_id: 301 ) (Token id:Id.Lit_Chars val:'\texpect_askpass both user@host auth/smart/repo.git\n' span_id:302) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'disable dumb http on server' span_id:309))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:313) (Token id: Id.Lit_Chars val: '\tgit --git-dir="$HTTPD_DOCUMENT_ROOT_PATH/repo.git" \\\n' span_id: 314 ) (Token id:Id.Lit_Chars val:'\t\tconfig http.getanyfile false\n' span_id:315) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'GIT_SMART_HTTP can disable smart http' span_id:322))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:326) (Token id:Id.Lit_Chars val:'\t(GIT_SMART_HTTP=0 &&\n' span_id:327) (Token id:Id.Lit_Chars val:'\t export GIT_SMART_HTTP &&\n' span_id:328) (Token id:Id.Lit_Chars val:'\t cd clone &&\n' span_id:329) (Token id:Id.Lit_Chars val:'\t test_must_fail git fetch)\n' span_id:330) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'invalid Content-Type rejected' span_id:337))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:341) (Token id: Id.Lit_Chars val: '\ttest_must_fail git clone $HTTPD_URL/broken_smart/repo.git 2>actual &&\n' span_id: 342 ) (Token id:Id.Lit_Chars val:'\tgrep "not valid:" actual\n' span_id:343) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'create namespaced refs' span_id:350))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:354) (Token id:Id.Lit_Chars val:'\ttest_commit namespaced &&\n' span_id:355) (Token id: Id.Lit_Chars val: '\tgit push public HEAD:refs/namespaces/ns/refs/heads/master &&\n' span_id: 356 ) (Token id:Id.Lit_Chars val:'\tgit --git-dir="$HTTPD_DOCUMENT_ROOT_PATH/repo.git" \\\n' span_id:357) (Token id: Id.Lit_Chars val: '\t\tsymbolic-ref refs/namespaces/ns/HEAD refs/namespaces/ns/refs/heads/master\n' span_id: 358 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'smart clone respects namespace' span_id:365))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:369) (Token id: Id.Lit_Chars val: '\tgit clone "$HTTPD_URL/smart_namespace/repo.git" ns-smart &&\n' span_id: 370 ) (Token id:Id.Lit_Chars val:'\techo namespaced >expect &&\n' span_id:371) (Token id: Id.Lit_Chars val: '\tgit --git-dir=ns-smart/.git log -1 --format=%s >actual &&\n' span_id: 372 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:373) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'dumb clone via http-backend respects namespace' span_id:380))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:384) (Token id: Id.Lit_Chars val: '\tgit --git-dir="$HTTPD_DOCUMENT_ROOT_PATH/repo.git" \\\n' span_id: 385 ) (Token id:Id.Lit_Chars val:'\t\tconfig http.getanyfile true &&\n' span_id:386) (Token id:Id.Lit_Chars val:'\tGIT_SMART_HTTP=0 git clone \\\n' span_id:387) (Token id:Id.Lit_Chars val:'\t\t"$HTTPD_URL/smart_namespace/repo.git" ns-dumb &&\n' span_id:388) (Token id:Id.Lit_Chars val:'\techo namespaced >expect &&\n' span_id:389) (Token id: Id.Lit_Chars val: '\tgit --git-dir=ns-dumb/.git log -1 --format=%s >actual &&\n' span_id: 390 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:391) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:397) fd: -1 arg_word: {(cookies.txt)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:400) fd: -1 here_begin: {(EOF)} here_end_span_id: 405 stdin_parts: [('127.0.0.1\tFALSE\t/smart_cookies/\tFALSE\t0\tothername\tothervalue\n')] ) ] ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:408) fd: -1 arg_word: {(expect_cookies.txt)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:411) fd: -1 here_begin: {(EOF)} here_end_span_id: 418 stdin_parts: [ ('\n') ('127.0.0.1\tFALSE\t/smart_cookies/\tFALSE\t0\tothername\tothervalue\n') ('127.0.0.1\tFALSE\t/smart_cookies/repo.git/info/\tFALSE\t0\tname\tvalue\n') ] ) ] ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'cookies stored in http.cookiefile when http.savecookies set' span_id: 422 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:426) (Token id: Id.Lit_Chars val: '\tgit config http.cookiefile cookies.txt &&\n' span_id: 427 ) (Token id:Id.Lit_Chars val:'\tgit config http.savecookies true &&\n' span_id:428) (Token id: Id.Lit_Chars val: '\tgit ls-remote $HTTPD_URL/smart_cookies/repo.git master &&\n' span_id: 429 ) (Token id:Id.Lit_Chars val:'\ttail -3 cookies.txt >cookies_tail.txt &&\n' span_id:430) (Token id: Id.Lit_Chars val: '\ttest_cmp expect_cookies.txt cookies_tail.txt\n' span_id: 431 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'transfer.hiderefs works over smart-http' span_id:438))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:442) (Token id:Id.Lit_Chars val:'\ttest_commit hidden &&\n' span_id:443) (Token id:Id.Lit_Chars val:'\ttest_commit visible &&\n' span_id:444) (Token id: Id.Lit_Chars val: '\tgit push public HEAD^:refs/heads/a HEAD:refs/heads/b &&\n' span_id: 445 ) (Token id:Id.Lit_Chars val:'\tgit --git-dir="$HTTPD_DOCUMENT_ROOT_PATH/repo.git" \\\n' span_id:446) (Token id: Id.Lit_Chars val: '\t\tconfig transfer.hiderefs refs/heads/a &&\n' span_id: 447 ) (Token id: Id.Lit_Chars val: '\tgit clone --bare "$HTTPD_URL/smart/repo.git" hidden.git &&\n' span_id: 448 ) (Token id: Id.Lit_Chars val: '\ttest_must_fail git -C hidden.git rev-parse --verify a &&\n' span_id: 449 ) (Token id:Id.Lit_Chars val:'\tgit -C hidden.git rev-parse --verify b\n' span_id:450) ) } ) (command.ShFunction name: create_tags body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (C {(rm)} {(-f)} {(marks)}) (command.Pipeline children: [ (command.ForEach iter_name: i iter_words: [ { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:480) command_list: (command.CommandList children: [ (C {(test_seq)} {(DQ ($ Id.VSub_Number '$1'))} {(DQ ($ Id.VSub_Number '$2'))} ) ] ) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (command.AndOr ops: [ Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp ] children: [ (C {(echo)} {(DQ ('commit refs/heads/too-many-refs-') ($ Id.VSub_Number '$1'))} ) (C {(echo)} {(DQ ('mark :') ($ Id.VSub_DollarName '$i'))}) (C {(echo)} { (DQ ('committer git <git@example.com> ') ($ Id.VSub_DollarName '$i') (' +0000') ) } ) (C {(echo)} {(DQ ('data 0'))}) (C {(echo)} {(DQ ('M 644 inline bla.txt'))}) (C {(echo)} {(DQ ('data 4'))}) (C {(echo)} {(DQ (bla))}) (C {(echo)} {(DQ ('reset refs/heads/too-many-refs-') ($ Id.VSub_Number '$1'))} ) (C {(echo)} {(DQ ('from :') ($ Id.VSub_Number '$1'))}) ] ) ] ) ) (C {(git)} {(fast-import)} {(--export-marks) (Id.Lit_Equals '=') (marks)}) ] negated: F ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:tag) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:618) command_list: (command.CommandList children: [ (C {(perl)} {(-e)} { (DQ ('print ') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:625) ) (bla) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\"' span_id:627)) (' x 30') ) } ) ] ) ) } spids: [617] ) ] ) (command.Simple words: [ {(sed)} {(-e)} { (DQ ('s|^:') (Id.Lit_Other '\\') ('([^ ]*') (Id.Lit_Other '\\') (') ') (Id.Lit_Other '\\') ('(.*') (Id.Lit_Other '\\') (')') (Id.Lit_Other '$') ('|') (Id.Lit_Other '\\') ('2 refs/tags/') ($ Id.VSub_DollarName '$tag') (-) (Id.Lit_Other '\\') ('1|') ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:659) fd: -1 arg_word: {(marks)} ) (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:662) fd: -1 arg_word: {(packed-refs)} ) ] ) ] ) ] ) ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'create 2,000 tags in the repo' span_id:671))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:675) (Token id:Id.Lit_Chars val:'\t(\n' span_id:676) (Token id:Id.Lit_Chars val:'\t\tcd "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&\n' span_id:677) (Token id:Id.Lit_Chars val:'\t\tcreate_tags 1 2000\n' span_id:678) (Token id:Id.Lit_Chars val:'\t)\n' span_id:679) ) } ) (C {(test_expect_success)} {(CMDLINE_LIMIT)} { (SQ (Token id: Id.Lit_Chars val: 'clone the 2,000 tag repo to check OS command line overflow' span_id: 690 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:694) (Token id: Id.Lit_Chars val: '\trun_with_limited_cmdline git clone $HTTPD_URL/smart/repo.git too-many-refs &&\n' span_id: 695 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:696) (Token id:Id.Lit_Chars val:'\t\tcd too-many-refs &&\n' span_id:697) (Token id:Id.Lit_Chars val:'\t\tgit for-each-ref refs/tags >actual &&\n' span_id:698) (Token id:Id.Lit_Chars val:'\t\ttest_line_count = 2000 actual\n' span_id:699) (Token id:Id.Lit_Chars val:'\t)\n' span_id:700) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'large fetch-pack requests can be split across POSTs' span_id: 707 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:711) (Token id: Id.Lit_Chars val: '\tGIT_TRACE_CURL=true git -c http.postbuffer=65536 \\\n' span_id: 712 ) (Token id: Id.Lit_Chars val: '\t\tclone --bare "$HTTPD_URL/smart/repo.git" split.git 2>err &&\n' span_id: 713 ) (Token id:Id.Lit_Chars val:'\tgrep "^=> Send header: POST" err >posts &&\n' span_id:714) (Token id:Id.Lit_Chars val:'\ttest_line_count = 2 posts\n' span_id:715) ) } ) (C {(test_expect_success)} {(EXPENSIVE)} {(SQ (Token id:Id.Lit_Chars val:'http can handle enormous ref negotiation' span_id:724))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:728) (Token id:Id.Lit_Chars val:'\t(\n' span_id:729) (Token id:Id.Lit_Chars val:'\t\tcd "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&\n' span_id:730) (Token id:Id.Lit_Chars val:'\t\tcreate_tags 2001 50000\n' span_id:731) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:732) (Token id: Id.Lit_Chars val: '\tgit -C too-many-refs fetch -q --tags &&\n' span_id: 733 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:734) (Token id: Id.Lit_Chars val: '\t\tcd "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&\n' span_id: 735 ) (Token id:Id.Lit_Chars val:'\t\tcreate_tags 50001 100000\n' span_id:736) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:737) (Token id:Id.Lit_Chars val:'\tgit -C too-many-refs fetch -q --tags &&\n' span_id:738) (Token id: Id.Lit_Chars val: '\tgit -C too-many-refs for-each-ref refs/tags >tags &&\n' span_id: 739 ) (Token id:Id.Lit_Chars val:'\ttest_line_count = 100000 tags\n' span_id:740) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'custom http headers' span_id:747))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:751) (Token id: Id.Lit_Chars val: '\ttest_must_fail git -c http.extraheader="x-magic-two: cadabra" \\\n' span_id: 752 ) (Token id:Id.Lit_Chars val:'\t\tfetch "$HTTPD_URL/smart_headers/repo.git" &&\n' span_id:753) (Token id: Id.Lit_Chars val: '\tgit -c http.extraheader="x-magic-one: abra" \\\n' span_id: 754 ) (Token id:Id.Lit_Chars val:'\t -c http.extraheader="x-magic-two: cadabra" \\\n' span_id:755) (Token id: Id.Lit_Chars val: '\t fetch "$HTTPD_URL/smart_headers/repo.git" &&\n' span_id: 756 ) (Token id: Id.Lit_Chars val: '\tgit update-index --add --cacheinfo 160000,$(git rev-parse HEAD),sub &&\n' span_id: 757 ) (Token id:Id.Lit_Chars val:'\tgit config -f .gitmodules submodule.sub.path sub &&\n' span_id:758) (Token id: Id.Lit_Chars val: '\tgit config -f .gitmodules submodule.sub.url \\\n' span_id: 759 ) (Token id:Id.Lit_Chars val:'\t\t"$HTTPD_URL/smart_headers/repo.git" &&\n' span_id:760) (Token id:Id.Lit_Chars val:'\tgit submodule init sub &&\n' span_id:761) (Token id:Id.Lit_Chars val:'\ttest_must_fail git submodule update sub &&\n' span_id:762) (Token id: Id.Lit_Chars val: '\tgit -c http.extraheader="x-magic-one: abra" \\\n' span_id: 763 ) (Token id:Id.Lit_Chars val:'\t -c http.extraheader="x-magic-two: cadabra" \\\n' span_id:764) (Token id:Id.Lit_Chars val:'\t\tsubmodule update sub\n' span_id:765) ) } ) (C {(stop_httpd)}) (C {(test_done)}) ] )