tests: fix the shutting up of the shell
[openssl.git] / test / testlib / OpenSSL / Test / Simple.pm
index 94f6cf935b20dbd5a56d94d9c779f45a38fa42c1..c5a84d5ca365b39668ef19ba2cf3f9ef66fee563 100644 (file)
@@ -1,3 +1,10 @@
+# Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
+#
+# Licensed under the OpenSSL license (the "License").  You may not use
+# this file except in compliance with the License.  You can obtain a copy
+# in the file LICENSE in the source distribution or at
+# https://www.openssl.org/source/license.html
+
 package OpenSSL::Test::Simple;
 
 use strict;
@@ -5,28 +12,80 @@ use warnings;
 
 use Exporter;
 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
-$VERSION = "0.1";
+$VERSION = "0.2";
 @ISA = qw(Exporter);
 @EXPORT = qw(simple_test);
 
+=head1 NAME
+
+OpenSSL::Test::Simple - a few very simple test functions
+
+=head1 SYNOPSIS
+
+  use OpenSSL::Test::Simple;
+
+  simple_test("my_test_name", "destest", "des");
+
+=head1 DESCRIPTION
+
+Sometimes, the functions in L<OpenSSL::Test> are quite tedious for some
+repetitive tasks.  This module provides functions to make life easier.
+You could call them hacks if you wish.
+
+=cut
 
-use Test::More;
 use OpenSSL::Test;
+use OpenSSL::Test::Utils;
+
+=over 4
+
+=item B<simple_test NAME, PROGRAM, ALGORITHM>
+
+Runs a test named NAME, running the program PROGRAM with no arguments,
+to test the algorithm ALGORITHM.
+
+A complete recipe looks like this:
+
+  use OpenSSL::Test::Simple;
+
+  simple_test("test_bf", "bftest", "bf");
+
+=back
+
+=cut
 
 # args:
 #  name                        (used with setup())
 #  algorithm           (used to check if it's at all supported)
 #  name of binary      (the program that does the actual test)
 sub simple_test {
-    my ($name, $prgr, $algo, @rest) = @_;
+    my ($name, $prgr, @algos) = @_;
 
     setup($name);
 
+    if (scalar(disabled(@algos))) {
+       if (scalar(@algos) == 1) {
+           plan skip_all => $algos[0]." is not supported by this OpenSSL build";
+       } else {
+           my $last = pop @algos;
+           plan skip_all => join(", ", @algos)." and $last are not supported by this OpenSSL build";
+       }
+    }
+
     plan tests => 1;
-  SKIP: {
-      skip "$algo is not supported by this OpenSSL build, skipping this test...", 1
-         if $algo && run(app(["openssl", "no-$algo"]));
 
-      ok(run(test([$prgr])), "running $prgr");
-    }
+    ok(run(test([$prgr])), "running $prgr");
 }
+
+=head1 SEE ALSO
+
+L<OpenSSL::Test>
+
+=head1 AUTHORS
+
+Richard Levitte E<lt>levitte@openssl.orgE<gt> with inspiration
+from Rich Salz E<lt>rsalz@openssl.orgE<gt>.
+
+=cut
+
+1;