|
|
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.
importuse 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_argspush @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()|/C_filter_args_ called from Makefile.PL, special
fixup code, etc.