NAME

Test::Builder2::Result::Base - Store the result of an assert

SYNOPSIS

# Use TB2::Result as a factory, not TB2::Result::Base directly
my $result = Test::Builder2::Result->new_result(%options);

DESCRIPTION

This represents the result of an assert, whether it passed or failed, if it had any modifiers (directives), additional diagnostic information, etc...

NOTE: This object is in a very high state of flux.

Overloading

A Result object used as a boolean will be true if the assert passed, false otherwise.

METHODS

Attributes

description

name

my $name = $result->name;

The name of the assert. For example...

# The name is "addition"
ok( 1 + 1, "addition" );

description is the more generic alias to this method.

diagnostic

diag

my $diag = $result->diag;

The structured diagnostics associated with this result.

Diagnostics are currently an array ref of key/value pairs. Its an array ref to keep the order. This will probably change.

id

line

my $line = $result->line;

The line number upon which this assert was run.

Because a single result can represent a stack of actual asserts, this is generally the location of the first assert in the stack.

id is a more generic alias.

location

file

my $file = $result->file;

The file whre this assert was run.

Like line, this represents the top of the assert stack.

reason

my $reason = $result->reason;

The reason for any modifiers.

test_number

my $number = $result->test_number;

The number associated with this test, if any.

NOTE that most testing systems don't number their results. And even TAP tests are not required to do so.

Methods

event_type

my $type = $result->event_type;

Returns the type of this Event, for differenciation between other Event objects.

The type is "result".

as_hash

my $hash = $self->as_hash;

Returns the attributes of a result as a hash reference.

Useful for quickly dumping the contents of a result.

literal_pass

Returns true if the assert passed without regard to any modifiers.

is_unknown

Returns true if the result is unknown. This usually indicates that there should be a test here but none was written or it was skipped.

An example is a test skipped because it is not relevant to the current environment (like a Windows specific test on a Unix machine).

is_pass

Returns true if this test is considered a pass after consideration of any modifiers.

For example, the result of a TODO test is always considered a pass no matter what the actual result of the assert is.

is_fail

The opposite of is_pass.

is_todo

Returns true if this result is TODO.

is_skip

Returns true if the assert was recording as existing but never run.

SEE ALSO

Test::Builder2::Result Factory for creating results

Test::Builder2::History Store the results

Test::Builder2::Formatter Format results for display