blob: 72269de8fd54adf6cd2a73c386009b065967405b [file] [log] [blame]
# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use warnings;
use strict;
use Apache::Test ();
use Apache::TestUtil;
use File::Spec::Functions qw(catfile catdir);
use lib catdir Apache::Test::vars('serverroot'), 'cgi-bin';
my $require = catfile Apache::Test::vars('serverroot'),
qw(cgi-bin perlrun_nondecl.pl);
print "Content-type: text/plain\n\n";
### declared package module ###
{
# require a module w/ package declaration (it doesn't get reloaded
# because it declares the package). But we still have a problem with
# subs declaring prototypes. When perlrun_decl->import is called, the
# original function's prototype doesn't match the aliases prototype.
# see decl_proto()
BEGIN { t_server_log_warn_is_expected()
if perlrun_decl->can("decl_proto");
}
use perlrun_decl;
die "perlrun_decl BEGIN block was run more than once"
if $MyData::blocks{perlrun_decl} > 1;
print "d";
print decl_proto(1);
}
### non-declared package module ###
{
# how many times were were called from the same interpreter
$MyData::blocks{cycle}{perlrun_nondecl}++;
$MyData::blocks{BEGIN}{perlrun_nondecl} ||= 0;
$MyData::blocks{END} {perlrun_nondecl} ||= 0;
# require a lib w/o package declaration. Functions in that lib get
# automatically aliased to the functions in the current package.
require "$require";
die "perlrun_nondecl's BEGIN block wasn't run"
if $MyData::blocks{BEGIN}{perlrun_nondecl} !=
$MyData::blocks{cycle}{perlrun_nondecl};
# the END block for this cycle didn't run yet, but we can test the
# previous cycle's one
die "perlrun_nondecl's END block wasn't run"
if $MyData::blocks{END}{perlrun_nondecl} + 1 !=
$MyData::blocks{cycle}{perlrun_nondecl};
# they all get redefined warning inside perlrun_nondecl.pl, since that
# lib loads it into main::, vs. PerlRun undefs the current __PACKAGE__
print "nd";
print nondecl_no_proto();
print nondecl_proto(2);
print nondecl_proto_empty("whatever");
print nondecl_const();
}