TAP::Parser::SourceHandler::Executable(3p) Perl Programmers Reference Guide

TAP::Parser::SourceHandler::Executable(3p) Perl Programmers Reference Guide #

TAP::Parser::SourceHandler::Executable(3p) Perl Programmers Reference Guide

NNAAMMEE #

 TAP::Parser::SourceHandler::Executable - Stream output from an executable
 TAP source

VVEERRSSIIOONN #

 Version 3.44

SSYYNNOOPPSSIISS #

   use TAP::Parser::Source;
   use TAP::Parser::SourceHandler::Executable;

   my $source = TAP::Parser::Source->new->raw(['/usr/bin/ruby', 'mytest.rb']);
   $source->assemble_meta;

   my $class = 'TAP::Parser::SourceHandler::Executable';
   my $vote  = $class->can_handle( $source );
   my $iter  = $class->make_iterator( $source );

DDEESSCCRRIIPPTTIIOONN #

 This is an _e_x_e_c_u_t_a_b_l_e TAP::Parser::SourceHandler - it has 2 jobs:

 1. Figure out if the TAP::Parser::Source it's given is an executable
    command ("can_handle").

 2. Creates an iterator for executable commands ("make_iterator").

 Unless you're writing a plugin or subclassing TAP::Parser, you probably
 won't need to use this module directly.

MMEETTHHOODDSS #

CCllaassss MMeetthhooddss _"_c_a_n___h_a_n_d_l_e_"

   my $vote = $class->can_handle( $source );

 Only votes if $source looks like an executable file. Casts the following
 votes:

   0.9  if it's a hash with an 'exec' key
   0.8  if it's a .bat file
   0.75 if it's got an execute bit set

 _"_m_a_k_e___i_t_e_r_a_t_o_r_"

   my $iterator = $class->make_iterator( $source );

 Returns a new TAP::Parser::Iterator::Process for the source.
 "$source->raw" must be in one of the following forms:

   { exec => [ @exec ] }

   [ @exec ]

   $file

 "croak"s on error.

 _"_i_t_e_r_a_t_o_r___c_l_a_s_s_"

 The class of iterator to use, override if you're sub-classing.  Defaults
 to TAP::Parser::Iterator::Process.

SSUUBBCCLLAASSSSIINNGG #

 Please see "SUBCLASSING" in TAP::Parser for a subclassing overview.

EExxaammppllee package MyRubySourceHandler;

   use strict;

   use Carp qw( croak );
   use TAP::Parser::SourceHandler::Executable;

   use base 'TAP::Parser::SourceHandler::Executable';

   # expect $handler->(['mytest.rb', 'cmdline', 'args']);
   sub make_iterator {
     my ($self, $source) = @_;
     my @test_args = @{ $source->test_args };
     my $rb_file   = $test_args[0];
     croak("error: Ruby file '$rb_file' not found!") unless (-f $rb_file);
     return $self->SUPER::raw_source(['/usr/bin/ruby', @test_args]);
   }

SSEEEE AALLSSOO #

 TAP::Object, TAP::Parser, TAP::Parser::IteratorFactory,
 TAP::Parser::SourceHandler, TAP::Parser::SourceHandler::Perl,
 TAP::Parser::SourceHandler::File, TAP::Parser::SourceHandler::Handle,
 TAP::Parser::SourceHandler::RawTAP

perl v5.36.3 2023-02-15 TAP::Parser::SourceHandler::Executable(3p)