Russian version | Build the installer | Testing index
Run these checks from the repository root on Windows with Python 3.12 x86 and Git. The automated checks use synthetic game files and isolated directories. They do not require Steam or execute game binaries. Use the separate installation and NitroApi checks when verifying native module installation.
python -m unittest discover -s installer/tests -t .The command must complete without test failures. Record platform-specific skips. The covered behavior includes:
| Area | Expected result |
|---|---|
| Installation and update | A new copy is created; existing ZIP and installer copies can be updated repeatedly. |
| Game and package validation | Unsupported or corrupted game files and changed package files are rejected with a diagnostic. |
| Settings and removal | Updates retain user settings; preserve removal keeps user files; full removal removes the selected copy. |
| Cancellation and recovery | A canceled or failed update restores previous files; interrupted recovery can be retried without losing unrelated data. |
| Paths and independent copies | Overlapping paths are rejected; changing folder-name casing preserves user files; one copy does not change another. |
| Build wrapper | Help and valid parameter spellings work under available PowerShell hosts; invalid arguments and failed commands stop the build. |
Prepare the pinned dependencies and compiler, then run the synthetic installer check:
python -m pip install -r installer/requirements-build.txt
.\tools\installer\install_inno.ps1 -Destination build\installer-tools\inno-6.7.3
python tools/installer/smoke_installer.py --python (Get-Command python).Source `
--iscc build/installer-tools/inno-6.7.3/ISCC.exe --work-dir build/installer-smoke/manualChoose a work directory that does not exist. The tool creates the synthetic source, builds the installation tools and test installers, and runs installation and removal in that directory. It also creates and checks per-copy uninstall entries and Start menu shortcuts for the current user.
The command must exit successfully and write result.json with state equal to passed. It must verify new installation, independent copies, update, repeated update, ZIP adoption, cancellation, and both removal modes. The source must remain unchanged. Updated files must match the expected package, settings and custom files must be retained, and one copy's removal must leave the other copy's shortcut intact. Paths with spaces, a trailing separator, and names that could produce identical shortcuts are included.
An unchanged installation tool executable from the same verified source snapshot can be supplied with --helper <absolute-helper-path>. To check updates from an earlier synthetic installation, use --previous-installer <absolute-installer-path>. Retain the setup/uninstall logs and result.json from the selected work directory.
To check packaging of a prepared Release directory together with the synthetic installer, use the build wrapper with -SmokeTest. Keep the resulting release artifacts separate from the synthetic test installers.
Use the source and installer generated by the synthetic check. For the default work directory above:
.\build\installer-smoke\manual\output\NextClient-0.0.2-smoke-setup.exe `
/GAMEDIR="$PWD\build\installer-smoke\manual\source with spaces"Select a fresh destination inside the test work directory. Prepare a synthetic source larger than 1024 MB for the disk-space and copying-cancellation checks.
- In new mode, confirm that both Browse buttons open the Windows folder picker with an address bar. Selecting a destination parent must append
Counter Strike 1.6 NextClient. A manually entered path must be used in full. - Check that the default destination is
C:\Games\Counter Strike 1.6 NextClient. Select the isolated test destination before installing. The required space must account for the copied source and the package; a size above 1024 MB must be shown in GB. - Cancel while files are being copied. Setup must wait for recovery and leave no completed new installation. During an update, cancellation must restore the previous files and settings.
- Complete a new installation. The final page must offer Create a desktop shortcut. Check the shortcut's destination and the presence of
unins000.exein the game root. - Update the test copy. Browse must use the selected folder directly, without an appended name or an existing-folder warning. The desktop shortcut checkbox must not be offered.
- Remove the test copy. Check the selected removal mode and verify that only that copy's shortcuts are removed.
Do not use an installed developer game for recovery or full-removal checks. If recovery fails, retain the logs and .nextclient/transaction for diagnosis.
For changed workflow files, run actionlint .github/workflows/build.yml .github/workflows/release.yml. Confirm that the installer job consumes NextClient-${{ github.sha }} after the successful native build, and that publication waits for the installer checks. The EXE, checksum, and manifest must be included in both release uploads and provenance attestations.
Store the source revision, relevant file snapshot, tool versions, commands, exit codes, skips, artifact hashes, and log paths in a session report under .superpowers/. Record automated checks and interactive observations separately. Reuse passing results for unchanged source and configuration; a local check establishes neither a GitHub Actions run nor a published release.