(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: 'gitweb as standalone script (basic tests).\n' span_id: 15 ) (Token id:Id.Lit_Chars val:'\n' span_id:16) (Token id: Id.Lit_Chars val: 'This test runs gitweb (git web interface) as CGI script from\n' span_id: 17 ) (Token id:Id.Lit_Chars val:'commandline, and checks that it would not write any errors\n' span_id:18) (Token id:Id.Lit_Chars val:'or warnings to log.' span_id:19) ) } spids: [13] ) ] ) (C {(.)} {(./gitweb-lib.sh)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'no commits: projects_list (implicit)' span_id:41))} {(SQ (Token id:Id.Lit_Chars val:gitweb_run span_id:47))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'no commits: projects_index' span_id:56))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "a=project_index"' span_id:62))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'no commits: .git summary (implicit)' span_id:71))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git"' span_id:77))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'no commits: .git commit (implicit HEAD)' span_id:86))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git;a=commit"' span_id:92))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'no commits: .git commitdiff (implicit HEAD)' span_id:101))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git;a=commitdiff"' span_id:107))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'no commits: .git tree (implicit HEAD)' span_id:116))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git;a=tree"' span_id:122))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'no commits: .git heads' span_id:131))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git;a=heads"' span_id:137))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'no commits: .git tags' span_id:146))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git;a=tags"' span_id:152))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'Make initial commit' span_id:169))} { (SQ (Token id:Id.Lit_Chars val:'echo "Not an empty file." > file &&\n' span_id:175) (Token id:Id.Lit_Chars val:'\t git add file &&\n' span_id:176) (Token id:Id.Lit_Chars val:'\t git commit -a -m "Initial commit." &&\n' span_id:177) (Token id:Id.Lit_Chars val:'\t git branch b' span_id:178) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'projects_list (implicit)' span_id:187))} {(SQ (Token id:Id.Lit_Chars val:gitweb_run span_id:193))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:projects_index span_id:202))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "a=project_index"' span_id:208))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'.git summary (implicit)' span_id:217))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git"' span_id:223))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'.git commit (implicit HEAD)' span_id:232))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git;a=commit"' span_id:238))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'.git commitdiff (implicit HEAD, root commit)' span_id:247))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git;a=commitdiff"' span_id:253))} ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: '.git commitdiff_plain (implicit HEAD, root commit)' span_id: 262 ) ) } {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git;a=commitdiff_plain"' span_id:268))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'.git commit (HEAD)' span_id:277))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git;a=commit;h=HEAD"' span_id:283))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'.git tree (implicit HEAD)' span_id:292))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git;a=tree"' span_id:298))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'.git blob (file)' span_id:307))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git;a=blob;f=file"' span_id:313))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'.git blob_plain (file)' span_id:322))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git;a=blob_plain;f=file"' span_id:328))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'.git commit (non-existent)' span_id:344))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git;a=commit;h=non-existent"' span_id:350))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'.git commitdiff (non-existent)' span_id:359))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git;a=commitdiff;h=non-existent"' span_id:365))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'.git commitdiff (non-existent vs HEAD)' span_id:374))} { (SQ (Token id: Id.Lit_Chars val: 'gitweb_run "p=.git;a=commitdiff;hp=non-existent;h=HEAD"' span_id: 380 ) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: '.git tree (0000000000000000000000000000000000000000)' span_id: 389 ) ) } { (SQ (Token id: Id.Lit_Chars val: 'gitweb_run "p=.git;a=tree;h=0000000000000000000000000000000000000000"' span_id: 395 ) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: '.git tag (0000000000000000000000000000000000000000)' span_id: 404 ) ) } { (SQ (Token id: Id.Lit_Chars val: 'gitweb_run "p=.git;a=tag;h=0000000000000000000000000000000000000000"' span_id: 410 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'.git blob (non-existent)' span_id:419))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git;a=blob;f=non-existent"' span_id:425))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'.git blob_plain (non-existent)' span_id:434))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git;a=blob_plain;f=non-existent"' span_id:440))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'commitdiff(0): root' span_id:457))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git;a=commitdiff"' span_id:463))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'commitdiff(0): file added' span_id:472))} { (SQ (Token id:Id.Lit_Chars val:'echo "New file" > new_file &&\n' span_id:478) (Token id:Id.Lit_Chars val:'\t git add new_file &&\n' span_id:479) (Token id:Id.Lit_Chars val:'\t git commit -a -m "File added." &&\n' span_id:480) (Token id:Id.Lit_Chars val:'\t gitweb_run "p=.git;a=commitdiff"' span_id:481) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'commitdiff(0): mode change' span_id:490))} { (SQ (Token id:Id.Lit_Chars val:'test_chmod +x new_file &&\n' span_id:496) (Token id: Id.Lit_Chars val: '\t git commit -a -m "Mode changed." &&\n' span_id: 497 ) (Token id:Id.Lit_Chars val:'\t gitweb_run "p=.git;a=commitdiff"' span_id:498) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'commitdiff(0): file renamed' span_id:507))} { (SQ (Token id:Id.Lit_Chars val:'git mv new_file renamed_file &&\n' span_id:513) (Token id: Id.Lit_Chars val: '\t git commit -a -m "File renamed." &&\n' span_id: 514 ) (Token id:Id.Lit_Chars val:'\t gitweb_run "p=.git;a=commitdiff"' span_id:515) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'commitdiff(0): file to symlink' span_id:524))} { (SQ (Token id:Id.Lit_Chars val:'rm renamed_file &&\n' span_id:530) (Token id:Id.Lit_Chars val:'\t test_ln_s_add file renamed_file &&\n' span_id:531) (Token id:Id.Lit_Chars val:'\t git commit -a -m "File to symlink." &&\n' span_id:532) (Token id:Id.Lit_Chars val:'\t gitweb_run "p=.git;a=commitdiff"' span_id:533) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'commitdiff(0): file deleted' span_id:542))} { (SQ (Token id:Id.Lit_Chars val:'git rm renamed_file &&\n' span_id:548) (Token id:Id.Lit_Chars val:'\t rm -f renamed_file &&\n' span_id:549) (Token id:Id.Lit_Chars val:'\t git commit -a -m "File removed." &&\n' span_id:550) (Token id:Id.Lit_Chars val:'\t gitweb_run "p=.git;a=commitdiff"' span_id:551) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'commitdiff(0): file copied / new file' span_id:560))} { (SQ (Token id:Id.Lit_Chars val:'cp file file2 &&\n' span_id:566) (Token id:Id.Lit_Chars val:'\t git add file2 &&\n' span_id:567) (Token id:Id.Lit_Chars val:'\t git commit -a -m "File copied." &&\n' span_id:568) (Token id:Id.Lit_Chars val:'\t gitweb_run "p=.git;a=commitdiff"' span_id:569) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'commitdiff(0): mode change and modified' span_id:578))} { (SQ (Token id:Id.Lit_Chars val:'echo "New line" >> file2 &&\n' span_id:584) (Token id:Id.Lit_Chars val:'\t test_chmod +x file2 &&\n' span_id:585) (Token id:Id.Lit_Chars val:'\t git commit -a -m "Mode change and modification." &&\n' span_id:586) (Token id:Id.Lit_Chars val:'\t gitweb_run "p=.git;a=commitdiff"' span_id:587) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'commitdiff(0): renamed and modified' span_id:596))} { (SQ (Token id:Id.Lit_Chars val:'cat >file2<<EOF &&\n' span_id:602) (Token id:Id.Lit_Chars val:'Dominus regit me,\n' span_id:603) (Token id:Id.Lit_Chars val:'et nihil mihi deerit.\n' span_id:604) (Token id:Id.Lit_Chars val:'In loco pascuae ibi me collocavit,\n' span_id:605) (Token id:Id.Lit_Chars val:'super aquam refectionis educavit me;\n' span_id:606) (Token id:Id.Lit_Chars val:'animam meam convertit,\n' span_id:607) (Token id:Id.Lit_Chars val:'deduxit me super semitas jusitiae,\n' span_id:608) (Token id:Id.Lit_Chars val:'propter nomen suum.\n' span_id:609) (Token id:Id.Lit_Chars val:'EOF\n' span_id:610) (Token id:Id.Lit_Chars val:'\t git commit -a -m "File added." &&\n' span_id:611) (Token id:Id.Lit_Chars val:'\t git mv file2 file3 &&\n' span_id:612) (Token id: Id.Lit_Chars val: '\t echo "Propter nomen suum." >> file3 &&\n' span_id: 613 ) (Token id:Id.Lit_Chars val:'\t git commit -a -m "File rename and modification." &&\n' span_id:614) (Token id:Id.Lit_Chars val:'\t gitweb_run "p=.git;a=commitdiff"' span_id:615) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'commitdiff(0): renamed, mode change and modified' span_id: 624 ) ) } { (SQ (Token id:Id.Lit_Chars val:'git mv file3 file2 &&\n' span_id:630) (Token id: Id.Lit_Chars val: '\t echo "Propter nomen suum." >> file2 &&\n' span_id: 631 ) (Token id:Id.Lit_Chars val:'\t test_chmod +x file2 &&\n' span_id:632) (Token id: Id.Lit_Chars val: '\t git commit -a -m "File rename, mode change and modification." &&\n' span_id: 633 ) (Token id:Id.Lit_Chars val:'\t gitweb_run "p=.git;a=commitdiff"' span_id:634) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup typechange commits' span_id:648))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:652) (Token id:Id.Lit_Chars val:'\techo "hello world" > foo &&\n' span_id:653) (Token id:Id.Lit_Chars val:'\techo "hi planet" > bar &&\n' span_id:654) (Token id:Id.Lit_Chars val:'\tgit update-index --add foo bar &&\n' span_id:655) (Token id:Id.Lit_Chars val:'\tgit commit -m initial &&\n' span_id:656) (Token id:Id.Lit_Chars val:'\tgit branch initial &&\n' span_id:657) (Token id:Id.Lit_Chars val:'\trm -f foo &&\n' span_id:658) (Token id:Id.Lit_Chars val:'\ttest_ln_s_add bar foo &&\n' span_id:659) (Token id:Id.Lit_Chars val:'\tgit commit -m "foo symlinked to bar" &&\n' span_id:660) (Token id:Id.Lit_Chars val:'\tgit branch foo-symlinked-to-bar &&\n' span_id:661) (Token id:Id.Lit_Chars val:'\trm -f foo &&\n' span_id:662) (Token id:Id.Lit_Chars val:'\techo "how far is the sun?" > foo &&\n' span_id:663) (Token id:Id.Lit_Chars val:'\tgit update-index foo &&\n' span_id:664) (Token id:Id.Lit_Chars val:'\tgit commit -m "foo back to file" &&\n' span_id:665) (Token id:Id.Lit_Chars val:'\tgit branch foo-back-to-file &&\n' span_id:666) (Token id:Id.Lit_Chars val:'\trm -f foo &&\n' span_id:667) (Token id:Id.Lit_Chars val:'\tgit update-index --remove foo &&\n' span_id:668) (Token id:Id.Lit_Chars val:'\tmkdir foo &&\n' span_id:669) (Token id:Id.Lit_Chars val:'\techo "if only I knew" > foo/baz &&\n' span_id:670) (Token id:Id.Lit_Chars val:'\tgit update-index --add foo/baz &&\n' span_id:671) (Token id:Id.Lit_Chars val:'\tgit commit -m "foo becomes a directory" &&\n' span_id:672) (Token id: Id.Lit_Chars val: '\tgit branch "foo-becomes-a-directory" &&\n' span_id: 673 ) (Token id:Id.Lit_Chars val:'\techo "hello world" > foo/baz &&\n' span_id:674) (Token id:Id.Lit_Chars val:'\tgit update-index foo/baz &&\n' span_id:675) (Token id:Id.Lit_Chars val:'\tgit commit -m "foo/baz is the original foo" &&\n' span_id:676) (Token id:Id.Lit_Chars val:'\tgit branch foo-baz-renamed-from-foo\n' span_id:677) (Token id:Id.Lit_Chars val:'\t' span_id:678) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'commitdiff(2): file renamed from foo to foo/baz' span_id:687))} { (SQ (Token id: Id.Lit_Chars val: 'gitweb_run "p=.git;a=commitdiff;hp=initial;h=foo-baz-renamed-from-foo"' span_id: 693 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'commitdiff(2): file renamed from foo/baz to foo' span_id:702))} { (SQ (Token id: Id.Lit_Chars val: 'gitweb_run "p=.git;a=commitdiff;hp=foo-baz-renamed-from-foo;h=initial"' span_id: 708 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'commitdiff(2): directory becomes file' span_id:717))} { (SQ (Token id: Id.Lit_Chars val: 'gitweb_run "p=.git;a=commitdiff;hp=foo-becomes-a-directory;h=initial"' span_id: 723 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'commitdiff(2): file becomes directory' span_id:732))} { (SQ (Token id: Id.Lit_Chars val: 'gitweb_run "p=.git;a=commitdiff;hp=initial;h=foo-becomes-a-directory"' span_id: 738 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'commitdiff(2): file becomes symlink' span_id:747))} { (SQ (Token id: Id.Lit_Chars val: 'gitweb_run "p=.git;a=commitdiff;hp=initial;h=foo-symlinked-to-bar"' span_id: 753 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'commitdiff(2): symlink becomes file' span_id:762))} { (SQ (Token id: Id.Lit_Chars val: 'gitweb_run "p=.git;a=commitdiff;hp=foo-symlinked-to-bar;h=foo-back-to-file"' span_id: 768 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'commitdiff(2): symlink becomes directory' span_id:777))} { (SQ (Token id: Id.Lit_Chars val: 'gitweb_run "p=.git;a=commitdiff;hp=foo-symlinked-to-bar;h=foo-becomes-a-directory"' span_id: 783 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'commitdiff(2): directory becomes symlink' span_id:792))} { (SQ (Token id: Id.Lit_Chars val: 'gitweb_run "p=.git;a=commitdiff;hp=foo-becomes-a-directory;h=foo-symlinked-to-bar"' span_id: 798 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup incomplete lines' span_id:812))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:816) (Token id:Id.Lit_Chars val:'\tcat >file<<-\\EOF &&\n' span_id:817) (Token id:Id.Lit_Chars val:'\tDominus regit me,\n' span_id:818) (Token id:Id.Lit_Chars val:'\tet nihil mihi deerit.\n' span_id:819) (Token id:Id.Lit_Chars val:'\tIn loco pascuae ibi me collocavit,\n' span_id:820) (Token id: Id.Lit_Chars val: '\tsuper aquam refectionis educavit me;\n' span_id: 821 ) (Token id:Id.Lit_Chars val:'\tanimam meam convertit,\n' span_id:822) (Token id:Id.Lit_Chars val:'\tdeduxit me super semitas jusitiae,\n' span_id:823) (Token id:Id.Lit_Chars val:'\tpropter nomen suum.\n' span_id:824) (Token id:Id.Lit_Chars val:'\tCHANGE_ME\n' span_id:825) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:826) (Token id: Id.Lit_Chars val: '\tgit commit -a -m "Preparing for incomplete lines" &&\n' span_id: 827 ) (Token id:Id.Lit_Chars val:'\techo "incomplete" | tr -d "\\\\012" >>file &&\n' span_id:828) (Token id: Id.Lit_Chars val: '\tgit commit -a -m "Add incomplete line" &&\n' span_id: 829 ) (Token id:Id.Lit_Chars val:'\tgit tag incomplete_lines_add &&\n' span_id:830) (Token id: Id.Lit_Chars val: '\tsed -e s/CHANGE_ME/change_me/ <file >file+ &&\n' span_id: 831 ) (Token id:Id.Lit_Chars val:'\tmv -f file+ file &&\n' span_id:832) (Token id: Id.Lit_Chars val: '\tgit commit -a -m "Incomplete context line" &&\n' span_id: 833 ) (Token id:Id.Lit_Chars val:'\tgit tag incomplete_lines_ctx &&\n' span_id:834) (Token id:Id.Lit_Chars val:'\techo "Dominus regit me," >file &&\n' span_id:835) (Token id:Id.Lit_Chars val:'\techo "incomplete line" | tr -d "\\\\012" >>file &&\n' span_id:836) (Token id: Id.Lit_Chars val: '\tgit commit -a -m "Change incomplete line" &&\n' span_id: 837 ) (Token id:Id.Lit_Chars val:'\tgit tag incomplete_lines_chg &&\n' span_id:838) (Token id:Id.Lit_Chars val:'\techo "Dominus regit me," >file &&\n' span_id:839) (Token id:Id.Lit_Chars val:'\tgit commit -a -m "Remove incomplete line" &&\n' span_id:840) (Token id:Id.Lit_Chars val:'\tgit tag incomplete_lines_rem\n' span_id:841) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'commitdiff(1): addition of incomplete line' span_id:848))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:852) (Token id: Id.Lit_Chars val: '\tgitweb_run "p=.git;a=commitdiff;h=incomplete_lines_add"\n' span_id: 853 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'commitdiff(1): incomplete line as context line' span_id:860))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:864) (Token id: Id.Lit_Chars val: '\tgitweb_run "p=.git;a=commitdiff;h=incomplete_lines_ctx"\n' span_id: 865 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'commitdiff(1): change incomplete line' span_id:872))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:876) (Token id: Id.Lit_Chars val: '\tgitweb_run "p=.git;a=commitdiff;h=incomplete_lines_chg"\n' span_id: 877 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'commitdiff(1): removal of incomplete line' span_id:884))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:888) (Token id: Id.Lit_Chars val: '\tgitweb_run "p=.git;a=commitdiff;h=incomplete_lines_rem"\n' span_id: 889 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'Create a merge' span_id:904))} { (SQ (Token id:Id.Lit_Chars val:'git checkout b &&\n' span_id:910) (Token id:Id.Lit_Chars val:'\t echo "Branch" >> b &&\n' span_id:911) (Token id:Id.Lit_Chars val:'\t git add b &&\n' span_id:912) (Token id:Id.Lit_Chars val:'\t git commit -a -m "On branch" &&\n' span_id:913) (Token id:Id.Lit_Chars val:'\t git checkout master &&\n' span_id:914) (Token id:Id.Lit_Chars val:'\t git merge b &&\n' span_id:915) (Token id:Id.Lit_Chars val:'\t git tag merge_commit' span_id:916) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'commit(0): merge commit' span_id:925))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git;a=commit"' span_id:931))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'commitdiff(0): merge commit' span_id:940))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git;a=commitdiff"' span_id:946))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'Prepare large commit' span_id:955))} { (SQ (Token id:Id.Lit_Chars val:'git checkout b &&\n' span_id:961) (Token id: Id.Lit_Chars val: '\t echo "To be changed" > 01-change &&\n' span_id: 962 ) (Token id:Id.Lit_Chars val:'\t echo "To be renamed" > 02-pure-rename-from &&\n' span_id:963) (Token id: Id.Lit_Chars val: '\t echo "To be deleted" > 03-delete &&\n' span_id: 964 ) (Token id:Id.Lit_Chars val:'\t echo "To be renamed and changed" > 04-rename-from &&\n' span_id:965) (Token id: Id.Lit_Chars val: '\t echo "To have mode changed" > 05-mode-change &&\n' span_id: 966 ) (Token id:Id.Lit_Chars val:'\t echo "File to symlink" > 06-file-or-symlink &&\n' span_id:967) (Token id: Id.Lit_Chars val: '\t echo "To be changed and have mode changed" > 07-change-mode-change\t&&\n' span_id: 968 ) (Token id:Id.Lit_Chars val:'\t git add 0* &&\n' span_id:969) (Token id: Id.Lit_Chars val: '\t git commit -a -m "Prepare large commit" &&\n' span_id: 970 ) (Token id:Id.Lit_Chars val:'\t echo "Changed" > 01-change &&\n' span_id:971) (Token id: Id.Lit_Chars val: '\t git mv 02-pure-rename-from 02-pure-rename-to &&\n' span_id: 972 ) (Token id:Id.Lit_Chars val:'\t git rm 03-delete && rm -f 03-delete &&\n' span_id:973) (Token id:Id.Lit_Chars val:'\t echo "A new file" > 03-new &&\n' span_id:974) (Token id:Id.Lit_Chars val:'\t git add 03-new &&\n' span_id:975) (Token id: Id.Lit_Chars val: '\t git mv 04-rename-from 04-rename-to &&\n' span_id: 976 ) (Token id:Id.Lit_Chars val:'\t echo "Changed" >> 04-rename-to &&\n' span_id:977) (Token id:Id.Lit_Chars val:'\t test_chmod +x 05-mode-change &&\n' span_id:978) (Token id:Id.Lit_Chars val:'\t rm -f 06-file-or-symlink &&\n' span_id:979) (Token id: Id.Lit_Chars val: '\t test_ln_s_add 01-change 06-file-or-symlink &&\n' span_id: 980 ) (Token id: Id.Lit_Chars val: '\t echo "Changed and have mode changed" > 07-change-mode-change\t&&\n' span_id: 981 ) (Token id:Id.Lit_Chars val:'\t test_chmod +x 07-change-mode-change &&\n' span_id:982) (Token id:Id.Lit_Chars val:'\t git commit -a -m "Large commit" &&\n' span_id:983) (Token id:Id.Lit_Chars val:'\t git checkout master' span_id:984) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'commit(1): large commit' span_id:993))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git;a=commit;h=b"' span_id:999))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'commitdiff(1): large commit' span_id:1008))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git;a=commitdiff;h=b"' span_id:1014))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'side-by-side: addition of incomplete line' span_id:1028))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1032) (Token id: Id.Lit_Chars val: '\tgitweb_run "p=.git;a=commitdiff;h=incomplete_lines_add;ds=sidebyside"\n' span_id: 1033 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'side-by-side: incomplete line as context line' span_id:1040))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1044) (Token id: Id.Lit_Chars val: '\tgitweb_run "p=.git;a=commitdiff;h=incomplete_lines_ctx;ds=sidebyside"\n' span_id: 1045 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'side-by-side: changed incomplete line' span_id:1052))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1056) (Token id: Id.Lit_Chars val: '\tgitweb_run "p=.git;a=commitdiff;h=incomplete_lines_chg;ds=sidebyside"\n' span_id: 1057 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'side-by-side: removal of incomplete line' span_id:1064))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1068) (Token id: Id.Lit_Chars val: '\tgitweb_run "p=.git;a=commitdiff;h=incomplete_lines_rem;ds=sidebyside"\n' span_id: 1069 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'side-by-side: merge commit' span_id:1076))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1080) (Token id: Id.Lit_Chars val: '\tgitweb_run "p=.git;a=commitdiff;h=merge_commit;ds=sidebyside"\n' span_id: 1081 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'tags: list of different types of tags' span_id:1097))} { (SQ (Token id:Id.Lit_Chars val:'git checkout master &&\n' span_id:1103) (Token id: Id.Lit_Chars val: '\t git tag -a -m "Tag commit object" tag-commit HEAD &&\n' span_id: 1104 ) (Token id:Id.Lit_Chars val:'\t git tag -a -m "" tag-commit-nomessage HEAD &&\n' span_id:1105) (Token id: Id.Lit_Chars val: '\t git tag -a -m "Tag tag object" tag-tag tag-commit &&\n' span_id: 1106 ) (Token id: Id.Lit_Chars val: '\t git tag -a -m "Tag tree object" tag-tree HEAD^{tree} &&\n' span_id: 1107 ) (Token id:Id.Lit_Chars val:'\t git tag -a -m "Tag blob object" tag-blob HEAD:file &&\n' span_id:1108) (Token id: Id.Lit_Chars val: '\t git tag lightweight/tag-commit HEAD &&\n' span_id: 1109 ) (Token id:Id.Lit_Chars val:'\t git tag lightweight/tag-tag tag-commit &&\n' span_id:1110) (Token id: Id.Lit_Chars val: '\t git tag lightweight/tag-tree HEAD^{tree} &&\n' span_id: 1111 ) (Token id:Id.Lit_Chars val:'\t git tag lightweight/tag-blob HEAD:file &&\n' span_id:1112) (Token id:Id.Lit_Chars val:'\t gitweb_run "p=.git;a=tags"' span_id:1113) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'tag: Tag to commit object' span_id:1122))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git;a=tag;h=tag-commit"' span_id:1128))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'tag: on lightweight tag (invalid)' span_id:1137))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git;a=tag;h=lightweight/tag-commit"' span_id:1143))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'logs: log (implicit HEAD)' span_id:1159))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git;a=log"' span_id:1165))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'logs: shortlog (implicit HEAD)' span_id:1174))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git;a=shortlog"' span_id:1180))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'logs: history (implicit HEAD, file)' span_id:1189))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git;a=history;f=file"' span_id:1195))} ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'logs: history (implicit HEAD, non-existent file)' span_id: 1204 ) ) } {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git;a=history;f=non-existent"' span_id:1210))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'logs: history (implicit HEAD, deleted file)' span_id:1219))} { (SQ (Token id:Id.Lit_Chars val:'git checkout master &&\n' span_id:1225) (Token id: Id.Lit_Chars val: '\t echo "to be deleted" > deleted_file &&\n' span_id: 1226 ) (Token id:Id.Lit_Chars val:'\t git add deleted_file &&\n' span_id:1227) (Token id: Id.Lit_Chars val: '\t git commit -m "Add file to be deleted" &&\n' span_id: 1228 ) (Token id:Id.Lit_Chars val:'\t git rm deleted_file &&\n' span_id:1229) (Token id:Id.Lit_Chars val:'\t git commit -m "Delete file" &&\n' span_id:1230) (Token id:Id.Lit_Chars val:'\t gitweb_run "p=.git;a=history;f=deleted_file"' span_id:1231) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'path_info: project' span_id:1246))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "" "/.git"' span_id:1252))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'path_info: project/branch' span_id:1261))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "" "/.git/b"' span_id:1267))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'path_info: project/branch:file' span_id:1276))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "" "/.git/master:file"' span_id:1282))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'path_info: project/branch:dir/' span_id:1291))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "" "/.git/master:foo/"' span_id:1297))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'path_info: project/branch (non-existent)' span_id:1306))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "" "/.git/non-existent"' span_id:1312))} ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'path_info: project/branch:filename (non-existent branch)' span_id: 1321 ) ) } {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "" "/.git/non-existent:non-existent"' span_id:1327))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'path_info: project/branch:file (non-existent)' span_id:1336))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "" "/.git/master:non-existent"' span_id:1342))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'path_info: project/branch:dir/ (non-existent)' span_id:1351))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "" "/.git/master:non-existent/"' span_id:1357))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'path_info: project/branch:/file' span_id:1367))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "" "/.git/master:/file"' span_id:1373))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'path_info: project/:/file (implicit HEAD)' span_id:1382))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "" "/.git/:/file"' span_id:1388))} ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'path_info: project/:/ (implicit HEAD, top tree)' span_id: 1397 ) ) } {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "" "/.git/:/"' span_id:1403))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'feeds: OPML' span_id:1420))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "a=opml"' span_id:1426))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'feed: RSS' span_id:1435))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git;a=rss"' span_id:1441))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'feed: Atom' span_id:1450))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git;a=atom"' span_id:1456))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'encode(commit): utf8' span_id:1472))} { (SQ (Token id:Id.Lit_Chars val:'. "$TEST_DIRECTORY"/t3901-utf8.txt &&\n' span_id:1478) (Token id: Id.Lit_Chars val: '\t test_when_finished "GIT_AUTHOR_NAME=\\"A U Thor\\"" &&\n' span_id: 1479 ) (Token id: Id.Lit_Chars val: '\t test_when_finished "GIT_COMMITTER_NAME=\\"C O Mitter\\"" &&\n' span_id: 1480 ) (Token id:Id.Lit_Chars val:'\t echo "UTF-8" >> file &&\n' span_id:1481) (Token id:Id.Lit_Chars val:'\t git add file &&\n' span_id:1482) (Token id:Id.Lit_Chars val:'\t git commit -F "$TEST_DIRECTORY"/t3900/1-UTF-8.txt &&\n' span_id:1483) (Token id:Id.Lit_Chars val:'\t gitweb_run "p=.git;a=commit"' span_id:1484) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'encode(commit): iso-8859-1' span_id:1493))} { (SQ (Token id:Id.Lit_Chars val:'. "$TEST_DIRECTORY"/t3901-8859-1.txt &&\n' span_id:1499) (Token id: Id.Lit_Chars val: '\t test_when_finished "GIT_AUTHOR_NAME=\\"A U Thor\\"" &&\n' span_id: 1500 ) (Token id: Id.Lit_Chars val: '\t test_when_finished "GIT_COMMITTER_NAME=\\"C O Mitter\\"" &&\n' span_id: 1501 ) (Token id:Id.Lit_Chars val:'\t echo "ISO-8859-1" >> file &&\n' span_id:1502) (Token id:Id.Lit_Chars val:'\t git add file &&\n' span_id:1503) (Token id:Id.Lit_Chars val:'\t test_config i18n.commitencoding ISO-8859-1 &&\n' span_id:1504) (Token id: Id.Lit_Chars val: '\t git commit -F "$TEST_DIRECTORY"/t3900/ISO8859-1.txt &&\n' span_id: 1505 ) (Token id:Id.Lit_Chars val:'\t gitweb_run "p=.git;a=commit"' span_id:1506) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'encode(log): utf-8 and iso-8859-1' span_id:1515))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git;a=log"' span_id:1521))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'opt: log --no-merges' span_id:1537))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git;a=log;opt=--no-merges"' span_id:1543))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'opt: atom --no-merges' span_id:1552))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git;a=log;opt=--no-merges"' span_id:1558))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'opt: "file" history --no-merges' span_id:1567))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git;a=history;f=file;opt=--no-merges"' span_id:1573))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'opt: log --no-such-option (invalid option)' span_id:1582))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git;a=log;opt=--no-such-option"' span_id:1588))} ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'opt: tree --no-merges (invalid option for action)' span_id: 1597 ) ) } {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git;a=tree;opt=--no-merges"' span_id:1603))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'URL: no project URLs, no base URL' span_id:1619))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git;a=summary"' span_id:1625))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'URL: project URLs via gitweb.url' span_id:1634))} { (SQ (Token id: Id.Lit_Chars val: 'git config --add gitweb.url git://example.com/git/trash.git &&\n' span_id: 1640 ) (Token id: Id.Lit_Chars val: ' git config --add gitweb.url http://example.com/git/trash.git &&\n' span_id: 1641 ) (Token id:Id.Lit_Chars val:' gitweb_run "p=.git;a=summary"' span_id:1642) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1648) fd: -1 arg_word: {(.git/cloneurl)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1651) fd: -1 here_begin: {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:1652)) (OF) } here_end_span_id: 1657 stdin_parts: [('git://example.com/git/trash.git\n') ('http://example.com/git/trash.git\n')] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'URL: project URLs via cloneurl file' span_id:1664))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git;a=summary"' span_id:1670))} ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:1683) fd: -1 arg_word: {(gitweb_config.perl)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1686) fd: -1 here_begin: {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:1687)) (OF) } here_end_span_id: 1697 stdin_parts: [ ('\n') ('# turn on override for each overridable feature\n') ('foreach my $key (keys %feature) {\n') ("\tif ($feature{$key}{'sub'}) {\n") ("\t\t$feature{$key}{'override'} = 1;\n") ('\t}\n') ('}\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'config override: projects list (implicit)' span_id:1704))} {(SQ (Token id:Id.Lit_Chars val:gitweb_run span_id:1710))} ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'config override: tree view, features not overridden in repo config' span_id: 1719 ) ) } {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git;a=tree"' span_id:1725))} ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'config override: tree view, features disabled in repo config' span_id: 1734 ) ) } { (SQ (Token id:Id.Lit_Chars val:'git config gitweb.blame no &&\n' span_id:1740) (Token id: Id.Lit_Chars val: '\t git config gitweb.snapshot none &&\n' span_id: 1741 ) (Token id:Id.Lit_Chars val:'\t git config gitweb.avatar gravatar &&\n' span_id:1742) (Token id:Id.Lit_Chars val:'\t gitweb_run "p=.git;a=tree"' span_id:1743) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'config override: tree view, features enabled in repo config (1)' span_id: 1752 ) ) } { (SQ (Token id:Id.Lit_Chars val:'git config gitweb.blame yes &&\n' span_id:1758) (Token id: Id.Lit_Chars val: '\t git config gitweb.snapshot "zip,tgz, tbz2" &&\n' span_id: 1759 ) (Token id:Id.Lit_Chars val:'\t gitweb_run "p=.git;a=tree"' span_id:1760) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1766) fd: -1 arg_word: {(.git/config)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1769) fd: -1 here_begin: {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:1770)) (OF) } here_end_span_id: 1777 stdin_parts: [ ('# testing noval and alternate separator\n') ('[gitweb]\n') ('\tblame\n') ('\tsnapshot = zip tgz\n') ] ) ] ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'config override: tree view, features enabled in repo config (2)' span_id: 1783 ) ) } {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=.git;a=tree"' span_id:1789))} ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:1802) fd: -1 arg_word: {(gitweb_config.perl)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1805) fd: -1 here_begin: {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:1806)) (OF) } here_end_span_id: 1814 stdin_parts: [ ('\n') ('# enable search\n') ("$feature{'search'}{'default'} = [1];\n") ("$feature{'grep'}{'default'} = [1];\n") ("$feature{'pickaxe'}{'default'} = [1];\n") ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'search: preparation' span_id:1821))} { (SQ (Token id:Id.Lit_Chars val:'echo "1st MATCH" >>file &&\n' span_id:1827) (Token id:Id.Lit_Chars val:'\t echo "2nd MATCH" >>file &&\n' span_id:1828) (Token id:Id.Lit_Chars val:'\t echo "MATCH" >>bar &&\n' span_id:1829) (Token id:Id.Lit_Chars val:'\t git add file bar &&\n' span_id:1830) (Token id:Id.Lit_Chars val:'\t git commit -m "Added MATCH word"' span_id:1831) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'search: commit author' span_id:1840))} { (SQ (Token id: Id.Lit_Chars val: 'gitweb_run "p=.git;a=search;h=HEAD;st=author;s=A+U+Thor"' span_id: 1846 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'search: commit message' span_id:1855))} { (SQ (Token id: Id.Lit_Chars val: 'gitweb_run "p=.git;a=search;h=HEAD;st=commitr;s=MATCH"' span_id: 1861 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'search: grep' span_id:1870))} { (SQ (Token id: Id.Lit_Chars val: 'gitweb_run "p=.git;a=search;h=HEAD;st=grep;s=MATCH"' span_id: 1876 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'search: pickaxe' span_id:1885))} { (SQ (Token id: Id.Lit_Chars val: 'gitweb_run "p=.git;a=search;h=HEAD;st=pickaxe;s=MATCH"' span_id: 1891 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'search: projects' span_id:1900))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "a=project_list;s=.git"' span_id:1906))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'README.html with non-ASCII characters (utf-8)' span_id:1922))} { (SQ (Token id: Id.Lit_Chars val: 'echo "<b>UTF-8 example:</b><br />" > .git/README.html &&\n' span_id: 1928 ) (Token id: Id.Lit_Chars val: '\t cat "$TEST_DIRECTORY"/t3900/1-UTF-8.txt >> .git/README.html &&\n' span_id: 1929 ) (Token id:Id.Lit_Chars val:'\t gitweb_run "p=.git;a=summary"' span_id:1930) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:highlight_version) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1943) command_list: (command.CommandList children: [ (command.Simple words: [{(highlight)} {(--version)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:1948) fd: -1 arg_word: {(/dev/null)} ) (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:1951) fd: 2 arg_word: {(/dev/null)} ) ] ) ] ) ) } spids: [1942] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {($ Id.VSub_QMark '$?')} {(-eq)} {(127)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:1966) ) ] action: [(C {(say)} {(DQ ("Skipping syntax highlighting tests: 'highlight' not found"))})] spids: [1955 1968] ) (if_arm cond: [ (command.Sentence child: (C {(test)} {(-z)} {(DQ ($ Id.VSub_DollarName '$highlight_version'))}) terminator: (Token id:Id.Op_Semi val:';' span_id:1986) ) ] action: [ (C {(say)} {(DQ ("Skipping syntax highlighting tests: incorrect 'highlight' found"))}) ] spids: [1977 1988] ) ] else_action: [ (C {(test_set_prereq)} {(HIGHLIGHT)}) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:2007) fd: -1 arg_word: {(gitweb_config.perl)} ) (redir.HereDoc op: (Token id:Id.Redir_DLessDash val:'<<-' span_id:2010) fd: -1 here_begin: { (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\E' span_id:2011) ) (OF) } here_end_span_id: 2016 stdin_parts: [ ('our $highlight_bin = "highlight";\n') ("$feature{'highlight'}{'override'} = 1;\n") ] ) ] ) ] ) (C {(test_expect_success)} {(HIGHLIGHT)} { (SQ (Token id: Id.Lit_Chars val: 'syntax highlighting (no highlight, unknown syntax)' span_id: 2027 ) ) } { (SQ (Token id:Id.Lit_Chars val:'git config gitweb.highlight yes &&\n' span_id:2033) (Token id:Id.Lit_Chars val:'\t gitweb_run "p=.git;a=blob;f=file"' span_id:2034) ) } ) (C {(test_expect_success)} {(HIGHLIGHT)} { (SQ (Token id: Id.Lit_Chars val: 'syntax highlighting (highlighted, shell script)' span_id: 2045 ) ) } { (SQ (Token id:Id.Lit_Chars val:'git config gitweb.highlight yes &&\n' span_id:2051) (Token id:Id.Lit_Chars val:'\t echo "#!/usr/bin/sh" > test.sh &&\n' span_id:2052) (Token id:Id.Lit_Chars val:'\t git add test.sh &&\n' span_id:2053) (Token id:Id.Lit_Chars val:'\t git commit -m "Add test.sh" &&\n' span_id:2054) (Token id:Id.Lit_Chars val:'\t gitweb_run "p=.git;a=blob;f=test.sh"' span_id:2055) ) } ) (C {(test_expect_success)} {(HIGHLIGHT)} { (SQ (Token id: Id.Lit_Chars val: 'syntax highlighting (highlighter language autodetection)' span_id: 2066 ) ) } { (SQ (Token id:Id.Lit_Chars val:'git config gitweb.highlight yes &&\n' span_id:2072) (Token id:Id.Lit_Chars val:'\t echo "#!/usr/bin/perl" > test &&\n' span_id:2073) (Token id:Id.Lit_Chars val:'\t git add test &&\n' span_id:2074) (Token id:Id.Lit_Chars val:'\t git commit -m "Add test" &&\n' span_id:2075) (Token id:Id.Lit_Chars val:'\t gitweb_run "p=.git;a=blob;f=test"' span_id:2076) ) } ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:2089) fd: -1 arg_word: {(gitweb_config.perl)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2092) fd: -1 here_begin: { (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\E' span_id:2093) ) (OF) } here_end_span_id: 2099 stdin_parts: [("$feature{'forks'}{'default'} = [1];\n")] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'forks: prepare' span_id:2106))} { (SQ (Token id:Id.Lit_Chars val:'git init --bare foo.git &&\n' span_id:2112) (Token id: Id.Lit_Chars val: '\t git --git-dir=foo.git --work-tree=. add file &&\n' span_id: 2113 ) (Token id: Id.Lit_Chars val: '\t git --git-dir=foo.git --work-tree=. commit -m "Initial commit" &&\n' span_id: 2114 ) (Token id:Id.Lit_Chars val:'\t echo "foo" > foo.git/description &&\n' span_id:2115) (Token id:Id.Lit_Chars val:'\t mkdir -p foo &&\n' span_id:2116) (Token id:Id.Lit_Chars val:'\t (cd foo &&\n' span_id:2117) (Token id: Id.Lit_Chars val: '\t git clone --shared --bare ../foo.git foo-forked.git &&\n' span_id: 2118 ) (Token id:Id.Lit_Chars val:'\t echo "fork of foo" > foo-forked.git/description)' span_id:2119) ) } ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'forks: projects list' span_id:2128))} {(SQ (Token id:Id.Lit_Chars val:gitweb_run span_id:2134))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'forks: forks action' span_id:2143))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "p=foo.git;a=forks"' span_id:2149))} ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:2162) fd: -1 arg_word: {(gitweb_config.perl)} ) (redir.HereDoc op: (Token id:Id.Redir_DLessDash val:'<<-' span_id:2165) fd: -1 here_begin: { (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\E' span_id:2166) ) (OF) } here_end_span_id: 2173 stdin_parts: [ ("# we don't test _setting_ content tags, so any true value is good\n") ("$feature{'ctags'}{'default'} = ['ctags_script.cgi'];\n") ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'ctags: tag cloud in projects list' span_id:2180))} { (SQ (Token id:Id.Lit_Chars val:'mkdir .git/ctags &&\n' span_id:2186) (Token id: Id.Lit_Chars val: '\t echo "2" > .git/ctags/foo &&\n' span_id: 2187 ) (Token id:Id.Lit_Chars val:'\t echo "1" > .git/ctags/bar &&\n' span_id:2188) (Token id:Id.Lit_Chars val:'\tgitweb_run' span_id:2189) ) } ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'ctags: search projects by existing tag' span_id:2198))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "by_tag=foo"' span_id:2204))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'ctags: search projects by non existent tag' span_id:2213))} {(SQ (Token id:Id.Lit_Chars val:'gitweb_run "by_tag=non-existent"' span_id:2219))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'ctags: malformed tag weights' span_id:2228))} { (SQ (Token id:Id.Lit_Chars val:'mkdir -p .git/ctags &&\n' span_id:2234) (Token id: Id.Lit_Chars val: '\t echo "not-a-number" > .git/ctags/nan &&\n' span_id: 2235 ) (Token id:Id.Lit_Chars val:'\t echo "not-a-number-2" > .git/ctags/nan2 &&\n' span_id:2236) (Token id: Id.Lit_Chars val: '\t echo "0.1" >.git/ctags/floating-point &&\n' span_id: 2237 ) (Token id:Id.Lit_Chars val:'\t gitweb_run' span_id:2238) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'categories: projects list, only default category' span_id: 2254 ) ) } { (SQ (Token id: Id.Lit_Chars val: 'echo "\\$projects_list_group_categories = 1;" >>gitweb_config.perl &&\n' span_id: 2260 ) (Token id:Id.Lit_Chars val:'\t gitweb_run' span_id:2261) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'unborn HEAD: "summary" page (with "heads" subview)' span_id: 2277 ) ) } { (SQ (Token id:Id.Lit_Chars val:'{\n' span_id:2283) (Token id:Id.Lit_Chars val:'\t\tgit checkout orphan_branch ||\n' span_id:2284) (Token id:Id.Lit_Chars val:'\t\tgit checkout --orphan orphan_branch\n' span_id:2285) (Token id:Id.Lit_Chars val:'\t } &&\n' span_id:2286) (Token id:Id.Lit_Chars val:'\t test_when_finished "git checkout master" &&\n' span_id:2287) (Token id:Id.Lit_Chars val:'\t gitweb_run "p=.git;a=summary"' span_id:2288) ) } ) (C {(test_done)}) ] )