Apache::TestMM(3)
π Apache::TestMM π
ok so this is a page from the User Contributed Perl Documentation section of the manual (yes bestie, the perl people let users contribute docs, iconic behaviour honestly π«Ά). It's all about a little wrapper module that makes ExtUtils::MakeMaker play nice with Apache::Test. Let's get into it β¨
πΈ NAME πΈ
Apache::TestMM β it provides MakeMaker Wrapper Methods, periodt. That's the whole vibe. π
π¦ SYNOPSIS π¦
like, here's the whole flow in one go:
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');
that's it, that's the ritual π
β¨ DESCRIPTION β¨
Apache::TestMM hands you wrappers for the ExtUtils::MakeMaker craft (yes, "craft", like it's a whole artisanal thing π§). The point? It makes extending the autogenerated Makefile with Apache::Test so much easier. no cap, it just does the fiddly bits for you.
π₯ FUNCTIONS π₯
β import
you can do it either way, bestie:
use Apache::TestMM qw(test clean);
or:
Apache::TestMM->import(qw(test clean));
Either one imports MY:: overrides for the default ExtUtils::MakeMaker test and clean targets β exactly as if you'd written this yourself in Makefile.PL:
sub MY::test {...}
sub MY::clean {...}
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. (the mess is real π but she handles it π«Ά)
π filter_args
ok so picture this:
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. But here's the thing β 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, so when WriteMakefile() is called they aren't in @ARGV and thus won't be processed by WriteMakefile(). clean. π
You can set the options right 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;
And then when:
Apache::TestMM::generate_script('t/TEST');
is called, the 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. she remembers everything, bestie π§ β¨
The other frequently used options are:
-httpdβ tells it where to find the httpd (usually when the-apxsoption 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 configuredMaxClientsdirective-portβ start the server on a specific port- etc. (yes, "etc.", the manpage said it, not me π)
To get the complete list of available configuration options and their purpose and syntax, run:
% perl -MApache::TestConfig -le 'Apache::TestConfig::usage()'
π‘ lowkey a good idea: you may wish to document some of these in your application'sREADMEfile, especially the-apxsand-httpdoptions. future-you will thank you, fr fr π«Ά
π generate_script
Apache::TestMM::generate_script('t/TEST');
generate_script() accepts the name of the script to generate, and it'll 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. it's giving "glow up via template" π
so yeah, that's the whole page, bestie β go forth and Makefile.PL with confidence π
π this page is from the User Contributed Perl Documentation, and it ships withperl v5.42.3, dated2023-10-21. slay. π β¨
π¦ where this page comes from
- nixos 26.05: mod_perl 2.0.13
- nixpkgs unstable: mod_perl 2.0.13
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms