[openssl-dev] Fix use of "can_load" in run_tests.pl (was GH PR #3424)

Rainer Jung rainer.jung at kippdata.de
Thu May 25 19:22:17 UTC 2017


The below change doesn't work, because "can_load" must be used differently.

When running on SLES 11 which contains perl 1.10.0 (and thus no 
TAP::Harness module), run_tests.pl gives:

Can't locate object method "new" via package "TAP::Harness" (perhaps you 
forgot to load "TAP::Harness"?) at .././test/run_tests.pl line 64.

Please see below for a patch.

Am 10.05.2017 um 17:05 schrieb Richard Levitte:
> The branch master has been updated
>        via  76e0d0b21cc4e8a879d54f4d78a392826dadb1d1 (commit)
>       from  03d8e9cb43da5c524e5890a5a51e2c77f1fbd789 (commit)
>
>
> - Log -----------------------------------------------------------------
> commit 76e0d0b21cc4e8a879d54f4d78a392826dadb1d1
> Author: Richard Levitte <levitte at openssl.org>
> Date:   Wed May 10 12:58:36 2017 +0200
>
>     Prefer TAP::Harness over Test::Harness
>
>     TAP:Harness came along in perl 5.10.1, and since we claim to support
>     perl 5.10.0 in configuration and testing, we can only load it
>     conditionally.
>
>     The main reason to use TAP::Harness rather than Test::Harness is its
>     capability to merge stdout and stderr output from the test recipes,
>     which Test::Harness can't.  The merge gives much more comprehensible
>     output when testing verbosely.
>
>     Reviewed-by: Rich Salz <rsalz at openssl.org>
>     Reviewed-by: Matt Caswell <matt at openssl.org>
>     (Merged from https://github.com/openssl/openssl/pull/3424)
>
> -----------------------------------------------------------------------
>
> Summary of changes:
>  test/run_tests.pl | 58 ++++++++++++++++++++++++++++++++++++++++++++-----------
>  1 file changed, 47 insertions(+), 11 deletions(-)
>
> diff --git a/test/run_tests.pl b/test/run_tests.pl
> index 9c5ade1..aa1dba0 100644
> --- a/test/run_tests.pl
> +++ b/test/run_tests.pl
> @@ -17,7 +17,10 @@ BEGIN {
>  use File::Spec::Functions qw/catdir catfile curdir abs2rel rel2abs/;
>  use File::Basename;
>  use if $^O ne "VMS", 'File::Glob' => qw/glob/;
> -use Test::Harness qw/runtests $switches/;
> +use Module::Load::Conditional qw(can_load);
> +
> +my $TAP_Harness = can_load({modules => [ 'TAP::Harness' ]})
> +    ? 'TAP::Harness' : 'OpenSSL::TAP::Harness';

The following patch fixes the can_load use:

--- test/run_tests.pl	2017-05-25 16:21:00.000000000 +0200
+++ test/run_tests.pl	2017-05-25 21:07:20.066149000 +0200
@@ -19,7 +19,7 @@
  use if $^O ne "VMS", 'File::Glob' => qw/glob/;
  use Module::Load::Conditional qw(can_load);

-my $TAP_Harness = can_load({modules => [ 'TAP::Harness' ]})
+my $TAP_Harness = can_load(modules => { 'TAP::Harness' => undef })
      ? 'TAP::Harness' : 'OpenSSL::TAP::Harness';

  my $srctop = $ENV{SRCTOP} || $ENV{TOP};

It should be applied to master and the 1.1.0 branch.

Should I open a GH issue or pull request for that trivial change?

Thanks a bunch,

Rainer


More information about the openssl-dev mailing list