X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/ad04dac19b1fbba33cbb7dadb17ae0ef0423b2e1..73cfa618b4e9c91688cbf3f3f035e1774a0c2947:/t/git-cgi.t diff --git a/t/git-cgi.t b/t/git-cgi.t index 7058c33e3..79cd62f61 100755 --- a/t/git-cgi.t +++ b/t/git-cgi.t @@ -35,7 +35,7 @@ my $installed = $ENV{INSTALLED_TESTS}; my @command; if ($installed) { - @command = qw(ikiwiki); + @command = qw(ikiwiki --plugin inline); } else { ok(! system("make -s ikiwiki.out")); @@ -62,7 +62,7 @@ sub write_setup_file { cgiurl => 'http://example.com/cgi-bin/ikiwiki.cgi', cgi_wrapper => getcwd.'/t/tmp/ikiwiki.cgi', cgi_wrappermode => '0751', - add_plugins => [qw(anonok lockedit recentchanges)], + add_plugins => [qw(anonok attachment lockedit recentchanges)], disable_plugins => [qw(emailauth openid passwordauth)], anonok_pagespec => 'writable/*', locked_pages => '!writable/*', @@ -112,6 +112,7 @@ sub run_cgi { my $cgi = CGI->new($args{params}); my $query_string = $cgi->query_string(); + diag $query_string; if ($method eq 'POST') { $defaults{REQUEST_METHOD} = 'POST'; @@ -142,7 +143,12 @@ sub run_git { my ($in, $out); ok(run(['git', @$args], \$in, \$out, init => sub { chdir 't/tmp/in' or die $!; - $ENV{EMAIL} = 'nobody@ikiwiki-tests.invalid'; + my $name = 'The IkiWiki Tests'; + my $email = 'nobody@ikiwiki-tests.invalid'; + if ($args->[0] eq 'commit') { + $ENV{GIT_AUTHOR_NAME} = $ENV{GIT_COMMITTER_NAME} = $name; + $ENV{GIT_AUTHOR_EMAIL} = $ENV{GIT_COMMITTER_EMAIL} = $email; + } }), "$desc at $filename:$line"); return $out; } @@ -158,6 +164,11 @@ sub test { write_old_file('doc/writable/one.mdwn', 't/tmp/in', 'This is the first test page'); write_old_file('doc/writable/two.mdwn', 't/tmp/in', 'This is the second test page'); write_old_file('doc/writable/three.mdwn', 't/tmp/in', 'This is the third test page'); + write_old_file('doc/writable/three.bin', 't/tmp/in', 'An attachment'); + write_old_file('doc/writable/blog.mdwn', 't/tmp/in', + '[[!inline pages="writable/blog/*" actions=yes rootpage=writable/blog postform=yes show=0]]'); + write_old_file('doc/writable/__172__blog.mdwn', 't/tmp/in', + '[[!inline pages="writable/¬blog/*" actions=yes rootpage="writable/¬blog" postform=yes show=0]]'); unless ($installed) { ok(! system(qw(cp -pRL doc/wikiicons t/tmp/in/doc/))); @@ -177,6 +188,10 @@ sub test { like($content, qr{This is the first test page}); my $orig_sha1 = run_git(['rev-list', '--max-count=1', 'HEAD']); + # We have to wait 1 second here so that new writes are guaranteed + # to have a strictly larger mtime. + sleep 1; + # Test the git hook, which accepts git commits writefile('doc/writable/one.mdwn', 't/tmp/in', 'This is new content for the first test page'); @@ -214,11 +229,16 @@ sub test { # Another edit writefile('doc/writable/three.mdwn', 't/tmp/in', 'Also new content for the third page'); + unlink('t/tmp/in/doc/writable/three.bin'); + writefile('doc/writable/three.bin', 't/tmp/in', + 'Changed attachment'); run_git(['add', '.']); run_git(['commit', '-m', 'Git commit']); ok(-e 't/tmp/out/writable/three/index.html'); $content = readfile('t/tmp/out/writable/three/index.html'); like($content, qr{Also new content for the third page}); + $content = readfile('t/tmp/out/writable/three.bin'); + like($content, qr{Changed attachment}); my $third_revertable_sha1 = run_git(['rev-list', '--max-count=1', 'HEAD']); isnt($orig_sha1, $third_revertable_sha1); isnt($second_revertable_sha1, $third_revertable_sha1); @@ -276,6 +296,10 @@ sub test { $content = readfile('t/tmp/in/two.mdwn'); like($content, qr{Here is new content for the second page}); + # We have to wait 1 second here so that new writes are guaranteed + # to have a strictly larger mtime. + sleep 1; + # This one can legitimately be reverted $content = run_cgi(method => 'post', params => { @@ -293,6 +317,39 @@ sub test { ok(-e 't/tmp/out/writable/three/index.html'); $content = readfile('t/tmp/out/writable/three/index.html'); like($content, qr{This is the third test page}); + $content = readfile('t/tmp/out/writable/three.bin'); + like($content, qr{An attachment}); + + $content = readfile('t/tmp/out/writable/blog/index.html'); + like($content, qr{ 'get', + params => { + do => 'blog', + from => 'writable/blog', + subpage => '1', + title => 'hello', + }, + ); + like($content, qr{}); + + # This attempts to reproduce the bug from + # doc/bugs/About___37__2F_problem, in which you can't make new posts + # to a blog with a non-ASCII rootpage. + $content = readfile('t/tmp/out/writable/__172__blog/index.html'); + like($content, qr{ 'get', + params => { + do => 'blog', + from => 'writable/¬blog', + subpage => '1', + title => 'hello', + }, + ); + like($content, qr{}); + unlike($content, qr{Error: bad page name}); + } } test();