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: