X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=t%2Flinkify.t;h=a55ed22a19118d686bbde4c48e7abf4494c9b038;hb=4db4bfa2c9178b315d2ac09cff794a4476ba1f6e;hp=586691ae6474bb4eb8424189040e896597f5105c;hpb=472d39de46603b180ab6e739e0b31ab7ef559870;p=public-inbox.git diff --git a/t/linkify.t b/t/linkify.t index 586691ae..a55ed22a 100644 --- a/t/linkify.t +++ b/t/linkify.t @@ -1,4 +1,4 @@ -# Copyright (C) 2016 all contributors +# Copyright (C) 2016-2018 all contributors # License: AGPL-3.0+ use strict; use warnings; @@ -14,6 +14,16 @@ use PublicInbox::Linkify; is($s, qq($u.), 'trailing period not in URL'); } +# handle URLs in parenthesized statements +{ + my $l = PublicInbox::Linkify->new; + my $u = 'http://example.com/'; + my $s = "(see: $u)"; + $s = $l->linkify_1($s); + $s = $l->linkify_2($s); + is($s, qq{(see: $u)}, 'trailing ) not in URL'); +} + { my $l = PublicInbox::Linkify->new; my $u = 'http://example.com/url-with-trailing-semicolon'; @@ -23,4 +33,60 @@ use PublicInbox::Linkify; is($s, qq($u;), 'trailing semicolon not in URL'); } +{ + my $l = PublicInbox::Linkify->new; + my $u = 'http://example.com/url-with-(parens)'; + my $s = "hello $u world"; + $s = $l->linkify_1($s); + $s = $l->linkify_2($s); + is($s, qq(hello $u world), 'URL preserved'); + + $u .= "?query=a"; + $s = "hello $u world"; + $s = $l->linkify_1($s); + $s = $l->linkify_2($s); + is($s, qq(hello $u world), 'query preserved'); + + $u .= "#fragment"; + $s = "hello $u world"; + $s = $l->linkify_1($s); + $s = $l->linkify_2($s); + is($s, qq(hello $u world), + 'query + fragment preserved'); + + $u = "http://example.com/"; + $s = "hello $u world"; + $s = $l->linkify_1($s); + $s = $l->linkify_2($s); + is($s, qq(hello $u world), "root URL preserved"); + + $u = "http://example.com/#fragment"; + $s = "hello $u world"; + $s = $l->linkify_1($s); + $s = $l->linkify_2($s); + is($s, qq(hello $u world), "root + fragment"); +} + +# Markdown compatibility +{ + my $l = PublicInbox::Linkify->new; + my $u = 'http://example.com/'; + my $s = "[markdown]($u)"; + $s = $l->linkify_1($s); + $s = $l->linkify_2($s); + is($s, qq![markdown]($u)!, 'Markdown-compatible'); + + $s = qq![markdown]($u "title")!; + $s = $l->linkify_1($s); + $s = $l->linkify_2($s); + is($s, qq![markdown]($u "title")!, + 'Markdown title compatible'); + + $s = qq![markdown]($u).!; + $s = $l->linkify_1($s); + $s = $l->linkify_2($s); + is($s, qq![markdown]($u).!, + 'Markdown-compatible end of sentence'); +} + done_testing();