1TAP::Parser::Source::PerPle(r3lpmP)rogrammers ReferenceTAGPu:i:dPearser::Source::Perl(3pm)
2
3
4
6 TAP::Parser::Source::Perl - Stream Perl output
7
9 Version 3.17
10
12 use TAP::Parser::Source::Perl;
13 my $perl = TAP::Parser::Source::Perl->new;
14 my $stream = $perl->source( [ $filename, @args ] )->get_stream;
15
17 Takes a filename and hopefully returns a stream from it. The filename
18 should be the name of a Perl program.
19
20 Note that this is a subclass of TAP::Parser::Source. See that module
21 for more methods.
22
24 Class Methods
25 "new"
26
27 my $perl = TAP::Parser::Source::Perl->new;
28
29 Returns a new "TAP::Parser::Source::Perl" object.
30
31 Instance Methods
32 "source"
33
34 Getter/setter the name of the test program and any arguments it
35 requires.
36
37 my ($filename, @args) = @{ $perl->source };
38 $perl->source( [ $filename, @args ] );
39
40 "croak"s if $filename could not be found.
41
42 "switches"
43
44 my $switches = $perl->switches;
45 my @switches = $perl->switches;
46 $perl->switches( \@switches );
47
48 Getter/setter for the additional switches to pass to the perl
49 executable. One common switch would be to set an include directory:
50
51 $perl->switches( ['-Ilib'] );
52
53 "get_stream"
54
55 my $stream = $source->get_stream($parser);
56
57 Returns a stream of the output generated by executing "source". Must be
58 passed an object that implements a "make_iterator" method. Typically
59 this is a TAP::Parser instance.
60
61 "shebang"
62
63 Get the shebang line for a script file.
64
65 my $shebang = TAP::Parser::Source::Perl->shebang( $some_script );
66
67 May be called as a class method
68
69 "get_taint"
70
71 Decode any taint switches from a Perl shebang line.
72
73 # $taint will be 't'
74 my $taint = TAP::Parser::Source::Perl->get_taint( '#!/usr/bin/perl -t' );
75
76 # $untaint will be undefined
77 my $untaint = TAP::Parser::Source::Perl->get_taint( '#!/usr/bin/perl' );
78
80 Please see "SUBCLASSING" in TAP::Parser for a subclassing overview.
81
82 Example
83 package MyPerlSource;
84
85 use strict;
86 use vars '@ISA';
87
88 use Carp qw( croak );
89 use TAP::Parser::Source::Perl;
90
91 @ISA = qw( TAP::Parser::Source::Perl );
92
93 sub source {
94 my ($self, $args) = @_;
95 if ($args) {
96 $self->{file} = $args->[0];
97 return $self->SUPER::source($args);
98 }
99 return $self->SUPER::source;
100 }
101
102 # use the version of perl from the shebang line in the test file
103 sub _get_perl {
104 my $self = shift;
105 if (my $shebang = $self->shebang( $self->{file} )) {
106 $shebang =~ /^#!(.*\bperl.*?)(?:(?:\s)|(?:$))/;
107 return $1 if $1;
108 }
109 return $self->SUPER::_get_perl(@_);
110 }
111
113 TAP::Object, TAP::Parser, TAP::Parser::Source,
114
115
116
117perl v5.10.1 2009-06-12 TAP::Parser::Source::Perl(3pm)