Test::Group::Tester - Test Test::Group extensions
Test::Group::Tester version 0.01
use Test::More tests => 1;
use Test::Group::Tester;
testscript_ok('#line '.(__LINE__+1)."\n".<<'EOSCRIPT', 3);
use Test::More;
use Test::Group;
# Test a passing test group
want_test('pass', "this_should_pass");
test this_should_pass => sub {
ok 1, "1 is true";
ok 2, "2 is true";
};
# Test a failing test group
want_test('fail', "this_should_fail",
fail_diag("0 is true", 0, __LINE__+5),
fail_diag("this_should_fail", 1, __LINE__+5),
);
test this_should_fail => sub {
ok 1, "1 is true";
ok 0, "0 is true";
};
# Test a skipped test group
want_test('skip', "just because I can");
skip_next_test("just because I can");
test this_should_be_skipped => sub {
ok 0;
};
EOSCRIPT
Test the behavior of a Test::Harness compatible test script, by spawning an
external process to run the script and capturing its STDOUT and STDERR.
Includes support for matching the failed test diagnostic messages produced by
Test::Group and Test::Builder.
Useful when writing tests for Test::Group extension modules, see
Test::Group::Extending.
This module is used within the test suite of Test::Group itself,
so several usage examples can be found by searching for
"testscript_ok" in the files in
Test::Group's t subdirectory.
- testscript_ok($source, $plan,
$name)
- A test predicate for checking that a test script acts as expected. Runs
the script capturing STDOUT and STDERR and fails if anything unexpected
happens.
The expected behavior of the script is defined by calling
want_test() from within the script, just before running each
test.
$source is the body of the test script,
as a single multi-line string.
$plan is the number of tests that the
test script will run.
$name is a name for this test.
Some code will be prepended to $source,
to make the want_test() and fail_diag() functions
available and to set the test plan to $plan.
Tip: include a "#line"
directive in your script source as shown in the SYNOPSIS above, so that
the reported line numbers for problems will point to the correct line in
your source file.
The following functions are for use from within the script under test. They are
not exported by default.
- want_test($type, $name, @diag)
- Declares that the next test will pass or fail or be skipped according to
$type, will have name $name and
will produce the diagnostic output lines listed in
@diag.
$type must be one of the strings 'pass',
'fail', 'skip'. $name can be undef for a test
without a name. The elements of @diag can be
strings for an exact match, or regular expressions prefixed with
"/" or compiled with
"qr//".
Note that diagnostic lines consist of a hash character
followed by a space and then the diagnostic message. The strings and
patterns passed to want_test() must include this prefix.
- fail_diag($test_name [,$from_test_builder] [,$line] [,$file])
- Call only in a list context, and pass the results to want_test() as
diagnostic line patterns.
Returns the diagnostic line pattern(s) to match output from a
failed test. $test_name is the name of the test, or
undef for a nameless test. $line should be defined
only if a file and line diagnostic is expected, and should give the
expected line number. $file is the filename for the
failed test diagnostic, it defaults to the current file.
$from_test_builder should be true if
Test::Builder will produce the diagnostic, false if the diagnostic will
come from Test::Group. The expected text will be adjusted according to
the version of Test::Builder or Test::Group in use.
Nick Cleaton <ncleaton@cpan.org>
Dominique Quatravaux <domq@cpan.org>
Copyright (c) 2009 by Nick Cleaton and Dominique Quatravaux
This library is free software; you can redistribute it and/or
modify it under the same terms as Perl itself, either Perl version 5.8.1 or,
at your option, any later version of Perl 5 you may have available.