From: Richard Levitte Date: Wed, 9 Sep 2015 15:36:21 +0000 (+0200) Subject: Add a simple test for the new rehash command X-Git-Tag: OpenSSL_1_1_0-pre1~634 X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=commitdiff_plain;h=84d90cf335209e6c1dcb5124d2ddf14ea617212f Add a simple test for the new rehash command Reviewed-by: Rich Salz --- diff --git a/test/recipes/40-test_rehash.t b/test/recipes/40-test_rehash.t new file mode 100644 index 0000000000..514d0d3df3 --- /dev/null +++ b/test/recipes/40-test_rehash.t @@ -0,0 +1,56 @@ +#! /usr/bin/perl + +use strict; +use warnings; + +use File::Spec::Functions; +use File::Copy; +use File::Basename; +use OpenSSL::Test qw/:DEFAULT top_file/; + +setup("test_rehash"); + +plan tests => 4; + +indir "rehash.$$" => sub { + prepare(); + ok(run(app(["openssl", "rehash", curdir()])), + 'Testing normal rehash operations'); +}, create => 1, cleanup => 1; + +indir "rehash.$$" => sub { + prepare(sub { chmod 400, $_ foreach (@_); }); + ok(run(app(["openssl", "rehash", curdir()])), + 'Testing rehash operations on readonly files'); +}, create => 1, cleanup => 1; + +indir "rehash.$$" => sub { + ok(run(app(["openssl", "rehash", curdir()])), + 'Testing rehash operations on empty directory'); +}, create => 1, cleanup => 1; + +indir "rehash.$$" => sub { + prepare(); + chmod 0500, curdir(); + isnt(run(app(["openssl", "rehash", curdir()])), 1, + 'Testing rehash operations on readonly directory'); + chmod 0700, curdir(); # make it writable again, so cleanup works +}, create => 1, cleanup => 1; + +sub prepare { + my @sourcefiles = + sort map { glob(top_file('certs', 'demo', "*.$_")) } ('pem', + 'crt', + 'cer', + 'crl'); + my @destfiles = (); + foreach (@sourcefiles) { + copy($_, curdir()); + push @destfiles, catfile(curdir(), basename($_)); + } + foreach (@_) { + die "Internal error, argument is not CODE" + unless (ref($_) eq 'CODE'); + $_->(@destfiles); + } +}