NAME
Test2::Harness - Test2 based test harness.
DESCRIPTION
This is an alternative to Test::Harness. See the App::Yath module for more details.
Try running the yath
command inside a perl repository.
$ yath
For help:
$ yath --help
USING THE HARNESS IN YOUR DISTRIBUTION
If you want to have your tests run via Test2::Harness instead of Test::Harness you need to do two things:
- Move your test files
-
You need to put any tests that you want to run under Test2::Harness into a directory other than
t/
. A good name to pick ist2/
, as it will not be picked up by Test::Harness automatically. - Add a test.pl script
-
You need a script that loads Test2::Harness and tells it to run the tests. You can find this script in
examples/test.pl
in this distribution. The example test.pl is listed here for convenience:#!/usr/bin/env perl use strict; use warnings; # Change this to list the directories where tests can be found. This should not # include the directory where this file lives. my @DIRS = ('./t2'); # PRELOADS GO HERE # Example: # use Moose; ########################################### # Do not change anything below this point # ########################################### use App::Yath; # After fork, Yath will break out of this block so that the test file being run # in the new process has as small a stack as possible. It would be awful to # have a bunch of Test2::Harness frames on all stack traces. T2_DO_FILE: { # Add eveything in @INC via -I so that using `perl -Idir this_file` will # pass the include dirs on to any tests that decline to accept the preload. my $yath = App::Yath->new(args => [(map { "-I$_" } @INC), '--exclude=use_harness', @DIRS, @ARGV]); # This is where we turn control over to yath. my $exit = $yath->run(); exit($exit); } # At this point we are in a child process and need to run a test file specified # in this package var. my $file = $Test2::Harness::Runner::DO_FILE or die "No file to run!"; # Test files do not always return a true value, so we cannot use require. We # also cannot trust $! $@ = ''; do $file; die $@ if $@; exit 0;
Most (if not all) module installation tools will find
test.pl
and run it, using the exit value to determine pass/fail.Note: Since Test2::Harness does not output the traditional TAP, you cannot use this example as a .t file in t/.
SOURCE
The source code repository for Test2-Harness can be found at http://github.com/Test-More/Test2-Harness/.
MAINTAINERS
AUTHORS
COPYRIGHT
Copyright 2016 Chad Granum <exodist7@gmail.com>.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
See http://dev.perl.org/licenses/