test fixes
tests / windows (push) Skipped
tests / macos (push) Skipped
tests / package-smoke-linux (push) Skipped
tests / package-smoke-windows (push) Skipped
tests / package-smoke-macos (push) Skipped
tests / linux (push) Successful in 1m59s

Signed-off-by: galeon <dertiellis@gmail.com>
This commit is contained in:
galeon committed 2026-10-13 08:51:07 +03:00
1 parent 41599fa82f
commit 0dd6bef715
12 files changed
+161 -64

No files matched your search

+8 -7
View File
@@ -70,13 +70,14 @@ CMake, тесты появятся в панели «Тесты».
## Как тесты изолированы
**Файлы.** `LauncherPaths` строит пути от `QDir::homePath()`. Общий `main` тестов
(`tests/common/testenv.h`) до создания приложения подменяет `HOME` на временную папку, и каждый
процесс работает в своей. Если путь лаунчера всё же оказался вне песочницы, процесс сразу
завершается. На Windows `QDir::homePath()` переменные окружения не читает, поэтому там тесты идут
в настоящей `%APPDATA%\BiLauncher` учётной записи раннера, строго по одному, а за собой папку
стирают. Если папка уже есть и создана не тестами (нет метки `.bilauncher-test-sandbox`), тесты
отказываются запускаться.
**Файлы.** `LauncherPaths` строит пути от домашней папки. Общий `main` тестов
(`tests/common/testenv.h`) до создания приложения направляет `BILAUNCHER_HOME` (а заодно `HOME`
и `USERPROFILE`) на временную папку, и каждый процесс работает в своей, на всех ОС, параллельно.
`BILAUNCHER_HOME` нужна ради Windows: там `QDir::homePath()` берёт профиль у системы и `HOME`
с `USERPROFILE` не читает. Дочерние процессы наследуют переменную. Если папка лаунчера или папка
игры по умолчанию всё же оказалась вне песочницы, процесс сразу завершается с кодом 2 и ничего не
трогает. Дымовая проверка установленной сборки на Windows (`smoke_installed.ps1`) тоже запускает
лаунчер с `BILAUNCHER_HOME` на временную папку.
**Сеть.** Адреса серверов в сервисах зашиты константами, а свои `QNetworkAccessManager` они
создают сами. Зато прокси и SSL-настройки у Qt общие на процесс, и код лаунчера их не трогает.