stas 2004/01/30 17:12:17
Modified: perl-framework/Apache-Test/lib/Apache TestHarness.pm TestRun.pm perl-framework/Apache-Test Changes Log: 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. Revision Changes Path 1.13 +5 -11 httpd-test/perl-framework/Apache-Test/lib/Apache/TestHarness.pm Index: TestHarness.pm =================================================================== RCS file: /home/cvs/httpd-test/perl-framework/Apache-Test/lib/Apache/TestHarness.pm,v retrieving revision 1.12 retrieving revision 1.13 diff -u -u -r1.12 -r1.13 --- TestHarness.pm 12 Sep 2003 02:20:27 -0000 1.12 +++ TestHarness.pm 31 Jan 2004 01:12:17 -0000 1.13 @@ -6,16 +6,10 @@ use Test::Harness (); use Apache::TestSort (); use Apache::TestTrace; -use File::Spec::Functions qw(catfile); +use File::Spec::Functions qw(catfile catdir); use File::Find qw(finddepth); use File::Basename qw(dirname); -sub chdir_t { - chdir 't' if -d 't'; -#Apache::TestConfig->new takes care of @INC -# inc_fixup(); -} - sub inc_fixup { # use blib unshift @INC, map "blib/$_", qw(lib arch); @@ -101,14 +95,14 @@ my $args = shift; my @tests = (); - chdir_t(); + my $base = -d 't' ? catdir('t', '.') : '.'; my $ts = $args->{tests} || []; if (@$ts) { for (@$ts) { if (-d $_) { - push(@tests, sort <$_/*.t>); + push(@tests, sort <$base/$_/*.t>); } else { $_ .= ".t" unless /\.t$/; @@ -118,7 +112,7 @@ } else { if ($args->{tdirs}) { - push @tests, map { sort <$_/*.t> } @{ $args->{tdirs} }; + push @tests, map { sort <$base/$_/*.t> } @{ $args->{tdirs} }; } else { finddepth(sub { @@ -127,7 +121,7 @@ my $dotslash = catfile '.', ""; $t =~ s:^\Q$dotslash::; push @tests, $t - }, '.'); + }, $base); @tests = sort @tests; } } 1.144 +6 -8 httpd-test/perl-framework/Apache-Test/lib/Apache/TestRun.pm Index: TestRun.pm =================================================================== RCS file: /home/cvs/httpd-test/perl-framework/Apache-Test/lib/Apache/TestRun.pm,v retrieving revision 1.143 retrieving revision 1.144 diff -u -u -r1.143 -r1.144 --- TestRun.pm 18 Jan 2004 08:34:29 -0000 1.143 +++ TestRun.pm 31 Jan 2004 01:12:17 -0000 1.144 @@ -125,31 +125,31 @@ my($self) = @_; my(@tests); + my $top_dir = $self->{test_config}->{vars}->{top_dir}; + my $t_dir = $self->{test_config}->{vars}->{t_dir}; my $argv = $self->{argv}; my @leftovers = (); for (@$argv) { my $arg = $_; - #need the t/ for stat-ing, but dont want to include it in test output + #need the t/ for stat-ing, but don't want to include it in test output $arg =~ [EMAIL PROTECTED](?:\./)?t/@@; - my $t_dir = catfile qw(.. t); my $file = catfile $t_dir, $arg; - if (-d $file and $_ ne '/') { my @files = <$file/*.t>; + my $remove = catfile $top_dir, ""; if (@files) { - my $remove = catfile $t_dir, ""; push @tests, map { s,^\Q$remove,,; $_ } @files; next; } } else { if ($file =~ /\.t$/ and -e $file) { - push @tests, "$arg"; + push @tests, "t/$arg"; next; } elsif (-e "$file.t") { - push @tests, "$arg.t"; + push @tests, "t/$arg.t"; next; } elsif (/^[\d.]+$/) { @@ -644,8 +644,6 @@ $self->set_env; #make sure these are always set my(@argv) = @_; - - Apache::TestHarness->chdir_t; $self->getopts([EMAIL PROTECTED]); 1.84 +9 -0 httpd-test/perl-framework/Apache-Test/Changes Index: Changes =================================================================== RCS file: /home/cvs/httpd-test/perl-framework/Apache-Test/Changes,v retrieving revision 1.83 retrieving revision 1.84 diff -u -u -r1.83 -r1.84 --- Changes 27 Jan 2004 19:40:01 -0000 1.83 +++ Changes 31 Jan 2004 01:12:17 -0000 1.84 @@ -8,6 +8,15 @@ =item 1.08_dev +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] + generate t/conf if it does not already exist, which it may not if the tests are entirely autoconfigured. [Geoffrey Young]