my $planned;
$TODO = 0;
+$NO_ENDING = 0;
sub plan {
my $n;
END {
my $ran = $test - 1;
- if (defined $planned && $planned != $ran) {
- print STDOUT "# Looks like you planned $planned tests but ran $ran.\n";
+ if (!$NO_ENDING && defined $planned && $planned != $ran) {
+ print STDOUT "# Looks like you planned $planned tests but ran $ran.\n";
}
}
# VMS will avenge.
my $out;
if ($name) {
+ # escape out '#' or it will interfere with '# skip' and such
+ $name =~ s/#/\\#/g;
$out = $pass ? "ok $test - $name" : "not ok $test - $name";
} else {
$out = $pass ? "ok $test" : "not ok $test";
# A somewhat safer version of the sometimes wrong $^X.
-BEGIN: {
- eval {
- require File::Spec;
- require Config;
- Config->import;
- };
- warn "test.pl had problems loading other modules: $@" if $@;
-}
-
-# We do this at compile time before the test might have chdir'd around
-# and make sure its absolute in case they do later.
-my $Perl = $^X;
-$Perl =
- File::Spec->rel2abs(File::Spec->catfile(File::Spec->curdir(),
- "perl$Config{_exe}"))
- if $Perl =~ /^perl\Q$Config{_exe}\E$/i;
-warn "Can't generate which_perl from $^X" unless -f $Perl;
-
-# For subcommands to use.
-$ENV{PERLEXE} = $Perl;
-
+my $Perl;
sub which_perl {
+ unless (defined $Perl) {
+ $Perl = $^X;
+
+ my $exe;
+ eval "require Config; Config->import";
+ if ($@) {
+ warn "test.pl had problems loading Config: $@";
+ $exe = '';
+ } else {
+ $exe = $Config{_exe};
+ }
+
+ # This doesn't absolutize the path: beware of future chdirs().
+ # We could do File::Spec->abs2rel() but that does getcwd()s,
+ # which is a bit heavyweight to do here.
+
+ if ($Perl =~ /^perl\Q$exe\E$/i) {
+ my $perl = "perl$exe";
+ eval "require File::Spec";
+ if ($@) {
+ warn "test.pl had problems loading File::Spec: $@";
+ $Perl = "./$perl";
+ } else {
+ $Perl = File::Spec->catfile(File::Spec->curdir(), $perl);
+ }
+ }
+
+ # Its like this. stat on Cygwin treats 'perl' to mean 'perl.exe'
+ # but open does not. This can get confusing, so to be safe we
+ # always put the .exe on the end on Cygwin.
+ $Perl .= $exe if $^O eq 'cygwin' && $Perl !~ /\Q$exe\E$/;
+
+ warn "which_perl: cannot find $Perl from $^X" unless -f $Perl;
+
+ # For subcommands to use.
+ $ENV{PERLEXE} = $Perl;
+ }
return $Perl;
}