The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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

Apache::TestMM provides wrappers for the ExtUtils::MakeMaker craft, making it easier to extend the autogenerated Makefile with Apache::Test.

FUNCTIONS

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 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.

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. If no argument is passed to generate_script(), it will create a file named t/TEST by default.