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;
|