randyk 2004/06/01 19:13:24
Modified: perl-framework/Apache-Test/lib/Apache TestUtil.pm
t/response/TestAPI server_const.pm server_util.pm
t/response/TestCompat apache.pm
Log:
Reviewed by: stas
For the benefit of Win32, use the new function t_filepath_cmp()
in Apache::TestUtil to compare two filepaths. On non-Win32 this
is the same as t_cmp(), but on Win32, this first converts both paths
to their DOS long pathname before invoking t_cmp(). This avoids
spurious failures in cases when one of the paths is represented
by its long name and the other by its short name.
Revision Changes Path
1.39 +24 -1 httpd-test/perl-framework/Apache-Test/lib/Apache/TestUtil.pm
Index: TestUtil.pm
===================================================================
RCS file: /home/cvs/httpd-test/perl-framework/Apache-Test/lib/Apache/TestUtil.pm,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -r1.38 -r1.39
--- TestUtil.pm 12 Apr 2004 19:53:42 -0000 1.38
+++ TestUtil.pm 2 Jun 2004 02:13:23 -0000 1.39
@@ -35,7 +35,7 @@
@ISA = qw(Exporter);
@EXPORT = qw(t_cmp t_debug t_append_file t_write_file t_open_file
- t_mkdir t_rmtree t_is_equal
+ t_mkdir t_rmtree t_is_equal t_filepath_cmp
t_server_log_error_is_expected t_server_log_warn_is_expected
t_client_log_error_is_expected t_client_log_warn_is_expected
);
@@ -106,6 +106,18 @@
return t_is_equal($_[0], $_[1]);
}
+# Essentially t_cmp, but on Win32, first converts pathnames
+# to their DOS long name.
+sub t_filepath_cmp ($$;$) {
+ my @a = (shift, shift);
+ if (Apache::TestConfig::WIN32) {
+ $a[0] = Win32::GetLongPathName($a[0]) if defined $a[0];
+ $a[1] = Win32::GetLongPathName($a[1]) if defined $a[1];
+ }
+ return @_ == 1 ? t_cmp($a[0], $a[1], $_[0]) : t_cmp($a[0], $a[1]);
+}
+
+
*expand = HAS_DUMPER ?
sub { map { ref $_ ? Data::Dumper::Dumper($_) : $_ } @_ } :
sub { @_ };
@@ -438,6 +450,17 @@
will do:
"abcd" =~ /^abc/;
+
+This function is exported by default.
+
+=item t_filepath_cmp()
+
+This function is used to compare two filepaths via t_cmp().
+For non-Win32, it simply uses t_cmp() for the comparison,
+but for Win32, Win32::GetLongPathName() is invoked to convert
+the first two arguments to their DOS long pathname. This is useful
+when there is a possibility the two paths being compared
+are not both represented by their long or short pathname.
This function is exported by default.
1.4 +3 -3 modperl-2.0/t/response/TestAPI/server_const.pm
Index: server_const.pm
===================================================================
RCS file: /home/cvs/modperl-2.0/t/response/TestAPI/server_const.pm,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- server_const.pm 5 Mar 2004 18:19:15 -0000 1.3
+++ server_const.pm 2 Jun 2004 02:13:24 -0000 1.4
@@ -28,9 +28,9 @@
# test Apache::Server constant subroutines
- ok t_cmp(canonpath($root),
- canonpath(Apache::server_root),
- 'Apache::server_root()');
+ ok t_filepath_cmp(canonpath($root),
+ canonpath(Apache::server_root),
+ 'Apache::server_root()');
ok t_cmp($built,
1.15 +20 -20 modperl-2.0/t/response/TestAPI/server_util.pm
Index: server_util.pm
===================================================================
RCS file: /home/cvs/modperl-2.0/t/response/TestAPI/server_util.pm,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- server_util.pm 5 Mar 2004 18:19:15 -0000 1.14
+++ server_util.pm 2 Jun 2004 02:13:24 -0000 1.15
@@ -71,18 +71,18 @@
foreach my $p (keys %pools) {
- ok t_cmp(catfile($serverroot, 'conf'),
- canonpath(Apache::server_root_relative($pools{$p},
- 'conf')),
- "Apache:::server_root_relative($p, 'conf')");
+ ok t_filepath_cmp(catfile($serverroot, 'conf'),
+ canonpath(Apache::server_root_relative($pools{$p},
+ 'conf')),
+ "Apache:::server_root_relative($p, 'conf')");
}
# dig out the pool from valid objects
foreach my $obj (keys %objects) {
- ok t_cmp(catfile($serverroot, 'conf'),
- canonpath($objects{$obj}->server_root_relative('conf')),
- "$obj->server_root_relative('conf')");
+ ok t_filepath_cmp(catfile($serverroot, 'conf'),
+ canonpath($objects{$obj}->server_root_relative('conf')),
+ "$obj->server_root_relative('conf')");
}
# syntax - unrecognized objects don't segfault
@@ -96,26 +96,26 @@
}
# no file argument gives ServerRoot
- ok t_cmp(canonpath($serverroot),
- canonpath($r->server_root_relative),
- '$r->server_root_relative()');
-
- ok t_cmp(canonpath($serverroot),
- canonpath(Apache::server_root_relative($r->pool)),
- 'Apache::server_root_relative($r->pool)');
+ ok t_filepath_cmp(canonpath($serverroot),
+ canonpath($r->server_root_relative),
+ '$r->server_root_relative()');
+
+ ok t_filepath_cmp(canonpath($serverroot),
+ canonpath(Apache::server_root_relative($r->pool)),
+ 'Apache::server_root_relative($r->pool)');
# Apache::server_root is also the ServerRoot constant
- ok t_cmp(canonpath(Apache::server_root),
- canonpath($r->server_root_relative),
- 'Apache::server_root');
+ ok t_filepath_cmp(canonpath(Apache::server_root),
+ canonpath($r->server_root_relative),
+ 'Apache::server_root');
{
# absolute paths should resolve to themselves
my $dir = $r->server_root_relative('logs');
- ok t_cmp($r->server_root_relative($dir),
- $dir,
- "\$r->server_root_relative($dir)");
+ ok t_filepath_cmp($r->server_root_relative($dir),
+ $dir,
+ "\$r->server_root_relative($dir)");
}
t_debug('registering method FOO');
1.12 +15 -15 modperl-2.0/t/response/TestCompat/apache.pm
Index: apache.pm
===================================================================
RCS file: /home/cvs/modperl-2.0/t/response/TestCompat/apache.pm,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- apache.pm 5 Mar 2004 18:19:15 -0000 1.11
+++ apache.pm 2 Jun 2004 02:13:24 -0000 1.12
@@ -64,29 +64,29 @@
'Apache->httpd_conf');
$r->server->server_admin($admin);
- ok t_cmp(canonpath($Apache::Server::CWD),
- canonpath(Apache::Test::config()->{vars}->{serverroot}),
- '$Apache::Server::CWD');
+ ok t_filepath_cmp(canonpath($Apache::Server::CWD),
+ canonpath(Apache::Test::config()->{vars}->{serverroot}),
+ '$Apache::Server::CWD');
- ok t_cmp(canonpath($Apache::Server::CWD),
- canonpath($r->server_root_relative),
- '$r->server_root_relative()');
+ ok t_filepath_cmp(canonpath($Apache::Server::CWD),
+ canonpath($r->server_root_relative),
+ '$r->server_root_relative()');
- ok t_cmp(catfile($Apache::Server::CWD, 'conf'),
- canonpath($r->server_root_relative('conf')),
- "\$r->server_root_relative('conf')");
+ ok t_filepath_cmp(catfile($Apache::Server::CWD, 'conf'),
+ canonpath($r->server_root_relative('conf')),
+ "\$r->server_root_relative('conf')");
# Apache->server_root_relative
{
Apache::compat::override_mp2_api('Apache::server_root_relative');
- ok t_cmp(catfile($Apache::Server::CWD, 'conf'),
- canonpath(Apache->server_root_relative('conf')),
- "Apache->server_root_relative('conf')");
+ ok t_filepath_cmp(catfile($Apache::Server::CWD, 'conf'),
+ canonpath(Apache->server_root_relative('conf')),
+ "Apache->server_root_relative('conf')");
- ok t_cmp(canonpath($Apache::Server::CWD),
- canonpath(Apache->server_root_relative),
- 'Apache->server_root_relative()');
+ ok t_filepath_cmp(canonpath($Apache::Server::CWD),
+ canonpath(Apache->server_root_relative),
+ 'Apache->server_root_relative()');
Apache::compat::restore_mp2_api('Apache::server_root_relative');
}