This script allows you to run the test suite, simulating the absense of a particular set of Perl modules, even if they are installed on your system.

To run the test suite multiple times in a row, each tie multiple times (each with a different selection of absent modules), run:

$ perl misc/prove_prereqs.pl t/*.t

To add a new set of absent modules, make a subdir under t/prereq_scenarios, and add a dummy perl module for every module you want to skip. This file should be empty. For instance if you wanted to simulate the absense of Text::Template and Text::TagTemplate, you would do the following:

$ mkdir t/prereq_scenarios/skip_tt+ttt
$ mkdir t/prereq_scenarios/skip_tt+ttt/Text
$ touch t/prereq_scenarios/skip_tt+ttt/Text/Template.pm
$ touch t/prereq_scenarios/skip_tt+ttt/Text/TagTemplate.pm

Finally, add this directory to the @Scenarios array below.

Note that this technique only works because of how AnyTemplate and its test suite are written. The AnyTemplate drivers each provide a method returning the list of modules they depend on. Each test script gets the list of modules and attempts to load them:

my @required_modules = $driver_module->required_modules;

foreach (@required_modules) {
    eval "require $_;";
    if ($@) {
        return;
    }
}
return 1;

If any of the modules fail to load, then the test script skips the tests associated with that module.