Alien-SNMP
view release on metacpan or search on metacpan
t/07_alienfile_hygiene.t view on Meta::CPAN
use strict;
use warnings;
use Test::More;
# Author check on the build recipe itself. An Alien::Build `build` command must
# confine every write to $DESTDIR: Alien::Build and ExtUtils::MakeMaker re-prepend
# DESTDIR during the *install* phase, when the process has the right privileges and
# the user's install target is known. A build-phase write to a reconstructed
# absolute path is what made CPAN Testers fail with
# copy .../destdir_XXXX/usr/local/lib64/perl5/5.32/SNMP.pm: Permission denied
# Not run for installers.
unless ($ENV{RELEASE_TESTING}) {
plan skip_all => 'Author tests not required for installation';
}
# Comment lines are stripped: the recipe documents *why* it no longer touches these
# things, and that prose must not read as a violation.
my $alienfile = join "\n", grep { !/^\s*#/ } split /\n/, _slurp('alienfile');
# A substitution whose pattern mentions DESTDIR, e.g. s/^\Q$destdir\E// -- the only
# reason to write one is to turn a staged path back into a live one. Bounded to a
# single statement so an unrelated later mention cannot trip it.
unlike $alienfile, qr/=~ \s* s [^;]{0,120} DESTDIR/xi,
'alienfile__build_recipe__never_strips_DESTDIR_to_rebuild_an_absolute_path';
# perllocal.pod is an append-only global manifest and .packlist is per-install
# bookkeeping; both belong to whatever installs this distribution, never to us.
foreach my $artifact (qw( perllocal.pod .packlist )) {
unlike $alienfile, qr/\Q$artifact\E/,
"alienfile__build_recipe__does_not_handle_$artifact";
}
done_testing;
sub _slurp {
my ($file) = @_;
open my $fh, '<', $file or die "can't read $file: $!";
local $/;
my $content = <$fh>;
close $fh;
return $content;
}
( run in 0.520 second using v1.01-cache-2.11-cpan-0fb53d1c279 )