blob: dcdc1747d1d4a6b1137f84f642e9697be771d238 [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 strict;
use warnings FATAL => 'all';
use Apache::Test;
use Apache::TestUtil qw(t_cmp t_catfile_apache t_client_log_error_is_expected);
use Apache::TestRequest;
use Apache::TestConfig ();
my %modules = (
registry => 'ModPerl::Registry',
registry_bb => 'ModPerl::RegistryBB',
perlrun => 'ModPerl::PerlRun',
);
my @aliases = sort keys %modules;
plan tests => @aliases * 5 + 3, need 'mod_alias.c';
my $vars = Apache::Test::config()->{vars};
my $script_file = t_catfile_apache $vars->{serverroot}, 'cgi-bin', 'basic.pl';
# very basic compilation/response test
for my $alias (@aliases) {
my $url = "/$alias/basic.pl";
ok t_cmp(
GET_BODY($url),
"ok $script_file",
"$modules{$alias} basic cgi test",
);
}
# test non-executable bit (it should be executed w/o a problem)
for my $alias (@aliases) {
if (Apache::TestConfig::WIN32) {
skip "non-executable bit test for Win32", 0;
next;
}
my $url = "/$alias/not_executable.pl";
t_client_log_error_is_expected();
ok t_cmp(
HEAD($url)->code,
200,
"$modules{$alias} non-executable file",
);
}
# test environment pre-set
for my $alias (@aliases) {
my $url = "/$alias/env.pl?foo=bar";
ok t_cmp(
GET_BODY($url),
"foo=bar",
"$modules{$alias} mod_cgi-like environment pre-set",
);
}
# require (actually chdir test)
for my $alias (@aliases) {
my $url = "/$alias/require.pl";
ok t_cmp(
GET_BODY($url),
"it works",
"$modules{$alias} mod_cgi-like environment pre-set",
);
}
# exit
for my $alias (@aliases) {
my $url = "/$alias/exit.pl";
ok t_cmp(
GET_BODY_ASSERT($url),
"before exit",
"$modules{$alias} mod_cgi-like environment pre-set",
);
}
# test method handlers
{
my $url = "/registry_oo_conf/env.pl?foo=bar";
ok t_cmp(
GET_BODY($url),
"foo=bar",
"ModPerl::Registry->handler mod_cgi-like environment pre-set",
);
}
# test mod_perl api usage
{
my $url = "/registry/content_type.pl";
ok t_cmp(
GET_BODY($url),
"ok",
"\$r->content_type('text/plain')",
);
}
# test that files with .html extension, which are configured to run as
# scripts get the headerparse stage working: the default mime handler
# sets $r->content_type for .html files, so we can't rely on
# content_type not being set in making the decision whether to parse
# headers or not
{
my $url = "/registry/send_headers.html";
my $res = GET $url;
ok t_cmp(
$res->content_type,
"text/plain",
"script's content-type",
);
}