boinc/tests/windows_installer_integrati...

64 lines
3.4 KiB
Python

# This file is part of BOINC.
# https://boinc.berkeley.edu
# Copyright (C) 2024 University of California
#
# BOINC is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License
# as published by the Free Software Foundation,
# either version 3 of the License, or (at your option) any later version.
#
# BOINC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with BOINC. If not, see <http://www.gnu.org/licenses/>.
import os
import pathlib
import sys
import testset as testset
import testhelper as testhelper
class IntegrationTests:
def __init__(self):
self.testhelper = testhelper.TestHelper()
self.result = True
self.result &= self.test_version()
self.result &= self.test_files_exist()
def _get_test_executable_file_path(self, filename):
return pathlib.Path("C:\\Program Files\\BOINC\\") / filename
def _get_test_data_file_path(self, filename):
return pathlib.Path("C:\\ProgramData\\BOINC\\") / filename
def _get_file_version(self, filename):
return self.testhelper.get_version_from_string(os.popen(("\"{app}\" --version").format(app=self._get_test_executable_file_path(filename))).read().strip())
def test_version(self):
ts = testset.TestSet("Test version is correct")
current_version = self.testhelper.get_current_version_number()
ts.expect_not_equal("", current_version, "Test current version could be read from the 'version.h' file")
ts.expect_equal(current_version, self._get_file_version("boinc.exe"), "Test 'boinc.exe' version is correctly set")
ts.expect_equal(current_version, self._get_file_version("boinccmd.exe"), "Test 'boinccmd.exe' version is correctly set")
return ts.result()
def test_files_exist(self):
ts = testset.TestSet("Test files exist")
print(self._get_test_executable_file_path("boinc.exe"))
ts.expect_true(os.path.exists(self._get_test_executable_file_path("boinc.exe")), "Test 'boinc.exe' file exists in 'C:\\Program Files\\BOINC\\'")
ts.expect_true(os.path.exists(self._get_test_executable_file_path("boinccmd.exe")), "Test 'boinccmd.exe' file exists in 'C:\\Program Files\\BOINC\\'")
ts.expect_true(os.path.exists(self._get_test_executable_file_path("boincmgr.exe")), "Test 'boincmgr.exe' file exists in 'C:\\Program Files\\BOINC\\'")
ts.expect_true(os.path.exists(self._get_test_executable_file_path("boincscr.exe")), "Test 'boincscr.exe' file exists in 'C:\\Program Files\\BOINC\\'")
ts.expect_true(os.path.exists(self._get_test_executable_file_path("boincsvcctrl.exe")), "Test 'boincsvcctrl.exe' file exists in 'C:\\Program Files\\BOINC\\'")
ts.expect_true(os.path.exists(self._get_test_executable_file_path("boinctray.exe")), "Test 'boinctray.exe' file exists in 'C:\\Program Files\\BOINC\\'")
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\\'")
return ts.result()
if __name__ == "__main__":
if not IntegrationTests().result:
sys.exit(1)
sys.exit(0)