- quote env vars in cmd script for paths with spaces - add update_error.log diagnostics and timeout while waiting for app exit - bump APP_VERSION to 1.7.0 and update updater tests
52 lines
1.8 KiB
Python
52 lines
1.8 KiB
Python
import hashlib
|
|
import importlib.util
|
|
import tempfile
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
_SPEC = importlib.util.spec_from_file_location(
|
|
"auto_update_service",
|
|
Path("services/auto_update_service.py"),
|
|
)
|
|
_MODULE = importlib.util.module_from_spec(_SPEC)
|
|
_SPEC.loader.exec_module(_MODULE)
|
|
AutoUpdateService = _MODULE.AutoUpdateService
|
|
|
|
|
|
class AutoUpdateServiceTests(unittest.TestCase):
|
|
def test_extract_sha256_from_text(self):
|
|
digest = "a" * 64
|
|
text = f"{digest} AnabasisManager-1.0.0-win.zip\n"
|
|
extracted = AutoUpdateService.extract_sha256_from_text(
|
|
text,
|
|
"AnabasisManager-1.0.0-win.zip",
|
|
)
|
|
self.assertEqual(extracted, digest)
|
|
|
|
def test_sha256_file(self):
|
|
with tempfile.TemporaryDirectory() as td:
|
|
path = Path(td) / "payload.bin"
|
|
payload = b"anabasis"
|
|
path.write_bytes(payload)
|
|
expected = hashlib.sha256(payload).hexdigest()
|
|
self.assertEqual(AutoUpdateService.sha256_file(str(path)), expected)
|
|
|
|
def test_build_update_script_contains_core_vars(self):
|
|
script = AutoUpdateService.build_update_script(
|
|
app_dir=r"C:\Apps\AnabasisManager",
|
|
source_dir=r"C:\Temp\Extracted",
|
|
exe_name="AnabasisManager.exe",
|
|
target_pid=1234,
|
|
)
|
|
script_text = Path(script).read_text(encoding="utf-8")
|
|
self.assertIn("set \"APP_DIR=", script_text)
|
|
self.assertIn("set \"SRC_DIR=", script_text)
|
|
self.assertIn("set \"EXE_NAME=", script_text)
|
|
self.assertIn("set \"TARGET_PID=", script_text)
|
|
self.assertIn(":rollback", script_text)
|
|
self.assertIn("if not exist \"%SRC_DIR%\\%EXE_NAME%\"", script_text)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|