File: extract_pod_tests

package info (click to toggle)
rtfm 2.0.3-1.1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 808 kB
  • ctags: 220
  • sloc: perl: 3,426; sh: 153; makefile: 144
file content (106 lines) | stat: -rw-r--r-- 1,874 bytes parent folder | download | duplicates (2)
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
#!/usr/bin/perl

use strict;
use vars qw($VERSION);
$VERSION = '0.06';

use Pod::Tests;
use Symbol;

=pod

=head1 NAME

extract_pod_tests -  RT-specific variant of pod2tests

=head1 SYNOPSIS

  pod2test [-Mmodule] [input [output]]

=head1 DESCRIPTION

B<pod2test> is a front-end for Test::Inline.  It generates the 
"Bodies" of MakeMaker style .t testing files from embedded tests and 
code examples.

If output is not specified, the resulting .t file will go to STDOUT.
Otherwise, it will go to the given output file.  If input is not
given, it will draw from STDIN.

If the given file contains no tests or code examples, no output will
be given and no output file will be created.

=cut

my($infile, $outfile) = @ARGV;
my($infh,$outfh);


if( defined $infile ) {
    $infh = gensym;
    open($infh, $infile) or 
      die "Can't open the POD file $infile: $!";
}
else {
    $infh = \*STDIN;
}

unless ($outfile) {
     ( my $test = $infile ) =~ s/\.(pm|pod)$//;
            $test =~ s/^lib\W//;
            $test =~ s/\W/-/;
            $test =~ s/\//__/g;

        $outfile = "lib/t/autogen/autogen-$test.t";
}


my $p = Pod::Tests->new;
$p->parse_fh($infh);

# XXX Hack to put the filename into the #line directive
$p->{file} = $infile || '';

my @tests    = $p->build_tests($p->tests);
my @examples = $p->build_examples($p->examples);

exit unless @tests or @examples;


if( defined $outfile) {
    $outfh = gensym;
    open($outfh, ">$outfile") or
      die "Can't open the test file $outfile: $!";
}
else {
    $outfh = \*STDOUT;
}



foreach my $test (@tests, @examples) {
    print $outfh "$test\n";
}

print $outfh "1;\n";

=pod

=head1 BUGS and CAVEATS

This is a very simple rough cut.  It only does very rudimentary tests
on the examples.

=head1 AUTHOR



Based on pod2tests by Michael G Schwern <schwern@pobox.com>

=head1 SEE ALSO

L<Test::Inline>

=cut

1;