New feature: STOPTEST
authorRichard Levitte <levitte@openssl.org>
Wed, 29 Apr 2015 19:51:25 +0000 (21:51 +0200)
committerRichard Levitte <levitte@openssl.org>
Mon, 7 Sep 2015 14:10:58 +0000 (16:10 +0200)
When the environment variable STOPTEST is defined (with any value other
than the empty string), the test machinery in OpenSSL::Test goes into a
different mode that will stop all testing at the end of a failing recipe.

Reviewed-by: Rich Salz <rsalz@openssl.org>
test/testlib/OpenSSL/Test.pm

index 644f4dd..207e801 100644 (file)
@@ -27,6 +27,8 @@ my %directories = ();         # Directories we want to keep track of
                                # to the environment variables TOP (mandatory),
                                # BIN_D, TEST_D and RESULT_D.
 
+my $end_with_bailout = 0;
+
 sub quotify;
 
 sub __top_file {
@@ -140,6 +142,8 @@ sub setup {
     $directories{TEST}    = $ENV{TEST_D}   || catdir($directories{TOP},"test");
     $directories{RESULTS} = $ENV{RESULT_D} || $directories{TEST};
 
+    $end_with_bailout    = $ENV{STOPTEST} ? 1 : 0;
+
     BAIL_OUT("setup() expects the file Configure in the \$TOP directory")
        unless -f top_file("Configure");
 
@@ -273,6 +277,13 @@ sub cmdstr {
     return $display_cmd;
 }
 
+END {
+    my $tb = Test::More->builder;
+    my $failure = scalar(grep { $_ == 0; } $tb->summary);
+    if ($failure && $end_with_bailout) {
+       BAIL_OUT("Stoptest!");
+    }
+}
 sub run {
     my ($cmd, $display_cmd, %errlogs) = shift->(0);
     my %opts = @_;