33
'$r->pool' => $r->pool,
34
'$r->connection->pool' => $r->connection->pool,
35
'$r->server->process->pool' => $r->server->process->pool,
36
'$r->server->process->pconf' => $r->server->process->pconf,
37
'Apache->server->process->pconf' => Apache->server->process->pconf,
38
'APR::Pool->new' => APR::Pool->new,
43
'$r->connection' => $r->connection,
44
'$r->server' => $r->server,
45
'__PACKAGE__->new($r)' => __PACKAGE__->new($r),
50
400 => '400 Bad Request',
51
500 => '500 Internal Server Error',
53
plan $r, tests => (scalar keys %pools) +
54
(scalar keys %objects) +
55
(scalar keys %status_lines) + 11;
36
my @expected = qw(ModPerl::Test::exit_handler TestExit::FromPerlModule::exit_handler);
38
@{ $s->get_handlers('PerlChildExitHandler') || []};
39
ok t_cmp(scalar(@handlers), scalar(@expected), "get_handlers");
42
t_debug('Apache2::ServerUtil::exists_config_define');
43
ok Apache2::ServerUtil::exists_config_define('MODPERL2');
44
ok ! Apache2::ServerUtil::exists_config_define('FOO');
46
t_debug('registering method FOO');
47
ok $r->server->method_register('FOO');
49
server_root_relative_tests($r);
51
eval { Apache2::ServerUtil::server_shutdown_cleanup_register(
52
sub { Apache2::Const::OK });
54
my $sub = "server_shutdown_cleanup_register";
55
ok t_cmp $@, qr/Can't run '$sub' after server startup/,
56
"can't register server_shutdown cleanup after server startup";
58
# on start we get 1, and immediate restart gives 2
59
ok t_cmp Apache2::ServerUtil::restart_count, 2, "restart count";
66
sub server_root_relative_tests {
72
'$r->connection->pool' =>
74
'$r->server->process->pool' =>
75
$r->server->process->pool,
76
'$r->server->process->pconf' =>
77
$r->server->process->pconf,
78
'Apache2::ServerUtil->server->process->pconf' =>
79
Apache2::ServerUtil->server->process->pconf,
57
84
# syntax - an object or pool is required
58
t_debug("Apache::server_root_relative() died");
59
eval { my $dir = Apache::server_root_relative() };
85
t_debug("Apache2::ServerUtil::server_root_relative() died");
86
eval { my $dir = Apache2::ServerUtil::server_root_relative() };
60
87
t_debug("\$\@: $@");
63
t_debug("Apache->server_root_relative() died");
64
eval { my $dir = Apache->server_root_relative() };
67
# syntax - first argument must be an object, not a class
68
t_debug("Apache->server_root_relative('conf') died");
69
eval { my $dir = Apache->server_root_relative('conf') };
72
90
foreach my $p (keys %pools) {
74
ok t_cmp(catfile($serverroot, 'conf'),
75
canonpath(Apache::server_root_relative($pools{$p},
77
"Apache:::server_root_relative($p, 'conf')");
80
# dig out the pool from valid objects
81
foreach my $obj (keys %objects) {
83
ok t_cmp(catfile($serverroot, 'conf'),
84
canonpath($objects{$obj}->server_root_relative('conf')),
85
"$obj->server_root_relative('conf')");
91
# we will leak memory here when calling the function with a
92
# pool whose life is longer than of $r, but it doesn't matter
95
canonpath(Apache2::ServerUtil::server_root_relative($pools{$p},
97
catfile($serverroot, 'conf'),
98
"Apache2::ServerUtil:::server_root_relative($p, 'conf')");
88
101
# syntax - unrecognized objects don't segfault
90
my $obj = bless {}, 'Apache::Foo';
91
eval { Apache::server_root_relative($obj, 'conf') };
103
my $obj = bless {}, 'Apache2::Foo';
104
eval { Apache2::ServerUtil::server_root_relative($obj, 'conf') };
93
ok t_cmp(qr/server_root_relative.*no .* key/,
95
"Apache::server_root_relative(\$obj, 'conf')");
107
qr/p is not of type APR::Pool/,
108
"Apache2::ServerUtil::server_root_relative(\$obj, 'conf')");
98
111
# no file argument gives ServerRoot
99
ok t_cmp(canonpath($serverroot),
100
canonpath($r->server_root_relative),
101
'$r->server_root_relative()');
103
ok t_cmp(canonpath($serverroot),
104
canonpath(Apache::server_root_relative($r->pool)),
105
'Apache::server_root_relative($r->pool)');
107
# Apache::server_root is also the ServerRoot constant
108
ok t_cmp(canonpath(Apache::server_root),
109
canonpath($r->server_root_relative),
110
'Apache::server_root');
113
my $server_root_relative =
114
Apache2::ServerUtil::server_root_relative($r->pool);
116
ok t_filepath_cmp(canonpath($server_root_relative),
117
canonpath($serverroot),
118
'server_root_relative($pool)');
120
# Apache2::ServerUtil::server_root is also the ServerRoot constant
121
ok t_filepath_cmp(canonpath(Apache2::ServerUtil::server_root),
122
canonpath($server_root_relative),
123
'Apache2::ServerUtil::server_root');
113
128
# absolute paths should resolve to themselves
114
my $dir = $r->server_root_relative('logs');
116
ok t_cmp($r->server_root_relative($dir),
118
"\$r->server_root_relative($dir)");
121
t_debug('registering method FOO');
122
ok Apache::method_register($r->server->process->pconf, 'FOO');
124
t_debug('Apache::exists_config_define');
125
ok Apache::exists_config_define('MODPERL2');
126
ok ! Apache::exists_config_define('FOO');
128
while (my($code, $line) = each %status_lines) {
130
Apache::get_status_line($code),
131
"Apache::get_status_line($code)");
129
my $dir1 = Apache2::ServerUtil::server_root_relative($r->pool, 'logs');
130
my $dir2 = Apache2::ServerUtil::server_root_relative($r->pool, $dir1);
132
ok t_filepath_cmp($dir1, $dir2, "absolute path");