]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/commitdiff
add test case for unterminated """ string
authorJoey Hess <joey@gnu.kitenet.net>
Fri, 5 Jun 2009 20:10:08 +0000 (16:10 -0400)
committerJoey Hess <joey@gnu.kitenet.net>
Fri, 5 Jun 2009 20:10:08 +0000 (16:10 -0400)
A directive that contains an unterminated """ string should not
cause each word of the string to be treated as a bare word. Instead,
the directive should fail to parse.

There are two tests. One just checks that a complete directive
containing such a string fails to parse. The other checks for a case
where a directive ends with a very long unterminated """ string,
and the directive is itself not closed. While this test won't fail,
it does trigger a nasty perl warning.

t/preprocess.t

index 7699f56baaa77737115fabe033e73e06383966e8..e5026ed64b575ba8ed2215e468bb322d4086f020 100755 (executable)
@@ -1,7 +1,7 @@
 #!/usr/bin/perl
 use warnings;
 use strict;
 #!/usr/bin/perl
 use warnings;
 use strict;
-use Test::More tests => 19;
+use Test::More tests => 21;
 
 BEGIN { use_ok("IkiWiki"); }
 
 
 BEGIN { use_ok("IkiWiki"); }
 
@@ -51,6 +51,11 @@ is(IkiWiki::preprocess("foo", "foo", '[[foo a="""'.$multiline.'""" b="foo"]]', 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");
        "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");
+my $long='[[foo a="""'.("a" x 100000).'';
+is(IkiWiki::preprocess("foo", "foo", $long, 0, 0), $long,
+       "unterminated triple-quoted string inside unterminated directive(should not warn about over-recursion)");
+is(IkiWiki::preprocess("foo", "foo", $long."]]", 0, 0), $long."]]",
+       "unterminated triple-quoted string is not treated as a bare word");
 
 TODO: {
        local $TODO = "nested strings not yet implemented";
 
 TODO: {
        local $TODO = "nested strings not yet implemented";