The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Test::Builder2::Formatter - Base class for formating test results

SYNOPSIS

  package Test::Builder2::Formatter::SomeFormat;

  use Test::Builder2::Mouse;
  extends "Test::Builder2::Formatter;

DESCRIPTION

Test::Builder2 delegates the actual formating of test results to a Test::Builder2::Formatter object. This can then decide if it's going to formatter TAP or XML or send email or whatever.

METHODS

Attributes

streamer_class

Contains the class to use to make a Streamer.

Defaults to $formatter->default_streamer_class

streamer

Contains the Streamer object to write to. One will be created for you using $formatter->streamer_class.

singleton

  my $default_formatter = Test::Builder2::Formatter->singleton;

Returns the default shared formatter object.

The default Formatter is a Test::Builder2::Formatter::TAP object.

create

  my $formatter = Test::Builder2::Formatter->new(%args);

Creates a new formatter object to feed results to.

You want to call this on a subclass.

stream_depth

  my $stream_depth = $formatter->stream_depth;

Returns how many stream start events without stream end events have been seen.

For example...

    stream start

Would indicate a level of 1.

    stream start
      stream start
      stream end
      stream start

Would indicate a level of 2.

A value of 0 indiciates the Formatter is not in a stream.

A negative value will throw an exception.

stream_depth_inc

stream_depth_dec

Increment and decrement the stream_depth.

accept_event

  $formatter->accept_event($event);

Accept Events as they happen.

It will increment and decrement stream_depth as stream start and stream end events are seen.

Do not override accept_event(). Override INNER_accept_event().

accept_result

  $formatter->accept_result($result);

Formats a $result (an instance of Test::Builder2::Result).

It is an error to call accept_result() outside a stream.

Do not override accept_result(). Override INNER_accept_result().

write

  $output->write($destination, @text);

Outputs @text to the named $destination.

@text is treated like print, so it is simply concatenated.

In reality, this is a hand off to $formatter->streamer->write.