NAME
MakeMaker::Test::Utils - Utility routines for testing MakeMaker
SYNOPSIS
use MakeMaker::Test::Utils;
my $perl = which_perl;
perl_lib;
my $makefile = makefile_name;
my $makefile_back = makefile_backup;
my $make = make;
my $make_run = make_run;
make_macro($make, $targ, %macros);
my $mtime = calibrate_mtime;
my $out = run($cmd);
my $have_compiler = have_compiler();
my $text = slurp($filename);
DESCRIPTION
A consolidation of little utility functions used throughout the MakeMaker test suite.
Functions
The following are exported by default.
- which_perl
-
my $perl = which_perl;
Returns a path to perl which is safe to use in a command line, no matter where you chdir to.
- perl_lib
-
perl_lib;
Sets up environment variables so perl can find its libraries.
- makefile_name
-
my $makefile = makefile_name;
MakeMaker doesn't always generate 'Makefile'. It returns what it should generate.
- makefile_backup
-
my $makefile_old = makefile_backup;
Returns the name MakeMaker will use for a backup of the current Makefile.
- make
-
my $make = make;
Returns a good guess at the make to run.
- make_run
-
my $make_run = make_run;
Returns the make to run as with make() plus any necessary switches.
- make_macro
-
my $make_cmd = make_macro($make, $target, %macros);
Returns the command necessary to run $make on the given $target using the given %macros.
my $make_test_verbose = make_macro(make_run(), 'test', TEST_VERBOSE => 1);
This is important because VMS's make utilities have a completely different calling convention than Unix or Windows.
%macros is actually a list of tuples, so the order will be preserved.
- calibrate_mtime
-
my $mtime = calibrate_mtime;
When building on NFS, file modification times can often lose touch with reality. This returns the mtime of a file which has just been touched.
- run
-
my $out = run($command); my @out = run($command);
Runs the given $command as an external program returning at least STDOUT as $out. If possible it will return STDOUT and STDERR combined as you would expect to see on a screen.
- run_ok
-
my @out = run_ok($cmd);
Like run() but it tests that the result exited normally.
The output from run() will be used as a diagnostic if it fails.
- have_compiler
-
$have_compiler = have_compiler;
Returns true if there is a compiler available for XS builds.
- slurp
-
$contents = slurp($filename);
Returns the $contents of $filename.
Will die if $filename cannot be opened.
- hash2files
-
hash2files('dirname', { 'filename' => 'some content' });
Goes through given hash-ref, treating each key as a /-separated filename under the specified directory, and writing the value into it. Will create any necessary directories.
Will die if errors occur.
- in_dir
-
$retval = in_dir(\&coderef); $retval = in_dir(\&coderef, $specified_dir); $retval = in_dir { somecode(); }; $retval = in_dir { somecode(); } $specified_dir;
Does a
chdir
to either a directory. If none is specified, one is created with File::Temp and then automatically deleted after. It ends bychdir
ing back to where it started.If the given code throws an exception, it will be re-thrown after the re-
chdir
.Returns the return value of the given code.
AUTHOR
Michael G Schwern <schwern@pobox.com>