Skip to content

Commit 8c9e89c

Browse files
authored
Merge pull request #6059 from BOINC/vko_win_installer_add_registry_tests
[windows][installer] test selected registry values
2 parents b443506 + 4300d01 commit 8c9e89c

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

tests/windows_installer_integration_tests.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import os
1919
import pathlib
2020
import sys
21+
import winreg
2122
import testset as testset
2223
import testhelper as testhelper
2324

@@ -27,6 +28,7 @@ def __init__(self):
2728
self.result = True
2829
self.result &= self.test_version()
2930
self.result &= self.test_files_exist()
31+
self.result &= self.test_registry_records_exist()
3032

3133
def _get_test_executable_file_path(self, filename):
3234
return pathlib.Path("C:\\Program Files\\BOINC\\") / filename
@@ -37,12 +39,30 @@ def _get_test_data_file_path(self, filename):
3739
def _get_file_version(self, filename):
3840
return self.testhelper.get_version_from_string(os.popen(("\"{app}\" --version").format(app=self._get_test_executable_file_path(filename))).read().strip())
3941

42+
def _get_value_from_registry(self, key, value):
43+
try:
44+
hive, subkey = key.split("\\", 1)
45+
hives = {
46+
"HKEY_CLASSES_ROOT": winreg.HKEY_CLASSES_ROOT,
47+
"HKEY_CURRENT_USER": winreg.HKEY_CURRENT_USER,
48+
"HKEY_LOCAL_MACHINE": winreg.HKEY_LOCAL_MACHINE,
49+
"HKEY_USERS": winreg.HKEY_USERS,
50+
"HKEY_CURRENT_CONFIG": winreg.HKEY_CURRENT_CONFIG
51+
}
52+
with winreg.OpenKey(hives[hive], subkey) as key:
53+
result, _ = winreg.QueryValueEx(key, value)
54+
return result
55+
except Exception as e:
56+
print(f"Error accessing registry: {e}")
57+
return None
58+
4059
def test_version(self):
4160
ts = testset.TestSet("Test version is correct")
4261
current_version = self.testhelper.get_current_version_number()
4362
ts.expect_not_equal("", current_version, "Test current version could be read from the 'version.h' file")
4463
ts.expect_equal(current_version, self._get_file_version("boinc.exe"), "Test 'boinc.exe' version is correctly set")
4564
ts.expect_equal(current_version, self._get_file_version("boinccmd.exe"), "Test 'boinccmd.exe' version is correctly set")
65+
ts.expect_equal(current_version, self._get_value_from_registry("HKEY_LOCAL_MACHINE\\SOFTWARE\\Space Sciences Laboratory, U.C. Berkeley\\BOINC Setup\\", "UpgradingTo"), "Test 'UpgradingTo' registry record exists and is set correctly")
4666
return ts.result()
4767

4868
def test_files_exist(self):
@@ -56,6 +76,12 @@ def test_files_exist(self):
5676
ts.expect_true(os.path.exists(self._get_test_data_file_path("all_projects_list.xml")), "Test 'all_projects_list.xml' file exists in 'C:\\ProgramData\\BOINC\\'")
5777
return ts.result()
5878

79+
def test_registry_records_exist(self):
80+
ts = testset.TestSet("Test registry records exist")
81+
ts.expect_equal("C:\\ProgramData\\BOINC\\", self._get_value_from_registry("HKEY_LOCAL_MACHINE\\SOFTWARE\\Space Sciences Laboratory, U.C. Berkeley\\BOINC Setup\\", "DATADIR"), "Test 'DATADIR' registry record exists and is set correctly")
82+
ts.expect_equal("C:\\Program Files\\BOINC\\", self._get_value_from_registry("HKEY_LOCAL_MACHINE\\SOFTWARE\\Space Sciences Laboratory, U.C. Berkeley\\BOINC Setup\\", "INSTALLDIR"), "Test 'INSTALLDIR' registry record exists and is set correctly")
83+
return ts.result()
84+
5985
if __name__ == "__main__":
6086
if not IntegrationTests().result:
6187
sys.exit(1)

0 commit comments

Comments
 (0)