X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=t%2Flinkify.t;h=a55ed22a19118d686bbde4c48e7abf4494c9b038;hb=refs%2Ftags%2Fv1.1.0-pre1;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();