1898184e3Ssthen#!/usr/bin/perl 2898184e3Ssthen 3898184e3Ssthenuse strict; 4898184e3Ssthenuse warnings; 5898184e3Ssthen 691f110e0Safresh1use lib 't/lib'; 7898184e3Ssthenuse ExtUtils::MakeMaker; 891f110e0Safresh1use File::Temp qw[tempfile]; 9898184e3Ssthenuse Test::More 'no_plan'; 10898184e3Ssthen 11898184e3Ssthensub test_abstract { 12898184e3Ssthen my($code, $package, $want, $name) = @_; 13898184e3Ssthen 14898184e3Ssthen local $Test::Builder::Level = $Test::Builder::Level + 1; 15898184e3Ssthen 16*5759b3d2Safresh1 my $ok = 0; 17*5759b3d2Safresh1 for my $crlf (0, 1) { 1891f110e0Safresh1 my ($fh,$file) = tempfile( DIR => 't', UNLINK => 1 ); 19*5759b3d2Safresh1 binmode $fh, $crlf ? ':crlf' : ':raw'; 20898184e3Ssthen print $fh $code; 21898184e3Ssthen close $fh; 22898184e3Ssthen # Hack up a minimal MakeMaker object. 23898184e3Ssthen my $mm = bless { DISTNAME => $package }, "MM"; 24898184e3Ssthen my $have = $mm->parse_abstract($file); 25*5759b3d2Safresh1 $ok += is( $have, $want, "$name :crlf=$crlf" ) ? 1 : 0; 26*5759b3d2Safresh1 } 27898184e3Ssthen return $ok; 28898184e3Ssthen} 29898184e3Ssthen 30898184e3Ssthen 31898184e3Ssthentest_abstract(<<END, "Foo", "Stuff and things", "Simple abstract"); 32898184e3Ssthen=head1 NAME 33898184e3Ssthen 34898184e3SsthenFoo - Stuff and things 35898184e3SsthenEND 36898184e3Ssthen 37898184e3Ssthen 38898184e3Ssthentest_abstract(<<END, "NEXT", "Provide a pseudo-class NEXT (et al) that allows method redispatch", "Name.pm"); 39898184e3Ssthen=head1 NAME 40898184e3Ssthen 41898184e3SsthenNEXT.pm - Provide a pseudo-class NEXT (et al) that allows method redispatch 42898184e3SsthenEND 43898184e3Ssthen 44898184e3Ssthen 45898184e3Ssthentest_abstract(<<END, "Compress::Raw::Zlib::FAQ", "Frequently Asked Questions about Compress::Raw::Zlib", "double dash"); 46898184e3Ssthen=pod 47898184e3Ssthen 48898184e3SsthenCompress::Raw::Zlib::FAQ -- Frequently Asked Questions about Compress::Raw::Zlib 49898184e3SsthenEND 50898184e3Ssthen 51898184e3Ssthen 52898184e3Ssthentest_abstract(<<END, "Foo", "This is", "Only in POD"); 53898184e3Ssthen# =pod 54898184e3Ssthen 55898184e3SsthenFoo - This is not in pod 56898184e3Ssthen 57898184e3Ssthen=cut 58898184e3Ssthen 59898184e3SsthenFoo - This isn't in pod either 60898184e3Ssthen 61898184e3Ssthen=pod 62898184e3Ssthen 63898184e3SsthenFoo - This is 64898184e3Ssthen 65898184e3SsthenFoo - So is this. 66898184e3SsthenEND 67898184e3Ssthen 68898184e3Ssthen 69898184e3Ssthentest_abstract(<<END, "Foo", "the abstract", "more spaces"); 70898184e3Ssthen=pod 71898184e3Ssthen 72898184e3SsthenFoo - the abstract 73898184e3SsthenEND 746fb12b70Safresh1 756fb12b70Safresh1test_abstract(<<END, "Catalyst::Plugin::Authentication", "Infrastructure plugin for the Catalyst authentication framework.", "contains a line break"); 766fb12b70Safresh1=pod 776fb12b70Safresh1 786fb12b70Safresh1=head1 NAME 796fb12b70Safresh1 806fb12b70Safresh1Catalyst::Plugin::Authentication - Infrastructure plugin for the Catalyst 816fb12b70Safresh1authentication framework. 826fb12b70Safresh1END 83