logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

TAP::Parser::Iterator::Process - Iterator for process-based TAP sources

Attribution

       Originally ripped off from Test::Harness.

Description

       This is a simple iterator wrapper for executing external processes, used by TAP::Parser.  Unless you're
       writing a plugin or subclassing, you probably won't need to use this module directly.

Methods

ClassMethods"new"

       Create an iterator.  Expects one argument containing a hashref of the form:

          command  => \@command_to_execute
          merge    => $attempt_merge_stderr_and_stdout?
          setup    => $callback_to_setup_command
          teardown => $callback_to_teardown_command

       Tries to uses IPC::Open3 & IO::Select to communicate with the spawned process if they are available.
       Falls back onto open().

   InstanceMethods"next"

       Iterate through the process output, of course.

       "next_raw"

       Iterate raw input without applying any fixes for quirky input syntax.

       "wait"

       Get the wait status for this iterator's process.

       "exit"

       Get the exit status for this iterator's process.

       "handle_unicode"

       Upgrade the input stream to handle UTF8.

       "get_select_handles"

       Return a list of filehandles that may be used upstream in a select() call to signal that this Iterator is
       ready. Iterators that are not handle based should return an empty list.

Name

       TAP::Parser::Iterator::Process - Iterator for process-based TAP sources

See Also

       TAP::Object, TAP::Parser, TAP::Parser::Iterator,

perl v5.40.0                                       2024-08-17                TAP::Parser::Iterator::Process(3pm)

Synopsis

         use TAP::Parser::Iterator::Process;
         my %args = (
          command  => ['python', 'setup.py', 'test'],
          merge    => 1,
          setup    => sub { ... },
          teardown => sub { ... },
         );
         my $it   = TAP::Parser::Iterator::Process->new(\%args);
         my $line = $it->next;

Version

       Version 3.50

See Also