This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
t/TEST: Don't bail if fails in t/base unless minitest
authorKarl Williamson <public@khwilliamson.com>
Wed, 13 Mar 2013 04:34:17 +0000 (22:34 -0600)
committerKarl Williamson <public@khwilliamson.com>
Mon, 20 May 2013 14:59:13 +0000 (08:59 -0600)
In order to completely compile Perl, many modules must have been parsed
and compiled, so if there is a full perl, we know that things basically
work.  The purpose of bailing out is that if these supposedly very base
level functionality tests don't work, there's no point in continuing.
But over the years, tests of more esoteric functionality have been
added here, and if one of them doesn't work, it still could be that Perl
pretty much does work.

I believe it would be best to move such non-basic tests elsewhere, but
that's work, and hasn't bitten us much so far; this change lessens the
severity of the biting even more.  Where it will really bite is if
things are so bad that a full perl binary can't be compiled, and we are
trying to figure out why using minitest.

t/TEST

diff --git a/t/TEST b/t/TEST
index 618db5f..3c00b5e 100755 (executable)
--- a/t/TEST
+++ b/t/TEST
@@ -748,8 +748,11 @@ EOT
        if (defined $failure) {
            print "${te}$failure\n";
            $::bad_files = $::bad_files + 1;
-           if ($test =~ /^base/) {
-               die "Failed a basic test ($test) -- cannot continue.\n";
+           if ($test =~ /^base/ && ! defined &DynaLoader::boot_DynaLoader) {
+               # Die if running under minitest (no DynaLoader).  Otherwise
+               # keep going, as  we know that Perl basically works, or we
+               # would not have been able to actually compile it all the way.
+               die "Failed a basic test ($test) under minitest -- cannot continue.\n";
            }
            $failed_tests{$test} = 1;
        }