NAME
Test::Suite::TestHelper - Make Test::Suite testable
DESCRIPTION
Prevents plugins from producing TAP output and instead provides you with results that would be sent to Test::Suite.
SYNOPSYS
#!/usr/bin/perl
use Test::Suite::TestHelper;
use warnings;
use strict;
use Test::More;
use Data::Dumper;
# Should be in a BEGIN to make testers with prototypes work.
BEGIN {
real_tests { use_ok( 'MyPlugin' ) };
MyPlugin->export_to( __PACKAGE__ );
}
my_tester( ... );
my_other_tester( ... );
my $results = results();
# Actual tests that should produce output must be in a 'real_tests' block.
real_tests {
ok( @$results, "found results" );
};
A single result will follow this format
{
# These are reliable.
result => $TEST_RESULT, # what your custom tester returned
name => $TEST_NAME, # The second item your custom tester returned
time => $RUN_TIME, # How long the test took to run (Timer::HiRes)
debug => \@DEBUG, # If the test failed this should contain
# extra information that should be printed for
# the user (This is all the other elements your
# custom tester returned)
# These should be reliable
package => $PACKAGE, # Package the test was run from
filename => $FILENAME, # Filename test was run from
line => $LINE, # Line number where test was run
# These may or may not be defined
todo => $REASON, # If the test was run in a todo {} block.
# If run under a set/case these will be references to the case/set objects
case => $CASE,
set => $SET,
}
EXPORTED FUNCTIONS
- $results = results()
- results(1)
-
Returns an arrayref with all the results obtained since results was last cleared. Optional argument tells results() to clear all results.
- $diags = diags()
- diags(1)
-
Returns an arrayref with all diags issued since diags were last cleared. Optional argument will clear the list.
- push_diags( @messages )
-
Add messages to diags.
- real_tests( $code )
-
Run tests with normal Test::Builder. This is where your tests actually work as tests.
MAGIC BE HERE
This works by overriding parts of Test::Suite::Plugin so that when called parts of Test::Suite are lexically overriden. There is all kinds of room from problems here, but I am not sure of a better way yet, just be careful.
AUTHORS
Chad Granum exodist7@gmail.com
COPYRIGHT
Copyright (C) 2010 Chad Granum
Test-Suite is free software; Standard perl licence.
Test-Suite is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the license for more details.