# script tag not needed, just in for IIS Compat test
<script runat=server>
use lib '.';
use T;
use strict;
use vars qw($Application $Session $t $Deep);
use Carp qw(confess);
$SIG{__DIE__} = \&confess;
sub Application_OnStart {
$Application->{Start} = 1;
}
sub Session_OnStart {
$Session->{Count} = 10;
}
sub Script_OnStart {
$t = T->new();
}
sub Script_OnEnd {
$t && $t->done;
}
sub Script_OnFlush {
my $data = $Response->{BinaryRef};
for ( split(/\n/, $$data) ) {
next if /^\s*$/;
unless(/^((not )?ok)|\d+\.\.\d+/) {
$t->eok(0, "Garbage in output: $_");
}
}
}
sub my::print {
my($args, $html) = @_;
print $html;
}
sub my::tag {
$t->eok($Deep, 'Deep tag not evaluated');
}
sub my::deeptag {
$t->ok;
$Deep++;
}
sub my::tag_check_value {
my $args = shift;
if($args->{value}) {
$t->ok;
} else {
$t->not_ok;
}
}
sub my::tag_check_value_ref {
my($args) = shift;
if(ref $args->{value}) {
$t->ok;
} else {
$t->not_ok;
}
}
sub my::tag_check_value_not_ref {
my($args) = shift;
if(ref $args->{value}) {
$t->not_ok;
} else {
$t->ok;
}
}
sub my::returnok {
$t->eok($_[1] eq 'ok', 'String return');
}
sub my::args {
$t->eok($_[0]->{ok}, $_[0]->{error} || "Argument passing");
}
# CLEANUP old state files from previous test script runs
# so things like Application_OnStart may run
if($0 =~ m|application\.t$|) {
# print STDERR "-- ASP State Initialization for Tests --\n";
die unless (-e '../t');
for my $dir ( qw(.cache .state) ) {
my @dirs = ($dir);
my @delete_dirs;
while(@dirs) {
my $dir = shift @dirs;
next unless -d $dir;
opendir(DIR, $dir);
for(readdir(DIR)) {
next if /^\.\.?$/;
$_ =~ tr///; # untaint
my $file = "$dir/$_";
if(-d $file) {
push(@dirs, $file);
} elsif(-e $file) {
unlink($file);
} else {
die("$file does not exist, but we just read it");
}
}
unshift(@delete_dirs, $dir);
}
for(@delete_dirs) {
rmdir($_);
}
}
}
# script tag not needed, just in for IIS Compat test
</script>