From 7aca0d40a359e0b9b31b7dc9327dba76da51c85c Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Thu, 21 Jan 2016 08:40:14 +0000 Subject: Compose relative URLs in RSS feeds correctly If the relative link from the (page generating the) RSS to the target would start with "./" or "../", just concatenating it with the URL to the directory containing the RSS is not sufficient. Go via URI::new_abs to fix this. --- t/inline.t | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 't/inline.t') diff --git a/t/inline.t b/t/inline.t index 859e1701a..8c0f1c35a 100755 --- a/t/inline.t +++ b/t/inline.t @@ -46,6 +46,9 @@ write_old_file("antagonists.mdwn", # 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 @@ -53,6 +56,9 @@ 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(@command)); ok(! system(@command, "--refresh")); @@ -81,4 +87,18 @@ like($blob, qr[this page is \{enemies/zant}.*this page is \{enemies/rachni}]s, 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 <a href=(?:['"]|")http://example\.com/friends/midna.html(?:['"]|")>Midna</a>]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 <a href=(?:['"]|")http://example\.com/friends/midna.html(?:['"]|")>Midna</a>]s, + 'link is correctly relative'); + done_testing; -- cgit v1.2.3