use strict;
use warnings FATAL => 'all';

use Apache::TestRequest qw(GET_BODY_ASSERT);
use Apache::Test;
use Apache::TestUtil;

my $module = 'TestModperl::setupenv';
my $url    = Apache::TestRequest::module2url($module);

t_debug("connecting to $url");

my @locations = ("${url}_mpdefault",
                 "${url}_mpsetup",
                 "${url}_mpdefault",  # make sure %ENV is cleared
                 "${url}_mpvoid",
                 "${url}_mpsetupvoid",
                 "${url}_psdefault",
                 "${url}_psnosetup",
                 "${url}_psvoid",
                 "${url}_psnosetupvoid");

# plan the tests from a handler so we can run
# tests from within handlers across multiple requests
#
# this requires keepalives and a per-connection interpreter
# to make certain we can plan in one request and test in another
# which requires LWP
unless (need_lwp() && need_module('mod_env')) {
    plan tests => 63, 0;
}

Apache::TestRequest::user_agent(keep_alive => 1);
print GET_BODY_ASSERT join '?', $url, scalar @locations;

# this tests for when %ENV is populated with CGI variables
# as well as the contents of the subprocess_env table
#
# see setupenv.pm for a full description of the tests

foreach my $location (@locations) {

    t_debug("trying $location");

    print GET_BODY_ASSERT $location;
}
