diff options
Diffstat (limited to 'test/recipes/02-test_windows_registry.t')
-rw-r--r-- | test/recipes/02-test_windows_registry.t | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/test/recipes/02-test_windows_registry.t b/test/recipes/02-test_windows_registry.t new file mode 100644 index 000000000000..3029b151e864 --- /dev/null +++ b/test/recipes/02-test_windows_registry.t @@ -0,0 +1,83 @@ +#! /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"); |