* Add test suite for preprocessor directive parsing.
parent
78323806ee
commit
bf228acd0a
|
@ -31,8 +31,9 @@ ikiwiki (2.2) UNRELEASED; urgency=low
|
|||
* Apply a patch from Carl Worth adding support for using globs in link()
|
||||
in a PageSpec.
|
||||
* Explode some of the more insane regexps.
|
||||
* Add test suite for preprocessor directive parsing.
|
||||
|
||||
-- Joey Hess <joeyh@debian.org> Fri, 01 Jun 2007 19:39:38 -0400
|
||||
-- Joey Hess <joeyh@debian.org> Sat, 02 Jun 2007 01:03:37 -0400
|
||||
|
||||
ikiwiki (2.1) unstable; urgency=low
|
||||
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
#!/usr/bin/perl
|
||||
use warnings;
|
||||
use strict;
|
||||
use Test::More tests => 14;
|
||||
|
||||
BEGIN { use_ok("IkiWiki"); }
|
||||
|
||||
$IkiWiki::hooks{preprocess}{foo}{call}=sub {
|
||||
my @bits;
|
||||
while (@_) {
|
||||
my $key=shift;
|
||||
my $value=shift;
|
||||
next if $key eq 'page' || $key eq 'destpage' || $key eq 'preview';
|
||||
if (length $value) {
|
||||
push @bits, "$key => $value";
|
||||
}
|
||||
else {
|
||||
push @bits, $key;
|
||||
}
|
||||
}
|
||||
return "foo(".join(", ", @bits).")";
|
||||
};
|
||||
|
||||
is(IkiWiki::preprocess("foo", "foo", "[[foo]]", 0, 0), "[[foo]]", "not wikilink");
|
||||
is(IkiWiki::preprocess("foo", "foo", "[[foo ]]", 0, 0), "foo()", "simple");
|
||||
is(IkiWiki::preprocess("foo", "foo", "[[foo a=1]]", 0, 0), "foo(a => 1)");
|
||||
is(IkiWiki::preprocess("foo", "foo", "[[foo ]] then [[foo a=2]]", 0, 0),
|
||||
"foo() then foo(a => 2)");
|
||||
is(IkiWiki::preprocess("foo", "foo", "[[foo b c \"d\"]]", 0, 0), "foo(b, c, d)");
|
||||
is(IkiWiki::preprocess("foo", "foo", "[[foo a=1 b c=1]]", 0, 0),
|
||||
"foo(a => 1, b, c => 1)");
|
||||
is(IkiWiki::preprocess("foo", "foo", "[[foo a=1 a=2 a=3]]", 0, 0),
|
||||
"foo(a => 1, a => 2, a => 3)", "dup item");
|
||||
is(IkiWiki::preprocess("foo", "foo", '[[foo a="[[bracketed]]" b=1]]', 0, 0),
|
||||
"foo(a => [[bracketed]], b => 1)");
|
||||
my $multiline="here is my \"first\"
|
||||
!! [[multiline ]] !!
|
||||
string!";
|
||||
is(IkiWiki::preprocess("foo", "foo", '[[foo a="""'.$multiline.'"""]]', 0, 0),
|
||||
"foo(a => $multiline)");
|
||||
is(IkiWiki::preprocess("foo", "foo", '[[foo """'.$multiline.'"""]]', 0, 0),
|
||||
"foo($multiline)");
|
||||
is(IkiWiki::preprocess("foo", "foo", '[[foo a="""'.$multiline.'""" b="foo"]]', 0, 0),
|
||||
"foo(a => $multiline, b => foo)");
|
||||
is(IkiWiki::preprocess("foo", "foo", '[[foo a="""'."\n".$multiline."\n".'""" b="foo"]]', 0, 0),
|
||||
"foo(a => $multiline, b => foo)", "leading/trailing newline stripped");
|
||||
|
||||
TODO: {
|
||||
local $TODO = "nested strings not yet implemented";
|
||||
|
||||
$multiline='here is a string containing another [[foo val="""string""]]';
|
||||
is(IkiWiki::preprocess("foo", "foo", '[[foo a="""'.$multiline.'"""]]', 0, 0),
|
||||
"foo(a=> $multiline)", "nested multiline strings");
|
||||
}
|
Loading…
Reference in New Issue