[openssl-commits] [openssl] master update
Richard Levitte
levitte at openssl.org
Tue Mar 21 15:12:46 UTC 2017
The branch master has been updated
via 30f1c9c4e08d479ab57fa6974dd99b077c745ffb (commit)
via 7e46e56acaa27933663a455cf819d841d4dbc436 (commit)
via 34a6a9b1599788ce4e85a08d579ff19bcb6a4b89 (commit)
from b6ef12c4baa3a2c1ff0e3ac71270588dfcfe8cbd (commit)
- Log -----------------------------------------------------------------
commit 30f1c9c4e08d479ab57fa6974dd99b077c745ffb
Author: Richard Levitte <levitte at openssl.org>
Date: Tue Mar 21 11:26:28 2017 +0100
Adapt 20-test_enc.t and 20-test_enc_more.t to use statusvar
Reviewed-by: Rich Salz <rsalz at openssl.org>
(Merged from https://github.com/openssl/openssl/pull/3004)
commit 7e46e56acaa27933663a455cf819d841d4dbc436
Author: Richard Levitte <levitte at openssl.org>
Date: Tue Mar 21 10:58:46 2017 +0100
Adapt 80-test_ssl_old.t to use statusvar
Reviewed-by: Rich Salz <rsalz at openssl.org>
(Merged from https://github.com/openssl/openssl/pull/3004)
commit 34a6a9b1599788ce4e85a08d579ff19bcb6a4b89
Author: Richard Levitte <levitte at openssl.org>
Date: Tue Mar 21 10:53:56 2017 +0100
OpenSSL::Test: add a statusvar option for run with capture => 1
When using run() with capture => 1, there was no way to find out if
the command was successful or not. This change adds a statusvar
option, that must refer to a scalar variable, for example:
my $status = undef;
my @line = run(["whatever"], capture => 1, statusvar => \$status);
$status will be 1 if the command "whatever" was successful, 0
otherwise.
Reviewed-by: Rich Salz <rsalz at openssl.org>
(Merged from https://github.com/openssl/openssl/pull/3004)
-----------------------------------------------------------------------
Summary of changes:
test/recipes/20-test_enc.t | 19 ++++++++++---------
test/recipes/20-test_enc_more.t | 15 ++++++++++-----
test/recipes/80-test_ssl_old.t | 21 ++++++++++++++++-----
test/testlib/OpenSSL/Test.pm | 17 ++++++++++++++---
4 files changed, 50 insertions(+), 22 deletions(-)
diff --git a/test/recipes/20-test_enc.t b/test/recipes/20-test_enc.t
index 88a5890..32a3016 100644
--- a/test/recipes/20-test_enc.t
+++ b/test/recipes/20-test_enc.t
@@ -27,20 +27,21 @@ my $test = catfile(".", "p");
my $cmd = "openssl";
+my $ciphersstatus = undef;
my @ciphers =
map { s/^\s+//; s/\s+$//; split /\s+/ }
- run(app([$cmd, "list", "-cipher-commands"]), capture => 1);
+ run(app([$cmd, "list", "-cipher-commands"]),
+ capture => 1, statusvar => \$ciphersstatus);
-plan tests => 1 + (scalar @ciphers)*2;
-
-my $init = ok(copy($testsrc,$test));
-
-if (!$init) {
- diag("Trying to copy $testsrc to $test : $!");
-}
+plan tests => 2 + (scalar @ciphers)*2;
SKIP: {
- skip "Not initialized, skipping...", 11 unless $init;
+ skip "Problems getting ciphers...", 1 + scalar(@ciphers)
+ unless ok($ciphersstatus, "Running 'openssl list -cipher-commands'");
+ unless (ok(copy($testsrc, $test), "Copying $testsrc to $test")) {
+ diag($!);
+ skip "Not initialized, skipping...", scalar(@ciphers);
+ }
foreach my $c (@ciphers) {
my %variant = ("$c" => [],
diff --git a/test/recipes/20-test_enc_more.t b/test/recipes/20-test_enc_more.t
index 1419ddb..b4cef69 100644
--- a/test/recipes/20-test_enc_more.t
+++ b/test/recipes/20-test_enc_more.t
@@ -28,17 +28,22 @@ my $plaintext = catfile(".", "testdatafile");
my $fail = "";
my $cmd = "openssl";
+my $ciphersstatus = undef;
my @ciphers =
grep(! /wrap|^$|^[^-]/,
(map { split /\s+/ }
- run(app([$cmd, "enc", "-ciphers"]), capture => 1)));
+ run(app([$cmd, "enc", "-ciphers"]),
+ capture => 1, statusvar => \$ciphersstatus)));
-plan tests => 1 + scalar @ciphers;
-
-my $init = ok(copy($testsrc, $plaintext));
+plan tests => 2 + scalar @ciphers;
SKIP: {
- skip "Not initialized, skipping...", (scalar @ciphers) unless $init;
+ skip "Problems getting ciphers...", 1 + scalar(@ciphers)
+ unless ok($ciphersstatus, "Running 'openssl enc -ciphers'");
+ unless (ok(copy($testsrc, $plaintext), "Copying $testsrc to $plaintext")) {
+ diag($!);
+ skip "Not initialized, skipping...", scalar(@ciphers);
+ }
foreach my $cipher (@ciphers) {
my $ciphername = substr $cipher, 1;
diff --git a/test/recipes/80-test_ssl_old.t b/test/recipes/80-test_ssl_old.t
index a790d9b..8b6f538 100644
--- a/test/recipes/80-test_ssl_old.t
+++ b/test/recipes/80-test_ssl_old.t
@@ -424,11 +424,17 @@ sub testssl {
push @protocols, "-ssl3" unless $no_ssl3;
my $protocolciphersuitecount = 0;
my %ciphersuites = ();
+ my %ciphersstatus = ();
foreach my $protocol (@protocols) {
- $ciphersuites{$protocol} =
- [ map { s|\R||; split(/:/, $_) }
- run(app(["openssl", "ciphers", "-s", $protocol,
- "ALL:$ciphers"]), capture => 1) ];
+ my $ciphersstatus = undef;
+ my @ciphers = run(app(["openssl", "ciphers", "-s", $protocol,
+ "ALL:$ciphers"]),
+ capture => 1, statusvar => \$ciphersstatus);
+ $ciphersstatus{$protocol} = $ciphersstatus;
+ if ($ciphersstatus) {
+ $ciphersuites{$protocol} = [ map { s|\R||; split(/:/, $_) }
+ @ciphers ];
+ }
$protocolciphersuitecount += scalar @{$ciphersuites{$protocol}};
}
@@ -437,7 +443,12 @@ sub testssl {
# The count of protocols is because in addition to the ciphersuits
# we got above, we're running a weak DH test for each protocol
- plan tests => $protocolciphersuitecount + scalar(keys %ciphersuites);
+ plan tests => scalar(@protocols) + $protocolciphersuitecount
+ + scalar(keys %ciphersuites);
+
+ foreach my $protocol (@protocols) {
+ ok($ciphersstatus{$protocol}, "Getting ciphers for $protocol");
+ }
foreach my $protocol (sort keys %ciphersuites) {
note "Testing ciphersuites for $protocol";
diff --git a/test/testlib/OpenSSL/Test.pm b/test/testlib/OpenSSL/Test.pm
index 66fa4dc..cbfc867 100644
--- a/test/testlib/OpenSSL/Test.pm
+++ b/test/testlib/OpenSSL/Test.pm
@@ -403,6 +403,12 @@ return the resulting output as an array of lines. If false or not given,
the command will be executed with C<system()>, and C<run> will return 1 if
the command was successful or 0 if it wasn't.
+=item B<statusvar =E<gt> VARREF>
+
+If used, B<VARREF> must be a reference to a scalar variable. It will be
+assigned a boolean indicating if the command succeeded or not. This is
+particularly useful together with B<capture>.
+
=back
For further discussion on what is considered a successful command or not, see
@@ -427,6 +433,9 @@ sub run {
my $r = 0;
my $e = 0;
+ die "OpenSSL::Test::run(): statusvar value not a scalar reference"
+ if $opts{statusvar} && ref($opts{statusvar}) ne "SCALAR";
+
# In non-verbose, we want to shut up the command interpreter, in case
# it has something to complain about. On VMS, it might complain both
# on stdout and stderr
@@ -445,11 +454,13 @@ sub run {
# to make it easier to compare with a manual run of the command.
if ($opts{capture}) {
@r = `$prefix$cmd`;
- $e = ($? & 0x7f) ? ($? & 0x7f)|0x80 : ($? >> 8);
} else {
system("$prefix$cmd");
- $e = ($? & 0x7f) ? ($? & 0x7f)|0x80 : ($? >> 8);
- $r = $hooks{exit_checker}->($e);
+ }
+ $e = ($? & 0x7f) ? ($? & 0x7f)|0x80 : ($? >> 8);
+ $r = $hooks{exit_checker}->($e);
+ if ($opts{statusvar}) {
+ ${$opts{statusvar}} = $r;
}
if ($ENV{HARNESS_ACTIVE} && !$ENV{HARNESS_VERBOSE}) {
More information about the openssl-commits
mailing list