#!/usr/bin/perl
package IkiWiki;
use warnings;
use strict;
use Test::More tests => 18;
BEGIN { use_ok("IkiWiki"); }
BEGIN { use_ok("IkiWiki::Render"); }
BEGIN { use_ok("IkiWiki::Plugin::templatebody"); }
BEGIN { use_ok("IkiWiki::Plugin::mdwn"); }
BEGIN { use_ok("IkiWiki::Plugin::tag"); }
BEGIN { use_ok("IkiWiki::Plugin::template"); }
sub assert_pagespec_matches {
my $page = shift;
my $spec = shift;
my @params = @_;
@params = (location => 'index') unless @params;
my $res = pagespec_match($page, $spec, @params);
if ($res) {
pass($res);
}
else {
fail($res);
}
}
sub assert_pagespec_doesnt_match {
my $page = shift;
my $spec = shift;
my @params = @_;
@params = (location => 'index') unless @params;
my $res = pagespec_match($page, $spec, @params);
if (ref $res && $res->isa("IkiWiki::ErrorReason")) {
fail($res);
}
elsif ($res) {
fail($res);
}
else {
pass($res);
}
}
ok(! system("rm -rf t/tmp; mkdir t/tmp t/tmp/src t/tmp/dst"));
$config{verbose} = 1;
$config{srcdir} = 't/tmp/src';
$config{underlaydir} = 't/tmp/src';
$config{destdir} = 't/tmp/dst';
$config{underlaydirbase} = '.';
$config{templatedir} = 'templates';
$config{usedirs} = 1;
$config{htmlext} = 'html';
$config{wiki_file_chars} = "-[:alnum:]+/.:_";
$config{default_pageext} = "mdwn";
$config{wiki_file_prune_regexps} = [qr/^\./];
is(checkconfig(), 1);
%oldrenderedfiles=%pagectime=();
%pagesources=%pagemtime=%oldlinks=%links=%depends=%typedlinks=%oldtypedlinks=
%destsources=%renderedfiles=%pagecase=%pagestate=();
$pagesources{index} = "index.mdwn";
$pagemtime{index} = $pagectime{index} = 1000000;
writefile("index.mdwn", "t/tmp/src", <
hello, world
}); like($content{index}, qr{greetings, earthlings
}); assert_pagespec_matches('index', 'tagged(greeting)'); # The documentation from the templatebody-using page is not expanded unlike($content{index}, qr{This template says hello to someone}); assert_pagespec_doesnt_match('index', 'tagged(documentation)'); # In the templatebody-using page, the documentation is expanded like($content{'templates/deftmpl'}, qr{This template says hello to someone}); assert_pagespec_matches('templates/deftmpl', 'tagged(documentation)'); # In the templatebody-using page, the template is *not* expanded unlike($content{'templates/deftmpl'}, qr{hello, world
}); unlike($content{'templates/deftmpl'}, qr{greetings, earthlings
}); assert_pagespec_doesnt_match('templates/deftmpl', 'tagged(greeting)'); 1;