from __future__ import annotations from pathlib import Path PROJECT_ROOT = Path(__file__).resolve().parents[1] def read(relative_path: str) -> str: return (PROJECT_ROOT / relative_path).read_text(encoding="utf-8") def test_windows_one_click_entrypoints_and_release_pipeline() -> None: for name in ( "Run_DoctorWorkstation.bat", "Build_DoctorWorkstation.bat", "一键运行_医生工作站.bat", "一键打包_医生工作站.bat", ): assert (PROJECT_ROOT / name).is_file() run_script = read("scripts/run_windows.ps1") package_script = read("scripts/package_windows.ps1") compiler_script = read("scripts/ensure_inno_setup.ps1") installer_definition = read("packaging/windows/doctor_workstation.iss") installer_smoke = read("scripts/smoke_windows_installer.ps1") release_launcher = read("packaging/windows/start_release.bat") assert run_script.index("$FrozenExecutable") < run_script.index("Find-Uv") assert "& $Uv sync --frozen" in run_script assert '"UV_CACHE_DIR"' in run_script assert "$ProjectUvCache" in run_script assert "& $Uv sync --frozen --extra build" in package_script assert '"UV_CACHE_DIR"' in package_script assert "$ProjectUvCache" in package_script assert "& $Npm ci --prefix" in package_script assert "build_windows.ps1" in package_script assert "DoctorWorkstation-Windows-x64-$ProjectVersion.zip" in package_script assert "DoctorWorkstation-Setup-Windows-x64-$ProjectVersion" in package_script assert "Get-FileHash" in package_script assert "ensure_inno_setup.ps1" in package_script assert "doctor_workstation.iss" in package_script assert package_script.index("& $BuildScript") < package_script.index("& $InnoCompiler") assert "Start_DoctorWorkstation.bat" in package_script assert "DoctorWorkstation\\DoctorWorkstation.exe" in release_launcher assert "explorer.exe" in read("Build_DoctorWorkstation.bat") assert "6.7.3" in compiler_script assert "Get-FileHash" in compiler_script assert "Get-AuthenticodeSignature" in compiler_script assert "9C73C3BAE7ED48D44112A0F48E66742C00090BDB5BEF71D9D3C056C66E97B732" in ( compiler_script ) assert "E0B0B350E2245F3C5E65586DFE43D574F6E7F06F2261149ABA284954B3FC9A8D" in ( compiler_script ) assert "AppId=" in installer_definition assert "MinVersion=10.0.17763" in installer_definition assert "ArchitecturesAllowed=x64compatible" in installer_definition assert "PrivilegesRequiredOverridesAllowed=dialog commandline" in installer_definition assert "UsePreviousAppDir=yes" in installer_definition assert "UsePreviousPrivileges=yes" in installer_definition assert "recursesubdirs createallsubdirs" in installer_definition assert "{autoprograms}" in installer_definition assert "{autodesktop}" in installer_definition assert "UninstallDisplayIcon=" in installer_definition assert "ChineseMessagesFile" in installer_definition assert '"/CURRENTUSER"' in installer_smoke assert '-ArgumentList "--smoke-test"' in installer_smoke assert "unins000.exe" in installer_smoke assert "-WindowStyle Hidden" in installer_smoke assert "Uninstaller left the installed executable behind" in installer_smoke def test_debug_launcher_reuses_an_isolated_persistent_profile() -> None: debug_script = read("Debug_DoctorWorkstation.bat") assert "%LOCALAPPDATA%\\ZhenYangTang\\DoctorWorkstation\\Debug" in debug_script assert "DOCTOR_CONFIG_DIR=%DEBUG_PROFILE%\\config" in debug_script assert "DOCTOR_LOG_DIR=%DEBUG_PROFILE%\\logs" in debug_script assert "%RANDOM%" not in debug_script def test_macos_one_click_entrypoints_and_release_pipeline() -> None: for name in ( "run_macos.command", "package_macos.command", "一键运行.command", "一键打包.command", ): assert (PROJECT_ROOT / name).is_file() run_script = read("scripts/run_macos.sh") package_script = read("scripts/package_macos.sh") assert run_script.index('/usr/bin/open "$artifact"') < run_script.index("macos_ensure_uv") assert "sync --locked" in run_script assert "sync --locked --extra build" in package_script assert 'ci --prefix "$project_root/video_companion"' in package_script assert "/usr/bin/ditto -c -k --sequesterRsrc --keepParent" in package_script assert "/usr/bin/shasum -a 256" in package_script assert "DoctorWorkstation-macOS-$release_arch-$project_version.zip" in package_script