The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

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

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.

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.

AUTHOR

Michael G Schwern <schwern@pobox.com>