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

use Apache::Test;
use Apache::TestUtil;
use Apache::TestRequest;

use File::Spec::Functions qw(catfile catdir);

use constant TRIES => 20;

my $vars = Apache::Test::config->{vars};
my $dir  = catdir $vars->{documentroot}, "hooks";
my $file = catfile $dir, "cleanup2";

plan tests => 2;

{
    # cleanup, just to make sure we start with virgin state
    if (-e $file) {
        unlink $file or die "Couldn't remove $file";
    }
    # this registers and performs cleanups, but we test whether the
    # cleanup was run only in the next sub-test
    my $location = "/TestHooks__cleanup2";
    my $expected = 'cleanup2 is ok';
    my $received = GET_BODY $location;
    ok t_cmp($received, $expected, "register req cleanup");
}

{
    # this sub-tests checks that the cleanup stage was run successfully
    # which is supposed to remove the file that was created
    #
    # since Apache destroys the request rec after the logging has been
    # finished, we have to give it some time  to get there
    # and remove in the file. (wait 0.25 .. 5 sec)
    my $t = 0;
    select undef, undef, undef, 0.25 until !-e $file || $t++ == TRIES;

    if (-e $file) {
        t_debug("$file wasn't removed by the cleanup phase");
        ok 0;
        unlink $file; # cleanup
    }
    else {
        ok 1;
    }
}



