]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - t/inline.t
describe simplified solution for simplified scenario.
[git.ikiwiki.info.git] / t / inline.t
index 726227b8f0a7e88419ea2986ab7537063174773d..3a4450365ff2ed1305a615b827b25802e1e70ec9 100755 (executable)
@@ -1,11 +1,32 @@
 #!/usr/bin/perl
 use warnings;
 use strict;
+use Cwd qw(getcwd);
 use Test::More;
 use IkiWiki;
 
+my $installed = $ENV{INSTALLED_TESTS};
+
+my @command;
+if ($installed) {
+       @command = qw(ikiwiki);
+}
+else {
+       ok(! system("make -s ikiwiki.out"));
+       @command = ("perl", "-I".getcwd, qw(./ikiwiki.out
+               --underlaydir=underlays/basewiki
+               --set underlaydirbase=underlays
+               --templatedir=templates));
+}
+
+push @command, qw(--set usedirs=0 --plugin inline
+       --url=http://example.com --cgiurl=http://example.com/ikiwiki.cgi
+       --rss --atom t/tmp/in t/tmp/out --verbose);
+
 my $blob;
 
+my $add_new_post = gettext("Add a new post titled:");
+
 ok(! system("rm -rf t/tmp"));
 ok(! system("mkdir t/tmp"));
 
@@ -20,11 +41,15 @@ sub write_old_file {
 write_old_file("protagonists.mdwn",
        '[[!inline pages="protagonists/*" rootpage="protagonists/new"]]');
 write_old_file("friends.mdwn",
-       '[[!inline pages="friends/*" postform=yes sort=title show=2]]');
+       '[[!inline pages="friends/*" postform=yes sort=title limit=2]]');
 write_old_file("antagonists.mdwn",
        '[[!inline pages="antagonists/*"]]');
+# using old spelling of "limit" ("show") to verify backwards compat
 write_old_file("enemies.mdwn",
        '[[!inline pages="enemies/*" postform=no rootpage=enemies sort=title reverse=yes show=2]]');
+# to test correct processing of ../
+write_old_file("blah/blah/enemies.mdwn",
+       '[[!inline pages="enemies/*" postform=no rootpage=enemies sort=title reverse=yes show=2]]');
 foreach my $page (qw(protagonists/shepard protagonists/link
                antagonists/saren antagonists/ganondorf
                friends/garrus friends/liara friends/midna friends/telma
@@ -32,37 +57,49 @@ foreach my $page (qw(protagonists/shepard protagonists/link
                enemies/zant)) {
        write_old_file("$page.mdwn", "this page is {$page}");
 }
+# test cross-linking between pages as rendered in RSS
+write_old_file("enemies/zant.mdwn", "this page is {enemies/zant}\n\n".
+       "Zant hates [[friends/Midna]].");
 
-ok(! system("make -s ikiwiki.out"));
-
-my $command = "perl -I. ./ikiwiki.out -set usedirs=0 -plugin inline -url=http://example.com -cgiurl=http://example.com/ikiwiki.cgi -rss -atom -underlaydir=underlays/basewiki -set underlaydirbase=underlays -templatedir=templates t/tmp/in t/tmp/out -verbose";
-
-ok(! system($command));
-
-ok(! system("$command -refresh"));
+ok(! system(@command));
+ok(! system(@command, "--refresh"));
 
 $blob = readfile("t/tmp/out/protagonists.html");
-like($blob, qr{Add a new post}, 'rootpage=yes gives postform');
+like($blob, qr{\Q$add_new_post\E}, 'rootpage=yes gives postform');
 like($blob, qr{<input type="hidden" name="from" value="protagonists/new"},
        'explicit rootpage is /protagonists/new');
 
 $blob = readfile("t/tmp/out/friends.html");
-like($blob, qr{Add a new post}, 'postform=yes forces postform');
+like($blob, qr{\Q$add_new_post\E}, 'postform=yes forces postform');
 like($blob, qr{<input type="hidden" name="from" value="friends"},
        'implicit rootpage is /friends');
-like($blob, qr[this page is {friends/garrus}.*this page is {friends/liara}]s,
+like($blob, qr[this page is \{friends/garrus}.*this page is \{friends/liara}]s,
        'first two pages in desired sort order are present');
 unlike($blob, qr{friends/(?:midna|telma)},
-       'pages excluded by show should not be present');
+       'pages excluded by limit should not be present');
 
 $blob = readfile("t/tmp/out/antagonists.html");
-unlike($blob, qr{Add a new post}, 'default is no postform');
+unlike($blob, qr{\Q$add_new_post\E}, 'default is no postform');
 
 $blob = readfile("t/tmp/out/enemies.html");
-unlike($blob, qr{Add a new post}, 'postform=no forces no postform');
-like($blob, qr[this page is {enemies/zant}.*this page is {enemies/rachni}]s,
+unlike($blob, qr{\Q$add_new_post\E}, 'postform=no forces no postform');
+like($blob, qr[this page is \{enemies/zant}.*this page is \{enemies/rachni}]s,
        'first two pages in reversed sort order are present');
 unlike($blob, qr{enemies/(?:benezia|geth)},
        'pages excluded by show should not be present');
 
+$blob = readfile("t/tmp/out/enemies.rss");
+like($blob, qr[this page is \{enemies/zant}.*this page is \{enemies/rachni}]s,
+       'first two pages in reversed sort order are present');
+like($blob,
+       qr[Zant hates &lt;a href=(?:['"]|&quot;)http://example\.com/friends/midna.html(?:['"]|&quot;)&gt;Midna&lt;/a&gt;]s,
+       'link is correctly relative');
+
+$blob = readfile("t/tmp/out/blah/blah/enemies.rss");
+like($blob, qr[this page is \{enemies/zant}.*this page is \{enemies/rachni}]s,
+       'first two pages in reversed sort order are present');
+like($blob,
+       qr[Zant hates &lt;a href=(?:['"]|&quot;)http://example\.com/friends/midna.html(?:['"]|&quot;)&gt;Midna&lt;/a&gt;]s,
+       'link is correctly relative');
+
 done_testing;