Fix OpenSSL::Test::Simple to take more than one algorithm
[openssl.git] / test / testlib / OpenSSL / Test / Simple.pm
index be86ca2cb2564b1a8dcfb1fae9dd8524350582ca..b596e5f2e877940b70dad5e3d5832f1df3c85187 100644 (file)
@@ -5,28 +5,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 0.96;
 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;