Apache::TestMM - Provide MakeMaker Wrapper Methods
require Apache::TestMM; # import MY::test and MY::clean overrides for MM Apache::TestMM->import(qw(test clean)); # parse command line args Apache::TestMM::filter_args(); # autogenerate the script Apache::TestMM::generate_script('t/TEST');
Apache::TestMM
provides wrappers for the ExtUtils::MakeMaker
craft, making it easier to extend the autogenerated Makefile with
Apache::Test
.
import
use Apache::TestMM qw(test clean);
or:
Apache::TestMM->import(qw(test clean));
Imports MY::
overrides for the default ExtUtils::MakeMaker
test and clean targets, as if you have defined:
sub MY::test {...} sub MY::clean {...}
in Makefile.PL. Apache::TestMM
does this for you so that these Makefile
targets will run the Apache server and the tests for it, and clean up after
its mess.
filter_args
push @ARGV, '-apxs', $apxs_path; Apache::TestMM::filter_args(); WriteMakefile(...);
When WriteMakefile()
is called it parses @ARGV
, hoping to find
special options like PREFIX=/home/stas/perl
. Apache::Test
accepts a lot of configuration options of its own. When
Apache::TestMM::filter_args()
is called, it removes any
Apache::Test
-specific options from @ARGV
and stores them
internally, so when WriteMakefile()
is called they aren't in
@ARGV
and thus won't be processed by WriteMakefile()
.
The options can be set when Makefile.PL is called:
% perl Makefile.PL -apxs /path/to/apxs
Or you can push them manually to @ARGV
from the code:
push @ARGV, '-apxs', $apxs_path;
When:
Apache::TestMM::generate_script('t/TEST');
is called, Apache::Test
-specific options extracted by
Apache::TestMM::filter_args()
are written to the autogenerated
file. In our example, the autogenerated t/TEST will include:
%Apache::TestConfig::Argv = qw(apxs /path/to/apxs);
which is going to be used by the Apache::Test
runtime.
The other frequently used options are: -httpd
, telling where to
find the httpd (usually when the -apxs
option is not used),
-libmodperl
to use a specific mod_perl shared object (if your
mod_perl is built as DSO), -maxclients
to change the default number
of the configured MaxClients
directive, -port
to start the
server on a specific port, etc. To get the complete list of available
configuration options and their purpose and syntax, run:
% perl -MApache::TestConfig -le 'Apache::TestConfig::usage()'
You may wish to document some of these in your application's README
file, especially the -apxs
and -httpd
options.
generate_script
Apache::TestMM::generate_script('t/TEST');
generate_script()
accepts the name of the script to generate and
will look for a template with the same name and suffix .PL. So in
our example it'll look for t/TEST.PL. The autogenerated script
t/TEST will include the contents of t/TEST.PL, and special
directives, including any configuration options passed via
filter_args()
called from Makefile.PL, special
fixup code, etc.