]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - t/git-cgi.t
t/img.t: Give better diagnostics if we can't load an image
[git.ikiwiki.info.git] / t / git-cgi.t
index 7058c33e34f26b84326c1e4a8a0f3a2a13fad84b..ee47261edd525497f9332c5dfe077491ef7c8fc7 100755 (executable)
@@ -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/*',
@@ -142,7 +142,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 +163,7 @@ 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');
 
        unless ($installed) {
                ok(! system(qw(cp -pRL doc/wikiicons t/tmp/in/doc/)));
@@ -177,6 +183,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 +224,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 +291,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 +312,8 @@ 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});
 }
 
 test();