(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: { (SQ <"gitweb as standalone script (basic tests).\n"> <"\n"> <"This test runs gitweb (git web interface) as CGI script from\n"> <"commandline, and checks that it would not write any errors\n"> <"or warnings to log."> ) } spids: [13] ) ] spids: [13] ) (C {(.)} {(./gitweb-lib.sh)}) (C {(test_expect_success)} {(SQ <"no commits: projects_list (implicit)">)} {(SQ <gitweb_run>)}) (C {(test_expect_success)} {(SQ <"no commits: projects_index">)} {(SQ <"gitweb_run \"a=project_index\"">)} ) (C {(test_expect_success)} {(SQ <"no commits: .git summary (implicit)">)} {(SQ <"gitweb_run \"p=.git\"">)} ) (C {(test_expect_success)} {(SQ <"no commits: .git commit (implicit HEAD)">)} {(SQ <"gitweb_run \"p=.git;a=commit\"">)} ) (C {(test_expect_success)} {(SQ <"no commits: .git commitdiff (implicit HEAD)">)} {(SQ <"gitweb_run \"p=.git;a=commitdiff\"">)} ) (C {(test_expect_success)} {(SQ <"no commits: .git tree (implicit HEAD)">)} {(SQ <"gitweb_run \"p=.git;a=tree\"">)} ) (C {(test_expect_success)} {(SQ <"no commits: .git heads">)} {(SQ <"gitweb_run \"p=.git;a=heads\"">)}) (C {(test_expect_success)} {(SQ <"no commits: .git tags">)} {(SQ <"gitweb_run \"p=.git;a=tags\"">)}) (C {(test_expect_success)} {(SQ <"Make initial commit">)} { (SQ <"echo \"Not an empty file.\" > file &&\n"> <"\t git add file &&\n"> <"\t git commit -a -m \"Initial commit.\" &&\n"> <"\t git branch b"> ) } ) (C {(test_expect_success)} {(SQ <"projects_list (implicit)">)} {(SQ <gitweb_run>)}) (C {(test_expect_success)} {(SQ <projects_index>)} {(SQ <"gitweb_run \"a=project_index\"">)}) (C {(test_expect_success)} {(SQ <".git summary (implicit)">)} {(SQ <"gitweb_run \"p=.git\"">)}) (C {(test_expect_success)} {(SQ <".git commit (implicit HEAD)">)} {(SQ <"gitweb_run \"p=.git;a=commit\"">)} ) (C {(test_expect_success)} {(SQ <".git commitdiff (implicit HEAD, root commit)">)} {(SQ <"gitweb_run \"p=.git;a=commitdiff\"">)} ) (C {(test_expect_success)} {(SQ <".git commitdiff_plain (implicit HEAD, root commit)">)} {(SQ <"gitweb_run \"p=.git;a=commitdiff_plain\"">)} ) (C {(test_expect_success)} {(SQ <".git commit (HEAD)">)} {(SQ <"gitweb_run \"p=.git;a=commit;h=HEAD\"">)} ) (C {(test_expect_success)} {(SQ <".git tree (implicit HEAD)">)} {(SQ <"gitweb_run \"p=.git;a=tree\"">)} ) (C {(test_expect_success)} {(SQ <".git blob (file)">)} {(SQ <"gitweb_run \"p=.git;a=blob;f=file\"">)}) (C {(test_expect_success)} {(SQ <".git blob_plain (file)">)} {(SQ <"gitweb_run \"p=.git;a=blob_plain;f=file\"">)} ) (C {(test_expect_success)} {(SQ <".git commit (non-existent)">)} {(SQ <"gitweb_run \"p=.git;a=commit;h=non-existent\"">)} ) (C {(test_expect_success)} {(SQ <".git commitdiff (non-existent)">)} {(SQ <"gitweb_run \"p=.git;a=commitdiff;h=non-existent\"">)} ) (C {(test_expect_success)} {(SQ <".git commitdiff (non-existent vs HEAD)">)} {(SQ <"gitweb_run \"p=.git;a=commitdiff;hp=non-existent;h=HEAD\"">)} ) (C {(test_expect_success)} {(SQ <".git tree (0000000000000000000000000000000000000000)">)} {(SQ <"gitweb_run \"p=.git;a=tree;h=0000000000000000000000000000000000000000\"">)} ) (C {(test_expect_success)} {(SQ <".git tag (0000000000000000000000000000000000000000)">)} {(SQ <"gitweb_run \"p=.git;a=tag;h=0000000000000000000000000000000000000000\"">)} ) (C {(test_expect_success)} {(SQ <".git blob (non-existent)">)} {(SQ <"gitweb_run \"p=.git;a=blob;f=non-existent\"">)} ) (C {(test_expect_success)} {(SQ <".git blob_plain (non-existent)">)} {(SQ <"gitweb_run \"p=.git;a=blob_plain;f=non-existent\"">)} ) (C {(test_expect_success)} {(SQ <"commitdiff(0): root">)} {(SQ <"gitweb_run \"p=.git;a=commitdiff\"">)} ) (C {(test_expect_success)} {(SQ <"commitdiff(0): file added">)} { (SQ <"echo \"New file\" > new_file &&\n"> <"\t git add new_file &&\n"> <"\t git commit -a -m \"File added.\" &&\n"> <"\t gitweb_run \"p=.git;a=commitdiff\""> ) } ) (C {(test_expect_success)} {(SQ <"commitdiff(0): mode change">)} { (SQ <"test_chmod +x new_file &&\n"> <"\t git commit -a -m \"Mode changed.\" &&\n"> <"\t gitweb_run \"p=.git;a=commitdiff\""> ) } ) (C {(test_expect_success)} {(SQ <"commitdiff(0): file renamed">)} { (SQ <"git mv new_file renamed_file &&\n"> <"\t git commit -a -m \"File renamed.\" &&\n"> <"\t gitweb_run \"p=.git;a=commitdiff\""> ) } ) (C {(test_expect_success)} {(SQ <"commitdiff(0): file to symlink">)} { (SQ <"rm renamed_file &&\n"> <"\t test_ln_s_add file renamed_file &&\n"> <"\t git commit -a -m \"File to symlink.\" &&\n"> <"\t gitweb_run \"p=.git;a=commitdiff\""> ) } ) (C {(test_expect_success)} {(SQ <"commitdiff(0): file deleted">)} { (SQ <"git rm renamed_file &&\n"> <"\t rm -f renamed_file &&\n"> <"\t git commit -a -m \"File removed.\" &&\n"> <"\t gitweb_run \"p=.git;a=commitdiff\""> ) } ) (C {(test_expect_success)} {(SQ <"commitdiff(0): file copied / new file">)} { (SQ <"cp file file2 &&\n"> <"\t git add file2 &&\n"> <"\t git commit -a -m \"File copied.\" &&\n"> <"\t gitweb_run \"p=.git;a=commitdiff\""> ) } ) (C {(test_expect_success)} {(SQ <"commitdiff(0): mode change and modified">)} { (SQ <"echo \"New line\" >> file2 &&\n"> <"\t test_chmod +x file2 &&\n"> <"\t git commit -a -m \"Mode change and modification.\" &&\n"> <"\t gitweb_run \"p=.git;a=commitdiff\""> ) } ) (C {(test_expect_success)} {(SQ <"commitdiff(0): renamed and modified">)} { (SQ <"cat >file2<<EOF &&\n"> <"Dominus regit me,\n"> <"et nihil mihi deerit.\n"> <"In loco pascuae ibi me collocavit,\n"> <"super aquam refectionis educavit me;\n"> <"animam meam convertit,\n"> <"deduxit me super semitas jusitiae,\n"> <"propter nomen suum.\n"> <"EOF\n"> <"\t git commit -a -m \"File added.\" &&\n"> <"\t git mv file2 file3 &&\n"> <"\t echo \"Propter nomen suum.\" >> file3 &&\n"> <"\t git commit -a -m \"File rename and modification.\" &&\n"> <"\t gitweb_run \"p=.git;a=commitdiff\""> ) } ) (C {(test_expect_success)} {(SQ <"commitdiff(0): renamed, mode change and modified">)} { (SQ <"git mv file3 file2 &&\n"> <"\t echo \"Propter nomen suum.\" >> file2 &&\n"> <"\t test_chmod +x file2 &&\n"> <"\t git commit -a -m \"File rename, mode change and modification.\" &&\n"> <"\t gitweb_run \"p=.git;a=commitdiff\""> ) } ) (C {(test_expect_success)} {(SQ <"setup typechange commits">)} { (SQ <"\n"> <"\techo \"hello world\" > foo &&\n"> <"\techo \"hi planet\" > bar &&\n"> <"\tgit update-index --add foo bar &&\n"> <"\tgit commit -m initial &&\n"> <"\tgit branch initial &&\n"> <"\trm -f foo &&\n"> <"\ttest_ln_s_add bar foo &&\n"> <"\tgit commit -m \"foo symlinked to bar\" &&\n"> <"\tgit branch foo-symlinked-to-bar &&\n"> <"\trm -f foo &&\n"> <"\techo \"how far is the sun?\" > foo &&\n"> <"\tgit update-index foo &&\n"> <"\tgit commit -m \"foo back to file\" &&\n"> <"\tgit branch foo-back-to-file &&\n"> <"\trm -f foo &&\n"> <"\tgit update-index --remove foo &&\n"> <"\tmkdir foo &&\n"> <"\techo \"if only I knew\" > foo/baz &&\n"> <"\tgit update-index --add foo/baz &&\n"> <"\tgit commit -m \"foo becomes a directory\" &&\n"> <"\tgit branch \"foo-becomes-a-directory\" &&\n"> <"\techo \"hello world\" > foo/baz &&\n"> <"\tgit update-index foo/baz &&\n"> <"\tgit commit -m \"foo/baz is the original foo\" &&\n"> <"\tgit branch foo-baz-renamed-from-foo\n"> <"\t"> ) } ) (C {(test_expect_success)} {(SQ <"commitdiff(2): file renamed from foo to foo/baz">)} {(SQ <"gitweb_run \"p=.git;a=commitdiff;hp=initial;h=foo-baz-renamed-from-foo\"">)} ) (C {(test_expect_success)} {(SQ <"commitdiff(2): file renamed from foo/baz to foo">)} {(SQ <"gitweb_run \"p=.git;a=commitdiff;hp=foo-baz-renamed-from-foo;h=initial\"">)} ) (C {(test_expect_success)} {(SQ <"commitdiff(2): directory becomes file">)} {(SQ <"gitweb_run \"p=.git;a=commitdiff;hp=foo-becomes-a-directory;h=initial\"">)} ) (C {(test_expect_success)} {(SQ <"commitdiff(2): file becomes directory">)} {(SQ <"gitweb_run \"p=.git;a=commitdiff;hp=initial;h=foo-becomes-a-directory\"">)} ) (C {(test_expect_success)} {(SQ <"commitdiff(2): file becomes symlink">)} {(SQ <"gitweb_run \"p=.git;a=commitdiff;hp=initial;h=foo-symlinked-to-bar\"">)} ) (C {(test_expect_success)} {(SQ <"commitdiff(2): symlink becomes file">)} {(SQ <"gitweb_run \"p=.git;a=commitdiff;hp=foo-symlinked-to-bar;h=foo-back-to-file\"">)} ) (C {(test_expect_success)} {(SQ <"commitdiff(2): symlink becomes directory">)} {(SQ <"gitweb_run \"p=.git;a=commitdiff;hp=foo-symlinked-to-bar;h=foo-becomes-a-directory\"">)} ) (C {(test_expect_success)} {(SQ <"commitdiff(2): directory becomes symlink">)} {(SQ <"gitweb_run \"p=.git;a=commitdiff;hp=foo-becomes-a-directory;h=foo-symlinked-to-bar\"">)} ) (C {(test_expect_success)} {(SQ <"setup incomplete lines">)} { (SQ <"\n"> <"\tcat >file<<-\\EOF &&\n"> <"\tDominus regit me,\n"> <"\tet nihil mihi deerit.\n"> <"\tIn loco pascuae ibi me collocavit,\n"> <"\tsuper aquam refectionis educavit me;\n"> <"\tanimam meam convertit,\n"> <"\tdeduxit me super semitas jusitiae,\n"> <"\tpropter nomen suum.\n"> <"\tCHANGE_ME\n"> <"\tEOF\n"> <"\tgit commit -a -m \"Preparing for incomplete lines\" &&\n"> <"\techo \"incomplete\" | tr -d \"\\\\012\" >>file &&\n"> <"\tgit commit -a -m \"Add incomplete line\" &&\n"> <"\tgit tag incomplete_lines_add &&\n"> <"\tsed -e s/CHANGE_ME/change_me/ <file >file+ &&\n"> <"\tmv -f file+ file &&\n"> <"\tgit commit -a -m \"Incomplete context line\" &&\n"> <"\tgit tag incomplete_lines_ctx &&\n"> <"\techo \"Dominus regit me,\" >file &&\n"> <"\techo \"incomplete line\" | tr -d \"\\\\012\" >>file &&\n"> <"\tgit commit -a -m \"Change incomplete line\" &&\n"> <"\tgit tag incomplete_lines_chg &&\n"> <"\techo \"Dominus regit me,\" >file &&\n"> <"\tgit commit -a -m \"Remove incomplete line\" &&\n"> <"\tgit tag incomplete_lines_rem\n"> ) } ) (C {(test_expect_success)} {(SQ <"commitdiff(1): addition of incomplete line">)} {(SQ <"\n"> <"\tgitweb_run \"p=.git;a=commitdiff;h=incomplete_lines_add\"\n">)} ) (C {(test_expect_success)} {(SQ <"commitdiff(1): incomplete line as context line">)} {(SQ <"\n"> <"\tgitweb_run \"p=.git;a=commitdiff;h=incomplete_lines_ctx\"\n">)} ) (C {(test_expect_success)} {(SQ <"commitdiff(1): change incomplete line">)} {(SQ <"\n"> <"\tgitweb_run \"p=.git;a=commitdiff;h=incomplete_lines_chg\"\n">)} ) (C {(test_expect_success)} {(SQ <"commitdiff(1): removal of incomplete line">)} {(SQ <"\n"> <"\tgitweb_run \"p=.git;a=commitdiff;h=incomplete_lines_rem\"\n">)} ) (C {(test_expect_success)} {(SQ <"Create a merge">)} { (SQ <"git checkout b &&\n"> <"\t echo \"Branch\" >> b &&\n"> <"\t git add b &&\n"> <"\t git commit -a -m \"On branch\" &&\n"> <"\t git checkout master &&\n"> <"\t git merge b &&\n"> <"\t git tag merge_commit"> ) } ) (C {(test_expect_success)} {(SQ <"commit(0): merge commit">)} {(SQ <"gitweb_run \"p=.git;a=commit\"">)} ) (C {(test_expect_success)} {(SQ <"commitdiff(0): merge commit">)} {(SQ <"gitweb_run \"p=.git;a=commitdiff\"">)} ) (C {(test_expect_success)} {(SQ <"Prepare large commit">)} { (SQ <"git checkout b &&\n"> <"\t echo \"To be changed\" > 01-change &&\n"> <"\t echo \"To be renamed\" > 02-pure-rename-from &&\n"> <"\t echo \"To be deleted\" > 03-delete &&\n"> <"\t echo \"To be renamed and changed\" > 04-rename-from &&\n"> <"\t echo \"To have mode changed\" > 05-mode-change &&\n"> <"\t echo \"File to symlink\" > 06-file-or-symlink &&\n"> <"\t echo \"To be changed and have mode changed\" > 07-change-mode-change\t&&\n"> <"\t git add 0* &&\n"> <"\t git commit -a -m \"Prepare large commit\" &&\n"> <"\t echo \"Changed\" > 01-change &&\n"> <"\t git mv 02-pure-rename-from 02-pure-rename-to &&\n"> <"\t git rm 03-delete && rm -f 03-delete &&\n"> <"\t echo \"A new file\" > 03-new &&\n"> <"\t git add 03-new &&\n"> <"\t git mv 04-rename-from 04-rename-to &&\n"> <"\t echo \"Changed\" >> 04-rename-to &&\n"> <"\t test_chmod +x 05-mode-change &&\n"> <"\t rm -f 06-file-or-symlink &&\n"> <"\t test_ln_s_add 01-change 06-file-or-symlink &&\n"> <"\t echo \"Changed and have mode changed\" > 07-change-mode-change\t&&\n"> <"\t test_chmod +x 07-change-mode-change &&\n"> <"\t git commit -a -m \"Large commit\" &&\n"> <"\t git checkout master"> ) } ) (C {(test_expect_success)} {(SQ <"commit(1): large commit">)} {(SQ <"gitweb_run \"p=.git;a=commit;h=b\"">)} ) (C {(test_expect_success)} {(SQ <"commitdiff(1): large commit">)} {(SQ <"gitweb_run \"p=.git;a=commitdiff;h=b\"">)} ) (C {(test_expect_success)} {(SQ <"side-by-side: addition of incomplete line">)} {(SQ <"\n"> <"\tgitweb_run \"p=.git;a=commitdiff;h=incomplete_lines_add;ds=sidebyside\"\n">)} ) (C {(test_expect_success)} {(SQ <"side-by-side: incomplete line as context line">)} {(SQ <"\n"> <"\tgitweb_run \"p=.git;a=commitdiff;h=incomplete_lines_ctx;ds=sidebyside\"\n">)} ) (C {(test_expect_success)} {(SQ <"side-by-side: changed incomplete line">)} {(SQ <"\n"> <"\tgitweb_run \"p=.git;a=commitdiff;h=incomplete_lines_chg;ds=sidebyside\"\n">)} ) (C {(test_expect_success)} {(SQ <"side-by-side: removal of incomplete line">)} {(SQ <"\n"> <"\tgitweb_run \"p=.git;a=commitdiff;h=incomplete_lines_rem;ds=sidebyside\"\n">)} ) (C {(test_expect_success)} {(SQ <"side-by-side: merge commit">)} {(SQ <"\n"> <"\tgitweb_run \"p=.git;a=commitdiff;h=merge_commit;ds=sidebyside\"\n">)} ) (C {(test_expect_success)} {(SQ <"tags: list of different types of tags">)} { (SQ <"git checkout master &&\n"> <"\t git tag -a -m \"Tag commit object\" tag-commit HEAD &&\n"> <"\t git tag -a -m \"\" tag-commit-nomessage HEAD &&\n"> <"\t git tag -a -m \"Tag tag object\" tag-tag tag-commit &&\n"> <"\t git tag -a -m \"Tag tree object\" tag-tree HEAD^{tree} &&\n"> <"\t git tag -a -m \"Tag blob object\" tag-blob HEAD:file &&\n"> <"\t git tag lightweight/tag-commit HEAD &&\n"> <"\t git tag lightweight/tag-tag tag-commit &&\n"> <"\t git tag lightweight/tag-tree HEAD^{tree} &&\n"> <"\t git tag lightweight/tag-blob HEAD:file &&\n"> <"\t gitweb_run \"p=.git;a=tags\""> ) } ) (C {(test_expect_success)} {(SQ <"tag: Tag to commit object">)} {(SQ <"gitweb_run \"p=.git;a=tag;h=tag-commit\"">)} ) (C {(test_expect_success)} {(SQ <"tag: on lightweight tag (invalid)">)} {(SQ <"gitweb_run \"p=.git;a=tag;h=lightweight/tag-commit\"">)} ) (C {(test_expect_success)} {(SQ <"logs: log (implicit HEAD)">)} {(SQ <"gitweb_run \"p=.git;a=log\"">)} ) (C {(test_expect_success)} {(SQ <"logs: shortlog (implicit HEAD)">)} {(SQ <"gitweb_run \"p=.git;a=shortlog\"">)} ) (C {(test_expect_success)} {(SQ <"logs: history (implicit HEAD, file)">)} {(SQ <"gitweb_run \"p=.git;a=history;f=file\"">)} ) (C {(test_expect_success)} {(SQ <"logs: history (implicit HEAD, non-existent file)">)} {(SQ <"gitweb_run \"p=.git;a=history;f=non-existent\"">)} ) (C {(test_expect_success)} {(SQ <"logs: history (implicit HEAD, deleted file)">)} { (SQ <"git checkout master &&\n"> <"\t echo \"to be deleted\" > deleted_file &&\n"> <"\t git add deleted_file &&\n"> <"\t git commit -m \"Add file to be deleted\" &&\n"> <"\t git rm deleted_file &&\n"> <"\t git commit -m \"Delete file\" &&\n"> <"\t gitweb_run \"p=.git;a=history;f=deleted_file\""> ) } ) (C {(test_expect_success)} {(SQ <"path_info: project">)} {(SQ <"gitweb_run \"\" \"/.git\"">)}) (C {(test_expect_success)} {(SQ <"path_info: project/branch">)} {(SQ <"gitweb_run \"\" \"/.git/b\"">)} ) (C {(test_expect_success)} {(SQ <"path_info: project/branch:file">)} {(SQ <"gitweb_run \"\" \"/.git/master:file\"">)} ) (C {(test_expect_success)} {(SQ <"path_info: project/branch:dir/">)} {(SQ <"gitweb_run \"\" \"/.git/master:foo/\"">)} ) (C {(test_expect_success)} {(SQ <"path_info: project/branch (non-existent)">)} {(SQ <"gitweb_run \"\" \"/.git/non-existent\"">)} ) (C {(test_expect_success)} {(SQ <"path_info: project/branch:filename (non-existent branch)">)} {(SQ <"gitweb_run \"\" \"/.git/non-existent:non-existent\"">)} ) (C {(test_expect_success)} {(SQ <"path_info: project/branch:file (non-existent)">)} {(SQ <"gitweb_run \"\" \"/.git/master:non-existent\"">)} ) (C {(test_expect_success)} {(SQ <"path_info: project/branch:dir/ (non-existent)">)} {(SQ <"gitweb_run \"\" \"/.git/master:non-existent/\"">)} ) (C {(test_expect_success)} {(SQ <"path_info: project/branch:/file">)} {(SQ <"gitweb_run \"\" \"/.git/master:/file\"">)} ) (C {(test_expect_success)} {(SQ <"path_info: project/:/file (implicit HEAD)">)} {(SQ <"gitweb_run \"\" \"/.git/:/file\"">)} ) (C {(test_expect_success)} {(SQ <"path_info: project/:/ (implicit HEAD, top tree)">)} {(SQ <"gitweb_run \"\" \"/.git/:/\"">)} ) (C {(test_expect_success)} {(SQ <"feeds: OPML">)} {(SQ <"gitweb_run \"a=opml\"">)}) (C {(test_expect_success)} {(SQ <"feed: RSS">)} {(SQ <"gitweb_run \"p=.git;a=rss\"">)}) (C {(test_expect_success)} {(SQ <"feed: Atom">)} {(SQ <"gitweb_run \"p=.git;a=atom\"">)}) (C {(test_expect_success)} {(SQ <"encode(commit): utf8">)} { (SQ <". \"$TEST_DIRECTORY\"/t3901-utf8.txt &&\n"> <"\t test_when_finished \"GIT_AUTHOR_NAME=\\\"A U Thor\\\"\" &&\n"> <"\t test_when_finished \"GIT_COMMITTER_NAME=\\\"C O Mitter\\\"\" &&\n"> <"\t echo \"UTF-8\" >> file &&\n"> <"\t git add file &&\n"> <"\t git commit -F \"$TEST_DIRECTORY\"/t3900/1-UTF-8.txt &&\n"> <"\t gitweb_run \"p=.git;a=commit\""> ) } ) (C {(test_expect_success)} {(SQ <"encode(commit): iso-8859-1">)} { (SQ <". \"$TEST_DIRECTORY\"/t3901-8859-1.txt &&\n"> <"\t test_when_finished \"GIT_AUTHOR_NAME=\\\"A U Thor\\\"\" &&\n"> <"\t test_when_finished \"GIT_COMMITTER_NAME=\\\"C O Mitter\\\"\" &&\n"> <"\t echo \"ISO-8859-1\" >> file &&\n"> <"\t git add file &&\n"> <"\t test_config i18n.commitencoding ISO-8859-1 &&\n"> <"\t git commit -F \"$TEST_DIRECTORY\"/t3900/ISO8859-1.txt &&\n"> <"\t gitweb_run \"p=.git;a=commit\""> ) } ) (C {(test_expect_success)} {(SQ <"encode(log): utf-8 and iso-8859-1">)} {(SQ <"gitweb_run \"p=.git;a=log\"">)} ) (C {(test_expect_success)} {(SQ <"opt: log --no-merges">)} {(SQ <"gitweb_run \"p=.git;a=log;opt=--no-merges\"">)} ) (C {(test_expect_success)} {(SQ <"opt: atom --no-merges">)} {(SQ <"gitweb_run \"p=.git;a=log;opt=--no-merges\"">)} ) (C {(test_expect_success)} {(SQ <"opt: \"file\" history --no-merges">)} {(SQ <"gitweb_run \"p=.git;a=history;f=file;opt=--no-merges\"">)} ) (C {(test_expect_success)} {(SQ <"opt: log --no-such-option (invalid option)">)} {(SQ <"gitweb_run \"p=.git;a=log;opt=--no-such-option\"">)} ) (C {(test_expect_success)} {(SQ <"opt: tree --no-merges (invalid option for action)">)} {(SQ <"gitweb_run \"p=.git;a=tree;opt=--no-merges\"">)} ) (C {(test_expect_success)} {(SQ <"URL: no project URLs, no base URL">)} {(SQ <"gitweb_run \"p=.git;a=summary\"">)} ) (C {(test_expect_success)} {(SQ <"URL: project URLs via gitweb.url">)} { (SQ <"git config --add gitweb.url git://example.com/git/trash.git &&\n"> <" git config --add gitweb.url http://example.com/git/trash.git &&\n"> <" gitweb_run \"p=.git;a=summary\""> ) } ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(.git/cloneurl)} spids:[1648]) (HereDoc op_id: Redir_DLess fd: -1 body: {("git://example.com/git/trash.git\n") ("http://example.com/git/trash.git\n")} do_expansion: False here_end: EOF was_filled: True spids: [1651] ) ] ) (C {(test_expect_success)} {(SQ <"URL: project URLs via cloneurl file">)} {(SQ <"gitweb_run \"p=.git;a=summary\"">)} ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_DGreat fd:-1 arg_word:{(gitweb_config.perl)} spids:[1680]) (HereDoc op_id: Redir_DLess fd: -1 body: {("\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") } do_expansion: False here_end: EOF was_filled: True spids: [1683] ) ] ) (C {(test_expect_success)} {(SQ <"config override: projects list (implicit)">)} {(SQ <gitweb_run>)}) (C {(test_expect_success)} {(SQ <"config override: tree view, features not overridden in repo config">)} {(SQ <"gitweb_run \"p=.git;a=tree\"">)} ) (C {(test_expect_success)} {(SQ <"config override: tree view, features disabled in repo config">)} { (SQ <"git config gitweb.blame no &&\n"> <"\t git config gitweb.snapshot none &&\n"> <"\t git config gitweb.avatar gravatar &&\n"> <"\t gitweb_run \"p=.git;a=tree\""> ) } ) (C {(test_expect_success)} {(SQ <"config override: tree view, features enabled in repo config (1)">)} { (SQ <"git config gitweb.blame yes &&\n"> <"\t git config gitweb.snapshot \"zip,tgz, tbz2\" &&\n"> <"\t gitweb_run \"p=.git;a=tree\""> ) } ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(.git/config)} spids:[1755]) (HereDoc op_id: Redir_DLess fd: -1 body: {("# testing noval and alternate separator\n") ("[gitweb]\n") ("\tblame\n") ("\tsnapshot = zip tgz\n") } do_expansion: False here_end: EOF was_filled: True spids: [1758] ) ] ) (C {(test_expect_success)} {(SQ <"config override: tree view, features enabled in repo config (2)">)} {(SQ <"gitweb_run \"p=.git;a=tree\"">)} ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_DGreat fd:-1 arg_word:{(gitweb_config.perl)} spids:[1786]) (HereDoc op_id: Redir_DLess fd: -1 body: {("\n") ("# enable search\n") ("$feature{'search'}{'default'} = [1];\n") ("$feature{'grep'}{'default'} = [1];\n") ("$feature{'pickaxe'}{'default'} = [1];\n") } do_expansion: False here_end: EOF was_filled: True spids: [1789] ) ] ) (C {(test_expect_success)} {(SQ <"search: preparation">)} { (SQ <"echo \"1st MATCH\" >>file &&\n"> <"\t echo \"2nd MATCH\" >>file &&\n"> <"\t echo \"MATCH\" >>bar &&\n"> <"\t git add file bar &&\n"> <"\t git commit -m \"Added MATCH word\""> ) } ) (C {(test_expect_success)} {(SQ <"search: commit author">)} {(SQ <"gitweb_run \"p=.git;a=search;h=HEAD;st=author;s=A+U+Thor\"">)} ) (C {(test_expect_success)} {(SQ <"search: commit message">)} {(SQ <"gitweb_run \"p=.git;a=search;h=HEAD;st=commitr;s=MATCH\"">)} ) (C {(test_expect_success)} {(SQ <"search: grep">)} {(SQ <"gitweb_run \"p=.git;a=search;h=HEAD;st=grep;s=MATCH\"">)} ) (C {(test_expect_success)} {(SQ <"search: pickaxe">)} {(SQ <"gitweb_run \"p=.git;a=search;h=HEAD;st=pickaxe;s=MATCH\"">)} ) (C {(test_expect_success)} {(SQ <"search: projects">)} {(SQ <"gitweb_run \"a=project_list;s=.git\"">)} ) (C {(test_expect_success)} {(SQ <"README.html with non-ASCII characters (utf-8)">)} { (SQ <"echo \"<b>UTF-8 example:</b><br />\" > .git/README.html &&\n"> <"\t cat \"$TEST_DIRECTORY\"/t3900/1-UTF-8.txt >> .git/README.html &&\n"> <"\t gitweb_run \"p=.git;a=summary\""> ) } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:highlight_version) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [{(highlight)} {(--version)}] redirects: [ (Redir op_id: Redir_Less fd: -1 arg_word: {(/dev/null)} spids: [1926] ) (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [1929] ) ] ) ] ) left_token: <Left_CommandSub "$("> spids: [1921 1931] ) } spids: [1920] ) ] spids: [1920] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} {($ VSub_QMark "$?")} {(-eq)} {(127)} {(Lit_Other "]")}) terminator: <Op_Semi ";"> ) ] action: [(C {(say)} {(DQ ("Skipping syntax highlighting tests: 'highlight' not found"))})] spids: [-1 1946] ) (if_arm cond: [ (Sentence child: (C {(test)} {(-z)} {(DQ ($ VSub_Name "$highlight_version"))}) terminator: <Op_Semi ";"> ) ] action: [ (C {(say)} {(DQ ("Skipping syntax highlighting tests: incorrect 'highlight' found"))}) ] spids: [1955 1966] ) ] else_action: [ (C {(test_set_prereq)} {(HIGHLIGHT)}) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_DGreat fd:-1 arg_word:{(gitweb_config.perl)} spids:[1985]) (HereDoc op_id: Redir_DLessDash fd: -1 body: {("our $highlight_bin = \"highlight\";\n") ("$feature{'highlight'}{'override'} = 1;\n") } do_expansion: False here_end: EOF was_filled: True spids: [1988] ) ] ) ] spids: [1975 1992] ) (C {(test_expect_success)} {(HIGHLIGHT)} {(SQ <"syntax highlighting (no highlight, unknown syntax)">)} {(SQ <"git config gitweb.highlight yes &&\n"> <"\t gitweb_run \"p=.git;a=blob;f=file\"">)} ) (C {(test_expect_success)} {(HIGHLIGHT)} {(SQ <"syntax highlighting (highlighted, shell script)">)} { (SQ <"git config gitweb.highlight yes &&\n"> <"\t echo \"#!/usr/bin/sh\" > test.sh &&\n"> <"\t git add test.sh &&\n"> <"\t git commit -m \"Add test.sh\" &&\n"> <"\t gitweb_run \"p=.git;a=blob;f=test.sh\""> ) } ) (C {(test_expect_success)} {(HIGHLIGHT)} {(SQ <"syntax highlighting (highlighter language autodetection)">)} { (SQ <"git config gitweb.highlight yes &&\n"> <"\t echo \"#!/usr/bin/perl\" > test &&\n"> <"\t git add test &&\n"> <"\t git commit -m \"Add test\" &&\n"> <"\t gitweb_run \"p=.git;a=blob;f=test\""> ) } ) (AndOr children: [ (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_DGreat fd:-1 arg_word:{(gitweb_config.perl)} spids:[2064]) (HereDoc op_id: Redir_DLess fd: -1 body: {("$feature{'forks'}{'default'} = [1];\n")} do_expansion: False here_end: EOF was_filled: True spids: [2067] ) ] ) (C {(test_expect_success)} {(SQ <"forks: prepare">)} { (SQ <"git init --bare foo.git &&\n"> <"\t git --git-dir=foo.git --work-tree=. add file &&\n"> <"\t git --git-dir=foo.git --work-tree=. commit -m \"Initial commit\" &&\n"> <"\t echo \"foo\" > foo.git/description &&\n"> <"\t mkdir -p foo &&\n"> <"\t (cd foo &&\n"> <"\t git clone --shared --bare ../foo.git foo-forked.git &&\n"> <"\t echo \"fork of foo\" > foo-forked.git/description)"> ) } ) ] op_id: Op_DAmp ) (C {(test_expect_success)} {(SQ <"forks: projects list">)} {(SQ <gitweb_run>)}) (C {(test_expect_success)} {(SQ <"forks: forks action">)} {(SQ <"gitweb_run \"p=foo.git;a=forks\"">)}) (AndOr children: [ (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_DGreat fd:-1 arg_word:{(gitweb_config.perl)} spids:[2135]) (HereDoc op_id: Redir_DLessDash fd: -1 body: {("# we don't test _setting_ content tags, so any true value is good\n") ("$feature{'ctags'}{'default'} = ['ctags_script.cgi'];\n") } do_expansion: False here_end: EOF was_filled: True spids: [2138] ) ] ) (C {(test_expect_success)} {(SQ <"ctags: tag cloud in projects list">)} { (SQ <"mkdir .git/ctags &&\n"> <"\t echo \"2\" > .git/ctags/foo &&\n"> <"\t echo \"1\" > .git/ctags/bar &&\n"> <"\tgitweb_run"> ) } ) ] op_id: Op_DAmp ) (C {(test_expect_success)} {(SQ <"ctags: search projects by existing tag">)} {(SQ <"gitweb_run \"by_tag=foo\"">)} ) (C {(test_expect_success)} {(SQ <"ctags: search projects by non existent tag">)} {(SQ <"gitweb_run \"by_tag=non-existent\"">)} ) (C {(test_expect_success)} {(SQ <"ctags: malformed tag weights">)} { (SQ <"mkdir -p .git/ctags &&\n"> <"\t echo \"not-a-number\" > .git/ctags/nan &&\n"> <"\t echo \"not-a-number-2\" > .git/ctags/nan2 &&\n"> <"\t echo \"0.1\" >.git/ctags/floating-point &&\n"> <"\t gitweb_run"> ) } ) (C {(test_expect_success)} {(SQ <"categories: projects list, only default category">)} { (SQ <"echo \"\\$projects_list_group_categories = 1;\" >>gitweb_config.perl &&\n"> <"\t gitweb_run"> ) } ) (C {(test_expect_success)} {(SQ <"unborn HEAD: \"summary\" page (with \"heads\" subview)">)} { (SQ <"{\n"> <"\t\tgit checkout orphan_branch ||\n"> <"\t\tgit checkout --orphan orphan_branch\n"> <"\t } &&\n"> <"\t test_when_finished \"git checkout master\" &&\n"> <"\t gitweb_run \"p=.git;a=summary\""> ) } ) (C {(test_done)}) ] )