TAP::Parser::Source::Perl - Stream Perl output
Version 3.17
Takes a filename and hopefully returns a stream from it. The filename should be the name of a Perl program.
Note that this is a subclass of TAP::Parser::Source. See that module for more methods.
new
- my $perl = TAP::Parser::Source::Perl->new;
Returns a new TAP::Parser::Source::Perl
object.
source
Getter/setter the name of the test program and any arguments it requires.
- my ($filename, @args) = @{ $perl->source };
- $perl->source( [ $filename, @args ] );
croak
s if $filename
could not be found.
switches
Getter/setter for the additional switches to pass to the perl executable. One common switch would be to set an include directory:
- $perl->switches( ['-Ilib'] );
get_stream
- my $stream = $source->get_stream($parser);
Returns a stream of the output generated by executing source
. Must be
passed an object that implements a make_iterator
method. Typically
this is a TAP::Parser instance.
shebang
Get the shebang line for a script file.
- my $shebang = TAP::Parser::Source::Perl->shebang( $some_script );
May be called as a class method
get_taint
Decode any taint switches from a Perl shebang line.
Please see SUBCLASSING in TAP::Parser for a subclassing overview.
- package MyPerlSource;
- use strict;
- use vars '@ISA';
- use Carp qw( croak );
- use TAP::Parser::Source::Perl;
- @ISA = qw( TAP::Parser::Source::Perl );
- sub source {
- my ($self, $args) = @_;
- if ($args) {
- $self->{file} = $args->[0];
- return $self->SUPER::source($args);
- }
- return $self->SUPER::source;
- }
- # use the version of perl from the shebang line in the test file
- sub _get_perl {
- my $self = shift;
- if (my $shebang = $self->shebang( $self->{file} )) {
- $shebang =~ /^#!(.*\bperl.*?)(?:(?:\s)|(?:$))/;
- return $1 if $1;
- }
- return $self->SUPER::_get_perl(@_);
- }