2008-07-24 00:14:20 +02:00
|
|
|
#!/usr/bin/perl
|
|
|
|
use warnings;
|
|
|
|
use strict;
|
2008-07-24 18:36:10 +02:00
|
|
|
use Test::More tests => 21;
|
2008-07-24 00:14:20 +02:00
|
|
|
use Encode;
|
|
|
|
|
|
|
|
BEGIN { use_ok("IkiWiki"); }
|
|
|
|
BEGIN { use_ok("IkiWiki::Plugin::link"); }
|
|
|
|
|
|
|
|
%config=IkiWiki::defaultconfig();
|
|
|
|
$config{srcdir}=$config{destdir}="/dev/null";
|
|
|
|
IkiWiki::checkconfig();
|
|
|
|
|
2009-01-27 00:00:00 +01:00
|
|
|
# tests of the link plugin's renamepage function
|
2008-07-24 00:14:20 +02:00
|
|
|
sub try {
|
|
|
|
my ($page, $oldpage, $newpage, $content)=@_;
|
|
|
|
|
|
|
|
%IkiWiki::pagecase=();
|
|
|
|
%links=();
|
|
|
|
$IkiWiki::config{userdir}="foouserdir";
|
|
|
|
foreach my $page ($page, $oldpage, $newpage) {
|
|
|
|
$IkiWiki::pagecase{lc $page}=$page;
|
|
|
|
$links{$page}=[];
|
|
|
|
}
|
|
|
|
|
2009-01-27 00:00:00 +01:00
|
|
|
IkiWiki::Plugin::link::renamepage(
|
2008-07-24 00:14:20 +02:00
|
|
|
page => $page,
|
|
|
|
oldpage => $oldpage,
|
|
|
|
newpage => $newpage,
|
|
|
|
content => $content,
|
|
|
|
);
|
|
|
|
}
|
|
|
|
is(try("z", "foo" => "bar", "[[xxx]]"), "[[xxx]]"); # unrelated link
|
|
|
|
is(try("z", "foo" => "bar", "[[bar]]"), "[[bar]]"); # link already to new page
|
|
|
|
is(try("z", "foo" => "bar", "[[foo]]"), "[[bar]]"); # basic conversion to new page name
|
|
|
|
is(try("z", "foo" => "bar", "[[/foo]]"), "[[/bar]]"); # absolute link
|
2008-07-24 00:57:27 +02:00
|
|
|
is(try("z", "foo" => "bar", "[[Foo]]"), "[[Bar]]"); # preserve case
|
2008-07-24 01:03:37 +02:00
|
|
|
is(try("z", "x/foo" => "x/bar", "[[x/Foo]]"), "[[x/Bar]]"); # preserve case of subpage
|
2008-07-24 00:57:27 +02:00
|
|
|
is(try("z", "foo" => "bar", "[[/Foo]]"), "[[/Bar]]"); # preserve case w/absolute
|
2008-07-24 00:14:20 +02:00
|
|
|
is(try("z", "foo" => "bar", "[[foo]] [[xxx]]"), "[[bar]] [[xxx]]"); # 2 links, 1 converted
|
|
|
|
is(try("z", "foo" => "bar", "[[xxx|foo]]"), "[[xxx|bar]]"); # conversion w/text
|
|
|
|
is(try("z", "foo" => "bar", "[[foo#anchor]]"), "[[bar#anchor]]"); # with anchor
|
|
|
|
is(try("z", "foo" => "bar", "[[xxx|foo#anchor]]"), "[[xxx|bar#anchor]]"); # with anchor
|
|
|
|
is(try("z", "foo" => "bar", "[[!moo ]]"), "[[!moo ]]"); # preprocessor directive unchanged
|
|
|
|
is(try("bugs", "bugs/foo" => "wishlist/bar", "[[foo]]"), "[[wishlist/bar]]"); # subpage link
|
2008-07-24 03:04:11 +02:00
|
|
|
is(try("z", "foo_bar" => "bar", "[[foo_bar]]"), "[[bar]]"); # old link with underscore
|
|
|
|
is(try("z", "foo" => "bar_foo", "[[foo]]"), "[[bar_foo]]"); # new link with underscore
|
2008-07-24 18:36:10 +02:00
|
|
|
is(try("z", "foo_bar" => "bar_foo", "[[foo_bar]]"), "[[bar_foo]]"); # both with underscore
|
2008-07-24 03:04:11 +02:00
|
|
|
is(try("z", "foo" => "bar__".ord("(")."__", "[[foo]]"), "[[bar(]]"); # new link with escaped chars
|
2008-07-24 18:36:10 +02:00
|
|
|
is(try("z", "foo__".ord("(")."__" => "bar(", "[[foo(]]"), "[[bar(]]"); # old link with escaped chars
|
2008-07-24 03:04:11 +02:00
|
|
|
is(try("z", "foo__".ord("(")."__" => "bar__".ord(")")."__", "[[foo(]]"), "[[bar)]]"); # both with escaped chars
|