xref: /openbsd-src/gnu/usr.bin/perl/cpan/Pod-Simple/t/whine.t (revision 3d61058aa5c692477b6d18acfbbdb653a9930ff9)
191f110e0Safresh1use strict;
291f110e0Safresh1use warnings;
3*56d68f1eSafresh1use Test::More tests => 6;
491f110e0Safresh1
591f110e0Safresh1{
691f110e0Safresh1  package Pod::Simple::ErrorFinder;
791f110e0Safresh1  use base 'Pod::Simple::DumpAsXML'; # arbitrary choice -- rjbs, 2013-04-16
891f110e0Safresh1
991f110e0Safresh1  sub errors_for_input {
1091f110e0Safresh1    my ($class, $input, $mutor) = @_;
1191f110e0Safresh1
1291f110e0Safresh1    my $parser = $class->new;
1391f110e0Safresh1    my $output = '';
1491f110e0Safresh1    $parser->output_string( \$output );
15b8851fccSafresh1    $parser->no_errata_section(1);
1691f110e0Safresh1    $parser->parse_string_document( $input );
1791f110e0Safresh1
18b8851fccSafresh1    return $parser->errata_seen();
1991f110e0Safresh1  }
2091f110e0Safresh1}
2191f110e0Safresh1
2291f110e0Safresh1sub errors { Pod::Simple::ErrorFinder->errors_for_input(@_) }
2391f110e0Safresh1
2491f110e0Safresh1{
25b8851fccSafresh1  my $errors = errors("=over 4\n\n=item 1\n\nHey\n\n");
2691f110e0Safresh1  is_deeply(
27b8851fccSafresh1    $errors,
28b8851fccSafresh1    { 1 => [ "=over without closing =back" ] },
2991f110e0Safresh1    "no closing =back",
3091f110e0Safresh1  );
3191f110e0Safresh1}
3291f110e0Safresh1
3391f110e0Safresh1{
3491f110e0Safresh1  for my $l_code ('L< foo>', 'L< bar>') {
3591f110e0Safresh1    my $input = "=pod\n\nAmbiguous space: $l_code\n";
36b8851fccSafresh1    my $errors = errors("$input");
3791f110e0Safresh1    is_deeply(
38b8851fccSafresh1      $errors,
39b8851fccSafresh1      { 3 => [ "L<> starts or ends with whitespace" ] },
4091f110e0Safresh1      "warning for space in $l_code",
4191f110e0Safresh1    );
4291f110e0Safresh1  }
4391f110e0Safresh1}
4491f110e0Safresh1
4591f110e0Safresh1{
4691f110e0Safresh1  my $input = "=pod\n\nAmbiguous slash: L<I/O Operators|op/io>\n";
47b8851fccSafresh1  my $errors = errors("$input");
4891f110e0Safresh1  is_deeply(
49b8851fccSafresh1    $errors,
50b8851fccSafresh1    { 3 => [ "alternative text 'I/O Operators' contains non-escaped | or /" ] },
5191f110e0Safresh1    "warning for / in text part of L<>",
5291f110e0Safresh1  );
5391f110e0Safresh1}
54*56d68f1eSafresh1
55*56d68f1eSafresh1{
56*56d68f1eSafresh1  my $input = "=pod\n\nnested LE<lt>E<sol>E<gt>: L<Nested L<http://foobar>|http://baz>\n";
57*56d68f1eSafresh1  my $errors = errors("$input");
58*56d68f1eSafresh1  is_deeply(
59*56d68f1eSafresh1    $errors,
60*56d68f1eSafresh1    { 3 => [ "Nested L<> are illegal.  Pretending inner one is X<...> so can continue looking for other errors." ] },
61*56d68f1eSafresh1      "warning for nested L<>",
62*56d68f1eSafresh1  );
63*56d68f1eSafresh1}
64*56d68f1eSafresh1
65*56d68f1eSafresh1{
66*56d68f1eSafresh1  my $input = "=pod\n\nLE<lt>E<sol>E<gt> containing only slash: L< / >\n";
67*56d68f1eSafresh1  my $errors = errors("$input");
68*56d68f1eSafresh1  is_deeply(
69*56d68f1eSafresh1    $errors,
70*56d68f1eSafresh1    { 3 => [ "L<> contains only '/'" ] },
71*56d68f1eSafresh1      "warning for L< / > containing only a slash",
72*56d68f1eSafresh1  );
73*56d68f1eSafresh1}
74