The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl
use strict;
use App::ForkProve;
App::ForkProve->run(@ARGV);

__END__

=head1 NAME

forkprove - forking prove

=head1 SYNOPSIS

  forkprove -MMoose -MCatalyst -MDBIx::Class -lr t

=head1 DESCRIPTION

forkprove is a forking version of prove that allows you to preload
modules with C<-M> and then run each test after forking, potentially
makes most of the tests to run faster without an overhead of loading
the same modules again and again, while having an isolated, clean
testing environment with a fork.

=head1 CAVEATS

=head2 Test::More

Do not try to preload L<Test::Builder> and friends because doing so will not output clean TAP.

=head2 Known patterns to fail

Following kind of tests are known to fail.

=over 4

=item

Tests that rely on the value of C<$FindBin::Bin>.

=item

Tests that expects C<END> block to run after each C<.t>

=back

=head1 WHY

L<Test::Aggregate> allows you to create a nested TAP output by running
a whole bunch of C<.t> files from a directory.

forkprove shares the basic idea, but it creates a whole new test
environment by making a copy of the process with fork for each test,
which means it could run your tests that rely on the singleton state
etc. without modifying the code to run with Test::Aggregate.

=head1 AUTHOR

Tatsuhiko Miyagawa

=head1 SEE ALSO

L<prove>, L<TAP::Parser>

=cut