Apache::TestMM(3pm)

πŸ’– NAME πŸ’–

Apache::TestMM β€” bestie, it's literally a MakeMaker Wrapper Methods situation. That's the whole job. That's the assignment. ✨


πŸ¦‹ SYNOPSIS πŸ¦‹

No cap, here's how you use it:

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');

okay so those comments stayed exactly as-is because they're literal, not vibes. 🫢


🌸 DESCRIPTION 🌸

So Apache::TestMM is serving wrappers for the ExtUtils::MakeMaker craft πŸ’… β€” it makes it so much easier to extend the autogenerated Makefile with Apache::Test. That's the whole plot. It's giving helpful. It's giving iconic. πŸ‘‘


✨ FUNCTIONS ✨

πŸŽ€ import

Either this:

use Apache::TestMM qw(test clean);

or this (same energy, different fit):

Apache::TestMM->import(qw(test clean));

What it does: it imports MY:: overrides for the default ExtUtils::MakeMaker test and clean targets β€” as if you had personally sat there and written:

sub MY::test {...}
sub MY::clean {...}

in your Makefile.PL. But you didn't, because Apache::TestMM does it for you 🫢, so those Makefile targets will run the Apache server and the tests for it, and clean up after its mess. Not me outsourcing my own chores to a Perl module. πŸ’€


🧚 filter_args

Here's the whole flow, bestie:

push @ARGV, '-apxs', $apxs_path;
Apache::TestMM::filter_args();
WriteMakefile(...);

So when WriteMakefile() gets called, it parses @ARGV, hoping to find special options like PREFIX=/home/stas/perl. The thing is, Apache::Test accepts a lot of configuration options of its own. So when Apache::TestMM::filter_args() is called, it removes any Apache::Test-specific options from @ARGV and stores them internally β€” which means when WriteMakefile() is called, they aren't in @ARGV and thus won't be processed by WriteMakefile(). Clean. Separated. Boundaries. periodt. πŸ’…

You can set those options when Makefile.PL is called:

% perl Makefile.PL -apxs /path/to/apxs

Or you can push them manually onto @ARGV straight from the code:

push @ARGV, '-apxs', $apxs_path;

And then β€” plot twist β€” when this gets called:

Apache::TestMM::generate_script('t/TEST');

...the Apache::Test-specific options that got extracted by Apache::TestMM::filter_args() are written to the autogenerated file. In our example, the autogenerated t/TEST will include this literal line:

%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, in no particular order but all iconic:

  • -httpd β€” tells where to find the httpd (usually when the -apxs option is not used)
  • -libmodperl β€” use a specific mod_perl shared object (if your mod_perl is built as DSO)
  • -maxclients β€” change the default number of the configured MaxClients directive
  • -port β€” 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. Like, genuinely, document them. Your future self is watching. πŸ‘€


πŸ¦„ 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, plus special directives β€” including any configuration options passed via filter_args() called from Makefile.PL β€” plus special fixup code, etc. It's giving assembled with love. πŸŽ€


πŸ‘‘ SEE ALSO

(There are no SEE ALSO references in this page, bestie β€” it's a solo act. main character energy, literally.)


And that's the whole page, babes! πŸ’œ This one came to you from perl v5.42.3, dated 2026-08-20, and it's part of the User Contributed Perl Documentation, so go forth and write your Makefile.PL like the icon you are. πŸ¦‹βœ¨

πŸ“¦ where this page comes from