summaryrefslogtreecommitdiffstats
path: root/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/parse_abstract.t
blob: 18a451930191043012f380ca648c1810fdf8fac3 (plain) (blame)
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
#!/usr/bin/perl

use strict;
use warnings;

use lib 't/lib';
use ExtUtils::MakeMaker;
use File::Temp qw[tempfile];
use Test::More 'no_plan';

sub test_abstract {
    my($code, $package, $want, $name) = @_;

    local $Test::Builder::Level = $Test::Builder::Level + 1;

    my $ok = 0;
    for my $crlf (0, 1) {
        my ($fh,$file) = tempfile( DIR => 't', UNLINK => 1 );
        binmode $fh, $crlf ? ':crlf' : ':raw';
        print $fh $code;
        close $fh;
        # Hack up a minimal MakeMaker object.
        my $mm = bless { DISTNAME => $package }, "MM";
        my $have = $mm->parse_abstract($file);
        $ok += is( $have, $want, "$name :crlf=$crlf" ) ? 1 : 0;
    }
    return $ok;
}


test_abstract(<<END, "Foo", "Stuff and things", "Simple abstract");
=head1 NAME

Foo - Stuff and things
END


test_abstract(<<END, "NEXT", "Provide a pseudo-class NEXT (et al) that allows method redispatch", "Name.pm");
=head1 NAME

NEXT.pm - Provide a pseudo-class NEXT (et al) that allows method redispatch
END


test_abstract(<<END, "Compress::Raw::Zlib::FAQ", "Frequently Asked Questions about Compress::Raw::Zlib", "double dash");
=pod

Compress::Raw::Zlib::FAQ -- Frequently Asked Questions about Compress::Raw::Zlib
END


test_abstract(<<END, "Foo", "This is", "Only in POD");
# =pod

Foo - This is not in pod

=cut

Foo - This isn't in pod either

=pod

Foo - This is

Foo - So is this.
END


test_abstract(<<END, "Foo", "the abstract", "more spaces");
=pod

Foo   -  the abstract
END

test_abstract(<<END, "Catalyst::Plugin::Authentication", "Infrastructure plugin for the Catalyst authentication framework.", "contains a line break");
=pod

=head1 NAME

Catalyst::Plugin::Authentication - Infrastructure plugin for the Catalyst
authentication framework.
END