Blame t/glob_to_local_typeglob.t
|
Packit |
b48d6e |
BEGIN {
|
|
Packit |
b48d6e |
$|++;
|
|
Packit |
b48d6e |
my $exit_message = "";
|
|
Packit |
b48d6e |
unless ($ENV{AUTHOR_TEST}) {
|
|
Packit |
b48d6e |
$exit_message = "test only run when envariable AUTHOR_TEST is set";
|
|
Packit |
b48d6e |
}
|
|
Packit |
b48d6e |
unless ($exit_message) {
|
|
Packit |
b48d6e |
unless (eval { require Compress::Zlib; 1 }) {
|
|
Packit |
b48d6e |
$exit_message = "Compress::Zlib not found";
|
|
Packit |
b48d6e |
}
|
|
Packit |
b48d6e |
}
|
|
Packit |
b48d6e |
if ($exit_message) {
|
|
Packit |
b48d6e |
print "1..0 # SKIP $exit_message\n";
|
|
Packit |
b48d6e |
eval "require POSIX; 1" and POSIX::_exit(0);
|
|
Packit |
b48d6e |
exit;
|
|
Packit |
b48d6e |
}
|
|
Packit |
b48d6e |
}
|
|
Packit |
b48d6e |
|
|
Packit |
b48d6e |
use strict;
|
|
Packit |
b48d6e |
use warnings;
|
|
Packit |
b48d6e |
use Test::More 'no_plan';
|
|
Packit |
b48d6e |
use English;
|
|
Packit |
b48d6e |
|
|
Packit |
b48d6e |
diag("OS == $^O");
|
|
Packit |
b48d6e |
|
|
Packit |
b48d6e |
use Compress::Zlib;
|
|
Packit |
b48d6e |
use Devel::Symdump;
|
|
Packit |
b48d6e |
|
|
Packit |
b48d6e |
diag('$Devel::Symdump::VERSION == '.$Devel::Symdump::VERSION);
|
|
Packit |
b48d6e |
diag('$Compress::Zlib::VERSION == '.$Compress::Zlib::VERSION);
|
|
Packit |
b48d6e |
diag("Perl == $]");
|
|
Packit |
b48d6e |
|
|
Packit |
b48d6e |
my $glob_ref = eval {
|
|
Packit |
b48d6e |
no strict 'refs';
|
|
Packit |
b48d6e |
${*{"Compress::Zlib::"}}{GZIP_NULL_BYTE};
|
|
Packit |
b48d6e |
};
|
|
Packit |
b48d6e |
|
|
Packit |
b48d6e |
ok(!$@,'reference assignment');
|
|
Packit |
b48d6e |
diag('ref($glob_ref) == "'.ref($glob_ref).'"');
|
|
Packit |
b48d6e |
|
|
Packit |
b48d6e |
_check_child(sub {
|
|
Packit |
b48d6e |
local *ENTRY;
|
|
Packit |
b48d6e |
diag "Checking GLOB assignment to reference...";
|
|
Packit |
b48d6e |
*ENTRY = $glob_ref;
|
|
Packit |
b48d6e |
});
|
|
Packit |
b48d6e |
|
|
Packit |
b48d6e |
_check_child(sub {
|
|
Packit |
b48d6e |
diag "Checking Devel::Symdump->rnew->packages...";
|
|
Packit |
b48d6e |
Devel::Symdump->rnew->packages;
|
|
Packit |
b48d6e |
});
|
|
Packit |
b48d6e |
|
|
Packit |
b48d6e |
sub _check_child {
|
|
Packit |
b48d6e |
local *CHILD;
|
|
Packit |
b48d6e |
|
|
Packit |
b48d6e |
my $code = shift;
|
|
Packit |
b48d6e |
my $pid = open(CHILD, "|-");
|
|
Packit |
b48d6e |
|
|
Packit |
b48d6e |
unless ($pid) {
|
|
Packit |
b48d6e |
$code->();
|
|
Packit |
b48d6e |
exit 0;
|
|
Packit |
b48d6e |
} else {
|
|
Packit |
b48d6e |
my $w = waitpid($pid,0);
|
|
Packit |
b48d6e |
ok($w != -1 && $w == $pid,'waitpid()');
|
|
Packit |
b48d6e |
my $e = $? >> 8;
|
|
Packit |
b48d6e |
my $s = $? & 127;
|
|
Packit |
b48d6e |
my $c = $? & 128;
|
|
Packit |
b48d6e |
diag "exit value = $e";
|
|
Packit |
b48d6e |
diag "exit with signal = $s";
|
|
Packit |
b48d6e |
diag "dumped core? $c";
|
|
Packit |
b48d6e |
ok($s != 11,'child did not SEGV');
|
|
Packit |
b48d6e |
ok($e == 0 && $s == 0,'child exited properly');
|
|
Packit |
b48d6e |
}
|
|
Packit |
b48d6e |
}
|
|
Packit |
b48d6e |
|
|
Packit |
b48d6e |
|
|
Packit |
b48d6e |
# Local Variables:
|
|
Packit |
b48d6e |
# mode: cperl
|
|
Packit |
b48d6e |
# cperl-indent-level: 4
|
|
Packit |
b48d6e |
# End:
|