=head1 NAME

Changes - Apache::Test change logfile

=head1 CHANGES

=over 3

=item 1.13 - Aug 20, 2004

move the custom config code into Apache::TestConfig, split the config
object creation in 2 parts - first not requiring the knowledge of
httpd location, the second requiring one, refactor the custom config
interactive prompting into the second phase, if failed to find
httpd. Reshuffle the code to run first bits not requiring the
knowledge of httpd location. [Stas]

fix Apache::TestCommonPost::lwp_do to work with LWP 5.800
($res->content() doesn't allow CODE refs anymore, instead used
content_ref to avoid huge strings copy) [Stas]

add @PHP_MODULE@ extra.conf.in substitution variable, which selects
mod_php4 or mod_php5 as appropriate.  [Geoffrey Young]

the have() function was removed entirely - use need() instead.
[Geoffrey Young]

add need() and need_* variant functions (need_module(), need_apache(),
etc) for use specifically with plan() to decide whether or not a test
should run.  have_* variants (have_module(), have_apache(), etc) are
now specifically for use outside of plan(), although they can continue
to be used within plan() without fear of current tests breaking.
[Geoffrey Young]

add need_php() and have_php() which will return true when either
mod_php4 or mod_php5 are available, providing functionality similar to 
need_cgi() and have_cgi().
[Geoffrey Young]

Add APACHE_TEST_EXTRA_ARGS make variable to all invocations to t/TEST
to allow passing extra arguments from the command line. [Gozer]

When APACHE_TEST_NO_STICKY_PREFERENCES=1 is used don't even try to
interactively configure the server, as we don't save any config it was
entering an infinite loop. [Stas]

If a directory t/lib exists from where the tests are run, adjust
@INC so that this directory is added when running the tests,
both within t/TEST and within t/conf/modperl_inc.pl.
This allows inclusion of modules specific to the tests that 
aren't intended to be installed. [Stas, Randy]

make a special case for threaded mpm configuration, to ensure that
unless maxclients was specified, MaxClients will be exactly twice
bigger than ThreadsPerChild (minclients), since if we don't do that,
Apache will reduce MaxClients to the same value as
ThreadsPerChild. [Stas]

Renamed generate_test_script() to generate_script() in Apache::TestMB
to match the naming convention used in Apache::TestMM and elsewhere.
[David]

Apache::TestMB now only prints the "Generating test running script"
message if verbosity is enabled (e.g., by passing --verbose when
executing Build.PL). [David]

Fixed the "requests_redirectable" parameter to
Apache::TestRequest::user_agent() so that it works as docmented when
passed a negative value. [Boris Zentner]

Documented support for passing an array reference to the
"requests_redirectable" parameter to Apache::TestRequest::user_agent()
to be passed to LWP::UserAgent if LWP ist installed. [David]


=item 1.12 - June 28, 2004

Force projects that use Apache::TestReportPerl to implement
report_to() if they use t/REPORT in their projects. [Stas]

Add redirect tests [David Wheeler <david@kineticode.com>]

add -no-httpd runtime option to allow tests to run without configuring,
starting, or stopping Apache.  this essentially provides a direct
Test::Harness interface through t/TEST, useful for running single tests
that do not depend on Apache.  [Geoffrey Young]

Add support for Module::Build, with a new module: Apache::TestMB (a
"clone" of Apache::TestMM for ExtUtils::MakeMaker). [David Wheeler
<david@kineticode.com>]

switch the order of arguments in t_cmp() and t_is_equal() so that
the order matches Test::More::is() and other Test::More functions.
the new call is: t_cmp($received, $expected, $comment);  support
for $expected as the first argument marked as deprecated and will
be removed in the course of the next few release cycles.
[Geoffrey Young]

add skip_reason() to Apache::Test, which provides a mechanism for
user-specified skip messages [Geoffrey Young]

Tweak Apache::TestRun to support test filenames starting with
/(.\\)?t\\/ prefixes, windows style (needed for t/SMOKE) [Steve Hay]



=item 1.11 - May 21, 2004

if we fail to match the Apache revision (which is OK at the early
stages, like 'perl Makefile.PL', default to a non-existing revision
0. But provide no more misleading defaults (used to default to
revision 2 and then looking for mod_perl2). [Stas]

Improve the regex to match the Apache revision out of 'httpd -v'
[Michael A Nachbaur <mike@nachbaur.com>]

-minclients is now what -maxclients used to be, -maxclients is now
really what it says it is [Stas]

Fix Apache::TestRequest::lwp_as_string to work with LWP 5.79 [Stas]




=item 1.10 - April 18, 2004

Quote and escape the executables in the shell calls [Ken Coar, Stas]

Quote and escape filtered args received during 'perl Makefile.PL'
[Geoffrey Young, Ken Coar]

add :withtestmore import tag to Apache::Test, which will export
all standard Apache::Test symbols except those that collide with
Test::More.  [Geoffrey Young]

Use function prototypes in Apache::TestUtil functions t_cmp() and
t_is_equal() to handle the case when an argument to the function, is a
function call itself which may return undef (previously had to
explicitly force a scalar context to get the undef value). The idea
was borrowed from Test::More. [Stas]

Fixed a Windows-only segment which would result in a
'use of uninitialised value' error if a hash being traversed
had an entry with a key but an undefined value.  [Ken]

Support continuous configuration line when parsing the inherited
configuration file [Stas]

Since some of the inherited from the global httpd.conf modules require
mod_perl to be loaded first, arrange for that to happen. [Stas]

Don't try to set ulimit unlimited for coredumps on Solaris, unless run
as root [Rob Kinyon <Rob.Kinyon@progressive-medical.com>]

Added '-httpd_conf_extra <filename>' configuration option to
allow a file of server config directives to be inherited
in addition to the server's own httpd.conf file (or the one
specified by -httpd_conf).  [Ken and Stas]

Generated Listen directive now listen on 0.0.0.0 to force using
IPv4 addresses on IPv6 systems until LWP supports IPv6. [Gozer]

improved docs [David Wheeler <david@kineticode.com>]

Add a virtual method Apache::TestRun::pre_configure, and fix the
documentation to say that subclasses must not forget to run the
superclass' method. [Stas]

Apache::TestRunPerl now performs an early check whether it can load
the right mod_perl environment. [William McKee <william@knowmad.com>,
Stas]

$ENV{APACHE_TEST_NO_STICKY_PREFERENCES}, if true, will both suppress
generation of persistent preferences and ignore any that already exist.
[Geoffrey Young]

make the project's test suite relocatable, handling the case where
after Apache-Test configuration was created and not cleaned up before
the directory was moved. This is especially important for those cases
where users try to run 'make test' as root from /root, A-T tells them
that they can't do that (because of the perms) and suggests to try
again, afer moving the whole project under /tmp or similar. [Stas]

When running as 'root' make the client side drop the root permissions
and run with the same permissions as the server side
(e.g. nobody). This is needed in case the client side creates any
files after the initial check (during server side startup and beyond),
so that the server side could read/write them. [Stas]

t_server_log_error_is_expected t_server_log_warn_is_expected
t_client_log_error_is_expected t_client_log_warn_is_expected
now support an optional argument, suggesting how many entries
to expect [Stas]



=item 1.09 - March 8, 2004

remove the dependency on APR::UUID (i.e. mod_perl 2.0) in the
same_interpreter framework (use plain time/rand/$$ concatenation)
[Stas]

Updated to the new Apache License Version 2.0 [Gozer]

handle cases on Win32 when supplied paths have spaces in their
names [Stas]

c-modules build errors are no longer ignored [Stas]

change -DAPACHE1 (and like defines) to -D APACHE1 to fix Win32
compatibility issues [Steve Hay]

fix the custom config use for Apache-Test's own upgrades [Stas]



=item 1.08 - February 24, 2004

Instead of hard-coding listen directive to 127.0.0.1, use the server
name. [Gozer]

added -defines configuration option, providing a way to pass additional
-D names to the server for use in <IfDefine> blocks.  [Geoffrey Young]

Make it possible to run TEST (or another driving script) from any path
(e.g. t/TEST, ./TEST, /full/path/to/t/TEST) [Stas]

If at least one *conf*.in files is modified since the last
configuration, make sure to regenerate them all, so the right ports
will be assigned. [Stas]

Make sure that Apache-Test modules are installed into INSTALLSITEARCH
during a standalone build. Because EU::MM does so when A-T is bundled
with mp2, and we want to avoid having A-T installed in two different
places under @INC. [Stas]

HTTP/0.9 responses no longer croak, provided $ENV{APACHE_TEST_HTTP_09_OK} 
is true.  [Geoffrey Young]

Hard-code listen directive to 127.0.0.1, solving problems for people
with IPv4 & IPv6 address until a better solution is found. [Gozer]

prefix Apache::TestTrace (non-colour mode) messages with the loglevel,
similar to what Apache does. [Stas]

Instrument A-T with an optional successful (shell-wise) abort of the
test suite, by asking the user whether they want to continue w/o
completing the test suite. Use it in places where we know that the
test suite will certaionly fail (e.g. running from /root as 'root', or
not providing httpd/apxs locations). [Stas]

In order to make Apache-Test compatible with the rest of Perl testing
frameworks, we no longer chdir into t/, but run from the root of the
project (where t/ resides). A test needing to know where it's running
from (e.g. to read/write files/dirs on the filesystem), should do that
relative to the serverroot, documentroot and other server
configuration variables, available via
Apache::Test::vars('serverroot'), Apache::Test::vars('documentroot'),
etc. [Stas]

Apache::Test::vars() can now query for config arguments [Stas]

generate t/conf if it does not already exist, which
it may not if the tests are entirely autoconfigured.
[Geoffrey Young]

Special to Apache-Test environment variables:
APXS APACHE APACHE_GROUP APACHE_USER APACHE_PORT
are now moved to:
APACHE_TEST_APXS APACHE_TEST_HTTPD APACHE_TEST_GROUP 
APACHE_TEST_USER APACHE_TEST_PORT
respectively, for consistency with other APACHE_TEST_ env vars and in
order not to interfere with other projects that may use the same env
vars. [Stas]

if $self->{reconfigure} is true, make sure to perform a complete
reconfiguration, to solve the bug where conf.in files weren't reparsed
and vhost hostport info was getting lost on subsequent runs when
APACHE env var was set (one of the cases when $self->{reconfigure} is
true). [Stas]

handle "Include conf/*conf" cases when inheriting httpd.conf in a
cleaner way, don't complain that "*conf" doesn't exist, since it's a
glob pattern. Instead check try to resolve the base directory. [Stas]

import the Apache::TestMM clean target in Makefile.PL so 'make clean'
will call t/TEST -clean [Stas]

fix have_apache_version(), have_min_apache_version(), and
have_min_module_version() to use proper numeric version strings 
in comparisons.  thanks to Rafael Garcia-Suarez for the spot.
[Geoffrey Young]

fix Apache::TestConfig::which to check that the found file is a plain
file [Stas]

implementing custom interactive and non-interactive (with the -save
option) reusable configuration for -httpd, -apxs, -user, -group, and
-port [Randy Kobes, Stas]



=item 1.07 - Decemeber 22, 2003

allow conditional C module compilation on a more granular level.
#define HTTPD_TEST_REQUIRE_APACHE 2.0.49 is now recognized.
[Geoffrey Young]

Another attempt at providing a test function that verifies whether
Apache when switching from 'root' to 'nobody' or another user will be
able to access and create files under the t/ directory. This time
using perl's vars $(, $< since POSIX equivalents seem to be broken on
some systems. Also using a better test that actually tries to
write/read/execute in the path under test. [Stas]

Cleanly exit (and complain) if the default hostname resolution has
failed (usually due to a missing localhost entry in /etc/hosts) [Stas]

Fix Apache::TestConfigParse to handle quoted Include arguments [Stas]

Fix Apache::TestServer::wait_till_is_up not to bail out if the server
takes time to start and LWP is not available. [Stas]

Fix Apache::TestConfigParse to handle glob includes, like Include
conf/*.conf on RedHat [Philippe M. Chiasson]

Fix Apache::TestConfig::add_config not to append " " at the end of the
config lines. This was a problem with config sections imported from
.pm files, the appended "" made it impossible to have multi-line
directives using \ [Stas]

Fix a bug in '-port select' which was incorrectly using the same port
twice [Stas]

added bugreport and file argument options to 
Apache::TestRun::generate_script() [Geoffrey Young]



=item 1.06 - November 10, 2003

added -startup_timeout and $ENV{APACHE_TEST_STARTUP_TIMEOUT} as places
to specify the maximum number of seconds to wait for the test
server to start.  the default is still 60 seconds.  [Geoffrey Young]

use apxs PREFIX to resolve relative httpd.conf directives
ServerRoot is not present [Mike Cramer]

add support for a new subclass method 'bug_report', which if provided
will be called when 'make test' fails. we use it in mod_perl to print
the pointers on how to proceed when the failure occurs. [Stas]

sudo and su -u aren't portable, therefore use a simple setuid/setguid
perl program instead, to check whether the root directory of the test
suite is rwx by the user/group apache is going to run under (when
running 'make test' as root). [Stas]



=item 1.05 - October 23, 2003

core scanning changes [Stas]
- speedup by not chdir'ing into subdirs
- an optional scanning of only t/ dir (used by TestSmoke)
- don't scan on win32, since it has no core files

in the autogenerated t/conf/modperl_inc.pl don't add the project/lib
directory, unless a special env var APACHE_TEST_LIVE_DEV is true. This
is because some projects change things in project/blib and pushing
project/lib on top of @INC, breaks the test suite for them [Stas]

TestRun was using httpd.pid file to ensure that the server is killed
before starting it, if the file existed. This was a problem on win32
platforms, where a process scheduler tries to re-use the pids that
were just freed, which may have killed a valid process which is not
even Apache.exe. So we try not to rely on that file, and if the server
wasn't properly stopped and still running, users will learn about
that, since the port will be busy, and Apache will fail to
start. Users have to kill it manually. TestSmoke is no longer using an
explicit kill `cat httpd.pid` to stop Apache, but delegates the
stopping procedure to TestRun [Steve Hay, Randy Kobes]

use IPC::Run3 in Apache::TestSmoke to run t/TEST commands,
so as t/SMOKE can be used on Win32 [Stas, Steve Hay, Randy Kobes]

place mod_perl-specific directives in <IfModule> containers
within httpd.conf, allowing the default server to start if
mod_perl isn't present.  [Geoffrey Young]

fix t/request.t to get /index.html, instead of / since not everybody
uses mod_dir [Steve Piner <stevep@marketview.co.nz>]

when testing whether Apache started as root and running under 'nobody'
or alike, will be able to -r/-w/-x in t/ use 'su' instead of 'sudo',
the latter is not available on all unix platforms. [Vivek Khera
<khera@kcilink.com>]

in the Apache/test.pm nuke code s/PERLRUN/FULLPERL/ as older MakeMaker
doesn't have the PERLRUN target [Stas]

Apache 1.3 servers now run in standard prefork mode under
normal operation.  single server mode (httpd -X) was replaced
with MaxClients set to 1 by default.  [Geoffrey Young]



=item 1.04 - September 29, 2003

if the server stops reading from the client before it has sent all its
data, Apache::TestClient (which is used when LWP is not available)
would just die without any error message (5.8.1) because no SIGPIPE
handler was setup and the Broken Pipe error was missed. Replacing
'print $s' with $s->send() solves this problem: Apache::TestClient
will just move on without bailing out. [Stas]

if env var APACHE_TEST_PRETEND_NO_LWP is true, Apache::Test will
pretend that LWP is not available. useful for testing whether the test
suite will survive on a system which doesn't have libwww-perl
installed. [Stas]

Apache::TestSmoke provides a new mode: -bug_mode, which runs an
equivalent of plain 't/TEST' but generates a lot of useful debug
information, in addition to matching the core files to the tests that
caused them. [Stas]

Apache::TestSmoke now scans for core files, just like Apache::TestRun
does [Stas]

Allow the creation of name based virtual hosts by supplying
<VirtualHost servername:module> containers in .conf.in$ files.
[André Malo]

fix Apache::TestSSLCA to generate a separate index.txt file for each
module, as on certain platforms openssl fails to re-use the same
file. [Stas]

remove the unused example section from t/conf/extra.conf.in, it made
an assumption that mod_auth is available [Stas]

in the autogenerated t/conf/httpd.conf include mod_alias and mod_mime
loading, in case they were built as a shared object and wasn't loaded
from the system-wide httpd.conf from which Apache::Test inherits the
config. [Stas]

added have_apache_mpm() function [Geoffrey Young]

when moving test-specific config directives from __DATA__ to
httpd.conf don't use hash, or the order of arguments is not
preserved. Thanks to perl-5.8.1 for randomizing the hash seed, which
has exposed the bug by breaking the test suite. [Stas]

when the tests are run in the 'root' mode, check whether the
DocumentRoot and its parent dirs are rwx before the tests are run and
suggest possible workarounds when the tests are doomed to fail,
because of the permission issues. [Stas]

UPLOAD is now auto-exported, like the rest [David Wheeler
<david@kineticode.com>]

Change the way the redirect_ok parameter works so that it affects only
_that call_ to the function. Afterward it should revert to the old
value of $RedirectOK. [David Wheeler <david@kineticode.com>]

Change user_agent() so that the LWP::UserAgent "requests_redirectable"
parameter actually does something useful vis-à-vis $RedirectOK. [David
Wheeler <david@kineticode.com>]

Apache::TestRequest API documenation [David Wheeler
<david@kineticode.com>]

Enable TransferLog in the autogenerated httpd.conf only if
mod_log_config is available [Stas]



=item 1.03 - June 19, 2003

Instrumented Makefile.PL to unconditionally remove any old
pre-installed occurrences of Apache/test.pm, which has been renamed to
Apache/testold.pm in mod_perl 1.28 to avoid collisions with
Apache/Test.pm on case-insensitive systems. [Stas]

Apache::TestClient now handles correctly responses with no body and
its response header() method is no longer case-sensitive [Stas]

add skip helper shortcuts: have_min_perl_version,
have_min_module_version [Stas]

pass to 'use lib' only 'lib/' dirs that actually exist in
autogenerated t/TEST t/SMOKE and others. [Stas]

add the ASF LICENSE file to the distro [Stas]

get rid of Apache::TestTrace's dependency on Apache::TestConfig as it
creates too many circular use() problems. [Stas]

wrap blib loading in eval block (added to autogenerated files), to
prevent 'make clean' failures. [Stas]

add two more variants of each of the tracing functions. If the '_mark'
suffix is appended (e.g., 'error_mark') the trace will start with the
filename and the line number the function was called from. If the
'_sub' suffix is appended (e.g., 'error_info') the trace will start
with the name of the subroutine the function was called from. [Stas]

add support for a new env var APACHE_TEST_TRACE_LEVEL, used to
override the tracing level. It propogates the overriden (either by env
var APACHE_TEST_TRACE_LEVEL or -trace option) value to the
server-side, so we can use Apache::TestTrace in mod_perl handlers, and
be able enable/disable tracing from the commmand line. This way we
don't have to comment out debug prints. [Stas]



=item 1.02

not released



=item 1.01 - May  1, 2003

improved support for 3rd party modules test configuration setup:
automatically include 'use blib' in autogenerated t/TEST and add 'use
Apache2' in the startup file for mod_perl 2.0. [Stas]

new configuration option: -libmodperl [path/to/]mod_perl.so (so one
can build several DSO objects, rename them, so several builds can
co-exist under the same LIBEXECDIR and test them all. Mainly useful
for testing 3rd party modules, with different mod_perl DSO builds. [Stas]

set $Apache::Test5005compat::VERSION because of the bogus warnings
generated by EU::MM::parse_version() when it sees
$NOT_THIS_MODULE::VERSION [Randal L. Schwartz <merlyn@stonehenge.com>]

a few fixes in Makefile.PL and t/TEST.PL to work with perl-5.005_03
[Stas]

perlpods are found either in the 'pods/' or 'pod/' subdirs [Randal
L. Schwartz <merlyn@stonehenge.com>]

Autoconfigure Alias /getfiles-* only if the corresponding targets
exist [Stas]



=item 1.00 - Apr 28, 2003 

when inheriting httpd.conf on some platforms SERVER_CONFIG_FILE is an
absolute path, so try to use that if found. [Haroon Rafique
<haroon.rafique@utoronto.ca>]

new Apache::Test functions: 
have_min_apache_version - to require a minimal Apache version. 
have_apache_version     - to require a specific Apache version. 
[Stas]

Apache::TestUtil API change:
write_perl_script  => t_write_perl_script
write_shell_script => t_write_shell_script 
chown              => t_chown
All 3 functions are now optionally exported [Geoffrey Young].

Provide a new request macro _BODY_ASSERT to replace _BODY in cases
where the client part of the test directly prints to the output, in
order to avoid skipped tests instead of reporting the failure of the
server side. Use it in automatically generated tests. [Stas]

httpd (1.3 && 2) / winFU have problems when the first path's segment
includes ':' (security precaution which breaks the rfc) so we can't
use /TestFoo::bar as path_info in Apache::Tests. Adjusting all tests
to use /TestFoo__bar. [Stas]

change Apache::TestConfig::filter_args to accept arguments which
aren't only key/value pairs, but also tokens like 'FOO=1' [Stas]

In autogenerated t/TEST, make sure not to include 'use Apache2' for
the mod_perl 2.0 build itself [Stas]

avoid starting httpd with 'Group root' when running the test suite
under root [Stas]

add support for 'make test TEST_VERBOSE=1 "TEST_FILES=foo bar"' [Stas]

Apache::Test now can run 'make test' under 'root', without permission
problems (e.g. when files need to be written), it'll chown all the
files under t/ to the user chosen to run the server with, before
running the tests and will restore the permissions at the end. [Stas]

don't inherit loading of the mod_perl object from the system-wide
config, since Apache::TestRunPerl already configures it [Stas]

Support two new shortcuts for skip functionality:
 - have_threads: checks whether both Apache and Perl support threads
 - under_construction: to print a consistent/clear skip reason
[Stas]

Support <NoAutoConfig> </NoAutoConfig> blocks in .pm files, so we can
have a full manual control over generated config sections. These
sections are fully parsed and variables are substituted, including
vhosts. [Stas]

Implement a more robust autogenerated client .t test in
Apache::TestConfigPerl. Before this fix if the server side returned
500, the test would get skipped, not good. Now it will die a horrible
death. [Stas]

Before v1.0 most changes were logged in modperl-2.0/Changes (see
mod_perl <= v1.99_08).

=back