191f110e0Safresh1BEGIN { 291f110e0Safresh1 use File::Basename; 391f110e0Safresh1 my $THISDIR = dirname $0; 491f110e0Safresh1 unshift @INC, $THISDIR; 591f110e0Safresh1 require "testpchk.pl"; 691f110e0Safresh1 import TestPodChecker; 791f110e0Safresh1} 891f110e0Safresh1 991f110e0Safresh1my %options = map { $_ => 1 } @ARGV; ## convert cmdline to options-hash 1091f110e0Safresh1my $passed = testpodchecker \%options, $0; 1191f110e0Safresh1exit( ($passed == 1) ? 0 : -1 ) unless $ENV{HARNESS_ACTIVE}; 1291f110e0Safresh1 1391f110e0Safresh1### Deliberately throw in some blank but non-empty lines 1491f110e0Safresh1 1591f110e0Safresh1### The above line should contain spaces 1691f110e0Safresh1 175759b3d2Safresh1#line 18 1891f110e0Safresh1__END__ 1991f110e0Safresh1 2091f110e0Safresh1=head2 This should cause a warning 2191f110e0Safresh1 2291f110e0Safresh1=head1 NAME 2391f110e0Safresh1 2491f110e0Safresh1poderrors.t - test Pod::Checker on some pod syntax errors 2591f110e0Safresh1 265759b3d2Safresh1 GASP! A verbatim paragraph in NAME 275759b3d2Safresh1 2891f110e0Safresh1=unknown1 this is an unknown command with two N<unknownA> 2991f110e0Safresh1and D<unknownB> interior sequences. 3091f110e0Safresh1 3191f110e0Safresh1This is some paragraph text with some unknown interior sequences, 3291f110e0Safresh1such as Q<unknown2>, 3391f110e0Safresh1A<unknown3>, 3491f110e0Safresh1and Y<unknown4 V<unknown5>>. 3591f110e0Safresh1 3691f110e0Safresh1Now try some unterminated sequences like 3791f110e0Safresh1I<hello mudda! 3891f110e0Safresh1B<hello fadda! 3991f110e0Safresh1 4091f110e0Safresh1Here I am at C<camp granada! 4191f110e0Safresh1 4291f110e0Safresh1Camps is very, 4391f110e0Safresh1entertaining. 4491f110e0Safresh1And they say we'll have some fun if it stops raining! 4591f110e0Safresh1 4691f110e0Safresh1Okay, now use a non-empty blank line to terminate a paragraph and make 4791f110e0Safresh1sure we get a warning. 4891f110e0Safresh1 4991f110e0Safresh1The above blank line contains tabs and spaces only 5091f110e0Safresh1 515759b3d2Safresh1F<Many B<fcodes B<inside C<other I<fcodes F<inside I<many S<many C<more X<fcodes. S<This is X<ridiculous.>>>>>>>>>>>> 525759b3d2Safresh1 535759b3d2Safresh1A L<link|perlvar/$/> to L<perlvar/$E<sol>> 545759b3d2Safresh1 5591f110e0Safresh1=head1 Additional tests 5691f110e0Safresh1 5791f110e0Safresh1=head2 item without over 5891f110e0Safresh1 5991f110e0Safresh1=item oops 6091f110e0Safresh1 6191f110e0Safresh1=head2 back without over 6291f110e0Safresh1 6391f110e0Safresh1=back 6491f110e0Safresh1 6591f110e0Safresh1=head2 over without back 6691f110e0Safresh1 6791f110e0Safresh1=over 4 6891f110e0Safresh1 6991f110e0Safresh1=item aaps 7091f110e0Safresh1 7191f110e0Safresh1=head2 end without begin 7291f110e0Safresh1 7391f110e0Safresh1=end 7491f110e0Safresh1 755759b3d2Safresh1=end something 765759b3d2Safresh1 7791f110e0Safresh1=head2 begin and begin 7891f110e0Safresh1 7991f110e0Safresh1=begin html 8091f110e0Safresh1 8191f110e0Safresh1=begin text 8291f110e0Safresh1 835759b3d2Safresh1=end text 8491f110e0Safresh1 855759b3d2Safresh1=end html 8691f110e0Safresh1 8791f110e0Safresh1=head2 begin w/o formatter 8891f110e0Safresh1 8991f110e0Safresh1=begin 9091f110e0Safresh1 9191f110e0Safresh1=end 9291f110e0Safresh1 9391f110e0Safresh1=head2 for w/o formatter 9491f110e0Safresh1 9591f110e0Safresh1=for 9691f110e0Safresh1 9791f110e0Safresh1something... 9891f110e0Safresh1 9991f110e0Safresh1=head2 Nested sequences of the same type 10091f110e0Safresh1 10191f110e0Safresh1C<code I<italic C<code again!>>> 10291f110e0Safresh1 10391f110e0Safresh1=head2 Garbled entities 10491f110e0Safresh1 10591f110e0Safresh1E<alea iacta est> 10691f110e0Safresh1E<C<auml>> 10791f110e0Safresh1E<abcI<bla>> 10891f110e0Safresh1E<0x100> 10991f110e0Safresh1E<07777> 11091f110e0Safresh1E<300> 1115759b3d2Safresh1E<unknown_entity> 11291f110e0Safresh1 11391f110e0Safresh1=head2 Unresolved internal links 11491f110e0Safresh1 11591f110e0Safresh1L</"begin or begin"> 11691f110e0Safresh1L<"end with begin"> 11791f110e0Safresh1L</OoPs> 11891f110e0Safresh1 11991f110e0Safresh1=head2 Some links with problems 12091f110e0Safresh1 12191f110e0Safresh1L<abc 12291f110e0Safresh1def> 12391f110e0Safresh1L<> 124*256a93a4Safresh1L</> 125*256a93a4Safresh1L<wheeee|/> 12691f110e0Safresh1L< aha> 12791f110e0Safresh1L<oho > 1285759b3d2Safresh1L< weehee > 12991f110e0Safresh1L<"Warnings"> this one is ok 13091f110e0Safresh1L</unescaped> ok too, this POD has an X of the same name 1315759b3d2Safresh1 1325759b3d2Safresh1L<< lead >> 1335759b3d2Safresh1L<< trail >> 1345759b3d2Safresh1L<< neither >> 1355759b3d2Safresh1L<<< both >>> 1365759b3d2Safresh1 1375759b3d2Safresh1L<<<<>>>> 1385759b3d2Safresh1 1395759b3d2Safresh1L<<<< >>>> 1405759b3d2Safresh1 1415759b3d2Safresh1L<<<< >>>> 14291f110e0Safresh1 14391f110e0Safresh1=head2 Warnings 14491f110e0Safresh1 14591f110e0Safresh1L<passwd(5)> 14691f110e0Safresh1L<some text with / in it|perlvar/$|> should give warnings as hell 14791f110e0Safresh1 14891f110e0Safresh1=over 4 14991f110e0Safresh1 15091f110e0Safresh1=item bla 15191f110e0Safresh1 15291f110e0Safresh1=back 200 15391f110e0Safresh1 15491f110e0Safresh1the 200 is evil 15591f110e0Safresh1 15691f110e0Safresh1X<unescaped>see these unescaped < and > in the text? 15791f110e0Safresh1 15891f110e0Safresh1=head2 Misc 15991f110e0Safresh1 16091f110e0Safresh1Z<ddd> should be empty 16191f110e0Safresh1 16291f110e0Safresh1X<> should not be empty 16391f110e0Safresh1 1645759b3d2Safresh1X<0> should not generate a warning about being empty 1655759b3d2Safresh1 1665759b3d2Safresh1E<> should not be empty 1675759b3d2Safresh1 16891f110e0Safresh1=over four 16991f110e0Safresh1 17091f110e0Safresh1This paragrapgh is misplaced - it ought to be an item. 17191f110e0Safresh1 17291f110e0Safresh1=item four should be numeric! 17391f110e0Safresh1 1745759b3d2Safresh1=back 1755759b3d2Safresh1 1765759b3d2Safresh1=over 4 1775759b3d2Safresh1 17891f110e0Safresh1=item 17991f110e0Safresh1 18091f110e0Safresh1=item blah 18191f110e0Safresh1 18291f110e0Safresh1=item previous is all empty!!! 18391f110e0Safresh1 18491f110e0Safresh1=back 18591f110e0Safresh1 1865759b3d2Safresh1=over 1875759b3d2Safresh1 1885759b3d2Safresh1 This verbatim paragraph should not be here. Spaces are on the line below this 1895759b3d2Safresh1 1905759b3d2Safresh1=item * 1915759b3d2Safresh1 1925759b3d2Safresh1bullet 1935759b3d2Safresh1 1945759b3d2Safresh1=item 1 1955759b3d2Safresh1 1965759b3d2Safresh1number, uh oh 1975759b3d2Safresh1 1985759b3d2Safresh1=back 1995759b3d2Safresh1 2005759b3d2Safresh1=over 2015759b3d2Safresh1 2025759b3d2Safresh1=item * 2035759b3d2Safresh1 2045759b3d2Safresh1first bullet 2055759b3d2Safresh1 2065759b3d2Safresh1=item 1 2075759b3d2Safresh1 2085759b3d2Safresh1then number 2095759b3d2Safresh1 2105759b3d2Safresh1=item finally definition 2115759b3d2Safresh1 2125759b3d2Safresh1=back 2135759b3d2Safresh1 2145759b3d2Safresh1=over 2155759b3d2Safresh1 2165759b3d2Safresh1=item 1 2175759b3d2Safresh1 2185759b3d2Safresh1first number 2195759b3d2Safresh1 2205759b3d2Safresh1=item 3 2215759b3d2Safresh1 2225759b3d2Safresh1bad numbering 2235759b3d2Safresh1 2245759b3d2Safresh1=item then definition 2255759b3d2Safresh1 2265759b3d2Safresh1=item * 2275759b3d2Safresh1 2285759b3d2Safresh1finally bullet 2295759b3d2Safresh1 2305759b3d2Safresh1=back 2315759b3d2Safresh1 2325759b3d2Safresh1=over 2335759b3d2Safresh1 2345759b3d2Safresh1=item first defintion 2355759b3d2Safresh1 2365759b3d2Safresh1=item * 2375759b3d2Safresh1 2385759b3d2Safresh1then bullet 2395759b3d2Safresh1 2405759b3d2Safresh1=item 1 2415759b3d2Safresh1 2425759b3d2Safresh1finally number 2435759b3d2Safresh1 2445759b3d2Safresh1=item second definition 2455759b3d2Safresh1 2465759b3d2Safresh1 This should not generate an empty =item warning, 2475759b3d2Safresh1 because it has verbatim text. 2485759b3d2Safresh1 2495759b3d2Safresh1=back 2505759b3d2Safresh1 2515759b3d2Safresh1Empty over/back: 25291f110e0Safresh1 25391f110e0Safresh1=over 4 25491f110e0Safresh1 2555759b3d2Safresh1=over 2 2565759b3d2Safresh1 2575759b3d2Safresh1=back 2585759b3d2Safresh1 25991f110e0Safresh1=back 26091f110e0Safresh1 26191f110e0Safresh1item w/o name 26291f110e0Safresh1 26391f110e0Safresh1=cut 26491f110e0Safresh1 26591f110e0Safresh1=pod bla 26691f110e0Safresh1 26791f110e0Safresh1bla is evil 26891f110e0Safresh1 26991f110e0Safresh1=cut blub 27091f110e0Safresh1 27191f110e0Safresh1blub is evil 27291f110e0Safresh1 27391f110e0Safresh1=head2 reoccurence 27491f110e0Safresh1 27591f110e0Safresh1=over 4 27691f110e0Safresh1 27791f110e0Safresh1=item Misc 27891f110e0Safresh1 27991f110e0Safresh1we already have a head Misc 28091f110e0Safresh1 28191f110e0Safresh1=back 28291f110e0Safresh1 28391f110e0Safresh1=head2 some heading 28491f110e0Safresh1 28591f110e0Safresh1=head2 another one 28691f110e0Safresh1 28791f110e0Safresh1previous section is empty! 28891f110e0Safresh1 28991f110e0Safresh1=head1 LINK TESTS 29091f110e0Safresh1 29191f110e0Safresh1 2925759b3d2Safresh1 2935759b3d2Safresh1 2945759b3d2Safresh1 2955759b3d2Safresh1 2965759b3d2Safresh1 2975759b3d2Safresh1 2985759b3d2Safresh1 2995759b3d2Safresh1 30091f110e0Safresh1L<perlop/"I/O Operators"> 3015759b3d2Safresh1don't trigger a warning because node is quoted 3025759b3d2Safresh1 3035759b3d2Safresh1L<"I/O Operators"> 3045759b3d2Safresh1incorrectly interpreted as 'O Operators in I', but this is deprecated syntax, as per perlpodspec. 3055759b3d2Safresh1no warning due to quotes 3065759b3d2Safresh1 3075759b3d2Safresh1=head1 3085759b3d2Safresh1 3095759b3d2Safresh1Empty head above and unclosed over/begins below 3105759b3d2Safresh1 3115759b3d2Safresh1=head3 test X<stuff> I<test> 3125759b3d2Safresh1 3135759b3d2Safresh1=over 3145759b3d2Safresh1 3155759b3d2Safresh1=begin html 3165759b3d2Safresh1 3175759b3d2Safresh1What? 3185759b3d2Safresh1 3195759b3d2Safresh1=begin :xml 3205759b3d2Safresh1 3215759b3d2Safresh1L<This pod's NAME in a link means it is internal|poderrors.t/link_to_nowhere>, 3225759b3d2Safresh1so should generate a warning 32391f110e0Safresh1 32491f110e0Safresh1=cut 32591f110e0Safresh1 32691f110e0Safresh1 327