03 Jul 2013 23:05:38 UTC
- Distribution: forkprove
- Source (raw)
- Browse (raw)
- How to Contribute
- Issues (3)
- KwaliteeBus factor: 1
- License: perl_5
- Perl: v5.8.1
- Activity24 month
- Download (14.8KB)
- MetaCPAN Explorer
- Subscribe to distribution
- This version
- Latest version++ed by:4 non-PAUSE usersMIYAGAWA Tatsuhiko Miyagawaand 3 contributors
- Jesse Luehrs
- Jonathan Swartz
- Shigeki Morimoto
forkprove - forking prove
forkprove -MMoose -MCatalyst -MDBIx::Class -j8 -lr t
forkprove is a forking version of prove that allows you to preload modules with
-Mand 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.
It works well with parallel testing as well, combined with
You can specify an environment variable
PERL_FORKPROVE_IGNOREto contain a regular expression to ignore files to test with forkprove.
PERL_FORKPROVE_IGNORE=no-preload forkprove -lr t
This will run the tests whose filenames and directory match
no-preloadwith the standard perl execution via prove.
Following kind of tests might fail when tested under forkprove. There are workarounds in forkprove to detect/fix some of them, so don't be surprised if your tests still pass :)
Tests that rely on the value of
Tests that relies on
INITblock to run correctly.
See also http://search.cpan.org/~flora/Test-Aggregate-0.364/lib/Test/Aggregate.pm#CAVEATS, many of which could apply to forkprove as well.
Test::Aggregate allows you to create a nested TAP output by running a whole bunch of
.tfiles 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.
If you have a bunch of modules you want to load, put them in a file
t/Preload.pmand load it:
If you're lazy and just load all of
.pmfiles in lib and t: use lib::require::all
Your mileage might vary, if forkprove runs your tests faster or not. For lightweight modules, we've found that using forkprove doesn't make any siginificant difference, due to the fact that fork overhead nullifies the benefit of preloading modules.
On the other hand, test suite with Moose, Catalyst and Dist::Zilla seems to run 80-100% faster with forkprove and
Module Install Instructions
To install App::ForkProve, copy and paste the appropriate command in to your terminal.
perl -MCPAN -e shell install App::ForkProve
For more information on module installation, please visit the detailed CPAN module installation guide.