man Apache::TestMM () - Provide MakeMaker Wrapper Methods
NAME
Apache::TestMM - Provide MakeMaker Wrapper Methods
SYNOPSIS
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');
DESCRIPTION
CWApache::TestMM provides wrappers for the CWExtUtils::MakeMaker craft, making it easier to extend the autogenerated Makefile with CWApache::Test.
FUNCTIONS
use Apache::TestMM qw(test clean);
or:
Apache::TestMM->import(qw(test clean));
Imports CWMY:: overrides for the default CWExtUtils::MakeMaker test and clean targets, as if you have defined:
sub MY::test {...} sub MY::clean {...}
in Makefile.PL. CWApache::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.
push @ARGV, '-apxs', $apxs_path; Apache::TestMM::filter_args(); WriteMakefile(...);
When CWWriteMakefile() is called it parses CW@ARGV, hoping to find special options like CWPREFIX=/home/stas/perl. CWApache::Test accepts a lot of configuration options of its own. When CWApache::TestMM::filter_args() is called, it removes any CWApache::Test-specific options from CW@ARGV and stores them internally, so when CWWriteMakefile() is called they aren't in CW@ARGV and thus won't be processed by CWWriteMakefile().
The options can be set when Makefile.PL is called:
% perl Makefile.PL -apxs /path/to/apxs
Or you can push them manually to CW@ARGV from the code:
push @ARGV, '-apxs', $apxs_path;
When:
Apache::TestMM::generate_script('t/TEST');
is called, CWApache::Test-specific options extracted by CWApache::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 CWApache::Test runtime.
The other frequently used options are: CW-httpd, telling where to find the httpd (usually when the CW-apxs option is not used), CW-libmodperl to use a specific mod_perl shared object (if your mod_perl is built as DSO), CW-maxclients to change the default number of the configured CWMaxClients directive, CW-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 CW-apxs and CW-httpd options.
Apache::TestMM::generate_script('t/TEST');
CWgenerate_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 CWCIfilter_args()CW called from Makefile.PL, special fixup code, etc.