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 through out 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. Run this before changing directories.
- 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.
- can_run
-
can_run
takes only one argument: the name of a binary you wish to locate.can_run
works much like the unix binarywhich
or the bash commandtype
, which scans through your path, looking for the requested binary.Unlike
which
andtype
, this function is platform independent and will also work on, for example, Win32.If called in a scalar context it will return the full path to the binary you asked for if it was found, or
undef
if it was not.If called in a list context and the global variable
$INSTANCES
is a true value, it will return a list of the full paths to instances of the binary where found inPATH
, or an empty list if it was not found.
AUTHOR
Michael G Schwern <schwern@pobox.com>