mirror of
https://github.com/openssl/openssl.git
synced 2024-12-21 06:09:35 +08:00
53d0d01fd4
There were 4 classes of failure: - line ending problems; - unicode problems; - file path munging problems; and - a "hang" in test_cmp_http. The unicode problems appear to be somewhere between wine or msys - they don't actually appear to be a problem with the built binaries. We just skip those tests for now. Fixes #13558 Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Paul Dale <pauli@openssl.org> (Merged from https://github.com/openssl/openssl/pull/15939)
90 lines
3.0 KiB
Perl
90 lines
3.0 KiB
Perl
#! /usr/bin/env perl
|
|
# Copyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved.
|
|
# Copyright Nokia 2007-2019
|
|
# Copyright Siemens AG 2015-2019
|
|
#
|
|
# Licensed under the Apache License 2.0 (the "License"). You may not use
|
|
# this file except in compliance with the License. You can obtain a copy
|
|
# in the file LICENSE in the source distribution or at
|
|
# https://www.openssl.org/source/license.html
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
use POSIX;
|
|
use File::Compare qw/compare_text/;
|
|
use OpenSSL::Test qw/:DEFAULT with srctop_file srctop_dir bldtop_dir result_file/;
|
|
use OpenSSL::Test::Utils;
|
|
|
|
BEGIN {
|
|
setup("test_cmp_cli");
|
|
}
|
|
use lib srctop_dir('Configurations');
|
|
use lib bldtop_dir('.');
|
|
|
|
plan skip_all => "These tests are not supported in a fuzz build"
|
|
if config('options') =~ /-DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION/;
|
|
|
|
plan skip_all => "These tests are not supported in a no-cmp build"
|
|
if disabled("cmp");
|
|
|
|
# Prevent MSys2 filename munging for arguments that look like file paths but
|
|
# aren't
|
|
$ENV{MSYS2_ARG_CONV_EXCL} = "/CN=";
|
|
|
|
my @app = qw(openssl cmp);
|
|
|
|
my @cmp_basic_tests = (
|
|
[ "show help", [ "-help" ], 1 ],
|
|
[ "CLI option not starting with '-'", [ "days", "1" ], 0 ],
|
|
[ "unknown CLI option", [ "-dayss" ], 0 ],
|
|
[ "bad int syntax: non-digit", [ "-days", "a/" ], 0 ],
|
|
[ "bad int syntax: float", [ "-days", "3.14" ], 0 ],
|
|
[ "bad int syntax: trailing garbage", [ "-days", "314_+" ], 0 ],
|
|
[ "bad int: out of range", [ "-days", "2147483648" ], 0 ],
|
|
);
|
|
|
|
my @cmp_server_tests = (
|
|
[ "with polling", [ "-poll_count", "1" ], 1 ]
|
|
);
|
|
|
|
# loader_attic doesn't build on VMS, so we don't test it
|
|
push @cmp_server_tests, (
|
|
[ "with loader_attic engine", [ "-engine", "loader_attic"], 1 ]
|
|
)
|
|
unless disabled('loadereng');
|
|
|
|
plan tests => @cmp_basic_tests + @cmp_server_tests;
|
|
|
|
foreach (@cmp_basic_tests) {
|
|
my $title = $$_[0];
|
|
my $params = $$_[1];
|
|
my $expected = $$_[2];
|
|
ok($expected == run(app([@app, "-config", '', @$params])),
|
|
$title);
|
|
}
|
|
|
|
# these use the mock server directly in the cmp app, without TCP
|
|
foreach (@cmp_server_tests) {
|
|
my $title = $$_[0];
|
|
my $extra_args = $$_[1];
|
|
my $expected = $$_[2];
|
|
my $secret = "pass:test";
|
|
my $rsp_cert = srctop_file('test', 'certs', 'ee-cert-1024.pem');
|
|
my $outfile = result_file("test.certout.pem");
|
|
ok($expected ==
|
|
run(app([@app, "-config", '', @$extra_args,
|
|
"-use_mock_srv", "-srv_ref", "mock server",
|
|
"-srv_secret", $secret,
|
|
"-rsp_cert", $rsp_cert,
|
|
"-cmd", "cr",
|
|
"-subject", "/CN=any",
|
|
"-newkey", srctop_file('test', 'certs', 'ee-key-1024.pem'),
|
|
"-secret", $secret,
|
|
"-ref", "client under test",
|
|
"-certout", $outfile]))
|
|
&& compare_text($outfile, $rsp_cert) == 0,
|
|
$title);
|
|
# not unlinking $outfile
|
|
}
|