openssl/test/recipes/02-test_windows_registry.t
Neil Horman caaea8f343 Update defaults to install keys against major.minor
we want patch level updates to use the same keys, so only create the key
against the major.minor version

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/24450)
2024-07-09 04:01:44 -04:00

84 lines
2.6 KiB
Raku

#! /usr/bin/env perl
# Copyright 2024 The OpenSSL Project Authors. All Rights Reserved.
#
# 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 OpenSSL::Test;
use OpenSSL::Test::Utils;
use OpenSSL::Test qw/:DEFAULT bldtop_file data_file srctop_file cmdstr/;
setup("test_windows_registry");
plan skip_all => "Windows registry tests are only available on windows"
if $^O !~ /(MSWin)/;
my $actual;
my $expect;
my @tempout = run(app(["openssl", "version", "-w"]), capture => 1);
my $context = "@tempout";
$context =~ s/^.*: //;
@tempout = run(app(["openssl", "version", "-v"]), capture => 1);
my $version = "@tempout";
$version =~ s/^OpenSSL //;
$version =~ s/(^[0-9]+\.[0-9]+)(.*$)/\1/;
my $regkey = "HKLM\\SOFTWARE\\OpenSSL-".$version."-".$context;
$regkey =~ s/\n//g;
print "REGKEY IS $regkey\n";
my $exit = run(cmd(["reg.exe", "query", $regkey, "/v", "OPENSSLDIR", "/reg:32"]));
plan skip_all => "Skipping test as registry keys aren't set"
if $exit == 0;
plan tests => 3;
my @expectossldir = run(cmd(["reg.exe", "query", $regkey, "/reg:32", "/t", "REG_EXPAND_SZ", "/v", "OPENSSLDIR"]), capture => 1);
my @expectengdir = run(cmd(["reg.exe", "query", $regkey, "/reg:32", "/t", "REG_EXPAND_SZ", "/v", "ENGINESDIR"]), capture => 1);
my @expectmoddir = run(cmd(["reg.exe", "query", $regkey, "/reg:32", "/t", "REG_EXPAND_SZ", "/v", "MODULESDIR"]), capture => 1);
my @ossldir = run(app(["openssl", "version", "-d"]), capture => 1);
print "@ossldir";
$expect = "@expectossldir";
$actual = "@ossldir";
$expect =~ s/HKEY_LOCAL_MACHINE.*\n*//;
$expect =~ s/\n//g;
$expect =~ s/.*REG_EXPAND_SZ *//;
$expect =~ s/ .*$//;
$actual =~ s/OPENSSLDIR: *//;
ok(grep(/$expect/,$actual), "Confirming version output for openssldir from registry");
my @osslengineout = run(app(["openssl", "version", "-e"]), capture => 1);
$expect = "@expectengdir";
$actual = "@osslengineout";
$expect =~ s/HKEY_LOCAL_MACHINE.*\n*//;
$expect =~ s/\n//g;
$expect =~ s/.*REG_EXPAND_SZ *//;
$expect =~ s/ .*$//;
$actual =~ s/ENGINESDIR: *//;
ok(grep(/$expect/, $actual) == 1, "Confirming version output for enginesdir from registry");
my @osslmoduleout = run(app(["openssl", "version", "-m"]), capture => 1);
$expect = "@expectmoddir";
$actual = "@osslmoduleout";
$expect =~ s/HKEY_LOCAL_MACHINE.*\n*//;
$expect =~ s/\n//g;
$expect =~ s/.*REG_EXPAND_SZ *//;
$expect =~ s/ .*$//;
$actual =~ s/MODULESSDIR: *//;
ok(grep(/$expect/, $actual) == 1, "Confirming version output for modulesdir from registry");