TAP::Parser::SourceHandler::Executable(3p)

TAP::Parser::SourceHandler::Executable3p

Stream output from an executable tap source

Usage

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

Version

Version 3.50

Overview

This is an executable 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.

Methods

Class Methods

"can_handle"

  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

"make_iterator"

  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.

"iterator_class"

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

Subclassing

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

Example

  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]);
  }

Releases

28 releases since OpenBSD 5.4; the text changed 19 times.

  1. 5.4–5.5
  2. 5.6
  3. 5.7
  4. 5.8–5.9
  5. 6.0
  6. 6.1
  7. 6.2
  8. 6.3–6.4
  9. 6.5
  10. 6.6
  11. 6.7
  12. 6.8
  13. 6.9–7.2
  14. 7.3
  15. 7.4
  16. 7.5
  17. 7.6
  18. 7.7–7.8
  19. 7.9
  20. 8.0

From man 8.0-current-20261101 in OpenBSD 8.0-current (2026-11-01). Parsed by carta from the page's man source.