Test::Wrapper - Use Test::* tests outside of a TAP context
version 0.3.0
use Test::Wrapper; use Test::More; test_wrap( 'like' ); # doesn't output anything my $test = like 'foo' => qr/bar/; unless ( $test->is_success ) { print "test failed, diag output is: ", $test->diag; }
This module for the occasions where a Test::* test would be perfect for what you want to do, but the module doesn't provide an helper function that doesn't produce TAP.
Test::*
Test::Wrapper exports a single function, test_wrap, in the calling package, which wraps the desired testing functions. After being wrapped, the test functions will not emit TAP anymore, but rather return a Test::Wrapper object.
Test::Wrapper
test_wrap
It must be noted that Test::Wrapper only works with test modules inheriting from Test::Builder::Module.
Finally, Test::Wrapper will not mess up the Test::Builder, which means that if you really want, you can use it within a test file. For example, this would work:
use strict; use warnings; use Test::More tests => 1; use Test::Differences; use Test::Wrapper; test_wrap( 'eq_or_diff' ); my $test = eq_or_diff "foo", "bar"; ok $test, "eq_or_diff passed" or diag $test->diag;
Wraps the given test or tests such that, when invoked, they will not emit TAP output but return a Test::Wrapper object.
The parameters the function accepts are:
If defined, a wrapped function named '$prefix_<original_name>' will be created, and the original test function will be left alone.
use Test::More; use Test::Wrapper; test_wrap( 'like', prefix => 'wrapped_' ); like "foo" => qr/bar/; # will emit TAP # will not emit TAP my $test = wrapped_like( "yadah" => qw/ya/ );
Note that since the wrapped function will be created post-compile time, its prototype will not be effective, so parenthesis have to be used.
test_wrap( 'is' ); test_wrap( 'like', prefix => 'wrapped' ); # prototype of the original function makes # it magically work my $t1 = is $foo => $bar; # this, alas, will break my $t2 = like $foo => qr/$baz/; # ... so you have to do this instead my $t2 = like( $foo => qr/$baz/ );
Diagnostic message of the test. Will be empty if the test passed. The leading '#' of each line of the raw TAP output are stripped down.
Is true if the test passed, false otherwise.
true
false
TODO message of the test.
TAP result of the test '(ok 1 - yadah').
Name of the wrapped test.
The list of arguments passed to the test.
In a boolean context, the object will returns the value given by its is_success attribute.
is_success
test_wrap( 'like' ); my $test = like $foo => $bar; if ( $test ) { ... }
If stringified, the object will return the content of its diag attribute.
diag
print $test unless $test; # equivalent to unless ( $test->is_success ) { print $test->diag; }
Yanick Champoux <yanick@cpan.org>
This software is copyright (c) 2010 by Yanick Champoux.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
To install Test::Wrapper, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Test::Wrapper
CPAN shell
perl -MCPAN -e shell install Test::Wrapper
For more information on module installation, please visit the detailed CPAN module installation guide.