1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
|
#!/usr/bin/perl -w
use strict;
use lib 't/lib';
use MBTest tests => 12;
blib_load('Module::Build::PodParser');
#########################
{
package IO::StringBased;
sub TIEHANDLE {
my ($class, $string) = @_;
return bless {
data => [ map "$_\n", split /\n/, $string],
}, $class;
}
sub READLINE {
shift @{ shift()->{data} };
}
}
local *FH;
tie *FH, 'IO::StringBased', <<'EOF';
=head1 NAME
Foo::Bar - Perl extension for blah blah blah
=head1 AUTHOR
C<Foo::Bar> was written by Engelbert Humperdinck I<E<lt>eh@example.comE<gt>> in 2004.
Home page: http://example.com/~eh/
=cut
EOF
my $pp = Module::Build::PodParser->new(fh => \*FH);
ok $pp, 'object created';
is $pp->get_author->[0], 'C<Foo::Bar> was written by Engelbert Humperdinck I<E<lt>eh@example.comE<gt>> in 2004.', 'author';
is $pp->get_abstract, 'Perl extension for blah blah blah', 'abstract';
{
# Try again without a valid author spec
untie *FH;
tie *FH, 'IO::StringBased', <<'EOF';
=head1 NAME
Foo::Bar - Perl extension for blah blah blah
=cut
EOF
my $pp = Module::Build::PodParser->new(fh => \*FH);
ok $pp, 'object created';
is_deeply $pp->get_author, [], 'author';
is $pp->get_abstract, 'Perl extension for blah blah blah', 'abstract';
}
{
# Try again with mixed-case =head1s.
untie *FH;
tie *FH, 'IO::StringBased', <<'EOF';
=head1 Name
Foo::Bar - Perl extension for blah blah blah
=head1 Author
C<Foo::Bar> was written by Engelbert Humperdinck I<E<lt>eh@example.comE<gt>> in 2004.
Home page: http://example.com/~eh/
=cut
EOF
my $pp = Module::Build::PodParser->new(fh => \*FH);
ok $pp, 'object created';
is $pp->get_author->[0], 'C<Foo::Bar> was written by Engelbert Humperdinck I<E<lt>eh@example.comE<gt>> in 2004.', 'author';
is $pp->get_abstract, 'Perl extension for blah blah blah', 'abstract';
}
{
# Now with C<Module::Name>
untie *FH;
tie *FH, 'IO::StringBased', <<'EOF';
=head1 Name
C<Foo::Bar> - Perl extension for blah blah blah
=head1 Author
C<Foo::Bar> was written by Engelbert Humperdinck I<E<lt>eh@example.comE<gt>> in 2004.
Home page: http://example.com/~eh/
=cut
EOF
my $pp = Module::Build::PodParser->new(fh => \*FH);
ok $pp, 'object created';
is $pp->get_author->[0], 'C<Foo::Bar> was written by Engelbert Humperdinck I<E<lt>eh@example.comE<gt>> in 2004.', 'author';
is $pp->get_abstract, 'Perl extension for blah blah blah', 'abstract';
}
|