summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRainer Jung <rainer.jung@kippdata.de>2020-07-21 11:32:02 +0200
committerTomas Mraz <tmraz@fedoraproject.org>2020-10-12 11:39:06 +0200
commitc804f2965ef6908dc1f30447d4547192fc3ba974 (patch)
treed5fb23105e268d839883b95572f8b71010bddc68
parentDocument how deprecation should be done (diff)
downloadopenssl-c804f2965ef6908dc1f30447d4547192fc3ba974.tar.xz
openssl-c804f2965ef6908dc1f30447d4547192fc3ba974.zip
Make TAP::Harness and TAP::Parser optional.
In OpenSSL 1.1.1 the script run_tests.pl has an effectiver workaround to fall back to Test::Harness, if TAP::Harness is not available. That code has substantially changed, but it seems it should still fall back but doesn't. Observed on SuSE Linux Enterprise Server 11 (SLES11). Error messages: Can't locate TAP/Parser.pm in @inc (@inc contains: /path/to/bld/openssl300/test/../util/perl /path/to/local/perl/lib/perl5 /usr/lib/perl5/5.10.0/x86_64-linux-thread-multi /usr/lib/perl5/5.10.0 /usr/lib/perl5/site_perl/5.10.0/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.10.0 /usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.10.0 /usr/lib/perl5/vendor_perl .) at /path/to/local/perl/lib/perl5/parent.pm line 20. BEGIN failed--compilation aborted at /path/to/bld/openssl300/test/run_tests.pl line 131. and Can't locate TAP/Harness.pm in @inc (@inc contains: /path/to/bld/openssl300/test/../util/perl /path/to/local/perl/lib/perl5 /usr/lib/perl5/5.10.0/x86_64-linux-thread-multi /usr/lib/perl5/5.10.0 /usr/lib/perl5/site_perl/5.10.0/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.10.0 /usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.10.0 /usr/lib/perl5/vendor_perl .) at /path/to/local/perl/lib/perl5/parent.pm line 20. BEGIN failed--compilation aborted at /path/to/bld/openssl300/test/run_tests.pl line 215. Concerning the fix: the docs for parent.pm show, that without the "-norequire" it puts the require statement in a BEGIN block which probably runs before the eval, to the loading is no longer encapsulated by the eval. Without the additional require line, the loading doesn't happen at all, so the availability testing fails. Combining the "-norequire" and an explicit "require" worked for me. Tested on the original problem platform SLES 11, but also on SLES 12 and 15, RHEL 6, 7 and 8 plus Solaris 10 Sparc. Reviewed-by: Paul Dale <paul.dale@oracle.com> Reviewed-by: Tomas Mraz <tmraz@fedoraproject.org> (Merged from https://github.com/openssl/openssl/pull/12500)
-rw-r--r--test/run_tests.pl6
1 files changed, 4 insertions, 2 deletions
diff --git a/test/run_tests.pl b/test/run_tests.pl
index 14e195b468..8a9e156a54 100644
--- a/test/run_tests.pl
+++ b/test/run_tests.pl
@@ -148,7 +148,8 @@ my $eres;
$eres = eval {
package TAP::Parser::OpenSSL;
- use parent 'TAP::Parser';
+ use parent -norequire, 'TAP::Parser';
+ require TAP::Parser;
sub new {
my $class = shift;
@@ -231,7 +232,8 @@ $eres = eval {
}
package TAP::Harness::OpenSSL;
- use parent 'TAP::Harness';
+ use parent -norequire, 'TAP::Harness';
+ require TAP::Harness;
package main;