Commit 6e68f244 authored by Richard Levitte's avatar Richard Levitte
Browse files

test/recipes/02-err_errstr: skip errors that may not be loaded on Windows



Fixes #8091

Reviewed-by: default avatarMatt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/8094)

(cherry picked from commit 0e1b0e51)
parent 61db9961
Loading
Loading
Loading
Loading
+37 −0
Original line number Diff line number Diff line
@@ -38,6 +38,43 @@ plan skip_all => 'OpenSSL is configured "no-autoerrinit" or "no-err"'
# (this is documented)
my @posix_errors = @{$Errno::EXPORT_TAGS{POSIX}};

if ($^O eq 'MSWin32') {
    # On Windows, these errors have been observed to not always be loaded by
    # apps/openssl, while they are in perl, which causes a difference that we
    # consider a false alarm.  So we skip checking these errors.
    # Because we can't know exactly what symbols exist in a perticular perl
    # version, we resort to discovering them directly in the Errno package
    # symbol table.
    my @error_skiplist = qw(
        ENETDOWN
        ENETUNREACH
        ENETRESET
        ECONNABORTED
        EISCONN
        ENOTCONN
        ESHUTDOWN
        ETOOMANYREFS
        ETIMEDOUT
        EHOSTDOWN
        EHOSTUNREACH
        EALREADY
        EINPROGRESS
        ESTALE
        EUCLEAN
        ENOTNAM
        ENAVAIL
        ENOMEDIUM
        ENOKEY
    );
    @posix_errors =
        grep {
            my $x = $_;
            ! grep {
                exists $Errno::{$_} && $x == $Errno::{$_}
            } @error_skiplist
        } @posix_errors;
}

plan tests => scalar @posix_errors
    +1                          # Checking that error 128 gives 'reason(128)'
    +1                          # Checking that error 0 gives the library name