7
7
use Apache::TestUtil;
8
use File::Spec::Functions qw(canonpath catfile);
9
10
use Apache::RequestRec ();
10
11
use Apache::ServerUtil ();
12
use Apache::Process ();
12
16
use Apache::Const -compile => 'OK';
18
my $serverroot = Apache::Test::config()->{vars}->{serverroot};
20
our @ISA = qw(Apache::RequestRec);
25
bless { r => $r }, $class;
21
for my $p ($r->pool, $r->connection->pool,
22
$r, $r->connection, $r->server)
24
my $dir = Apache::server_root_relative($p, 'conf');
29
my $dir = Apache::server_root; #constant
33
$dir = join '/', Apache::server_root, 'logs';
35
ok $dir eq Apache::server_root_relative($r->pool, 'logs');
37
$dir = Apache->server_root_relative('logs'); #1.x ish
41
#$r->server_root_relative works with use Apache::compat
42
$dir = Apache->server_root_relative(); #1.x ish
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;
57
# syntax - an object or pool is required
58
t_debug("Apache::server_root_relative() died");
59
eval { my $dir = Apache::server_root_relative() };
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
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')");
88
# syntax - unrecognized objects don't segfault
90
my $obj = bless {}, 'Apache::Foo';
91
eval { Apache::server_root_relative($obj, 'conf') };
93
ok t_cmp(qr/server_root_relative.*no .* key/,
95
"Apache::server_root_relative(\$obj, 'conf')");
98
# 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
# 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)");