1 parent
41599fa82f
commit
0dd6bef715
12 files changed
+161
-64
No files matched your search
@@ -21,6 +21,19 @@
|
||||
|
||||
На Linux папка лаунчера получается `~/BiLauncher`, без точки, то есть видимая.
|
||||
|
||||
## BILAUNCHER_HOME
|
||||
|
||||
`homeOverride()` читает переменную окружения `BILAUNCHER_HOME`. Если в ней абсолютный путь, он
|
||||
заменяет домашнюю папку (`~` и `%USERPROFILE%` в таблице выше) для всех путей лаунчера, включая
|
||||
папку игры по умолчанию. Пустое или относительное значение не учитывается. Остальной Qt
|
||||
(`QDir::homePath()`, `QStandardPaths`) эту переменную не видит.
|
||||
|
||||
Переменная нужна тестам и дымовой проверке на Windows: там `QDir::homePath()` спрашивает профиль
|
||||
у системы и `USERPROFILE` игнорирует, так что иначе их нельзя увести из настоящего
|
||||
`%APPDATA%\BiLauncher`. Новых возможностей она не даёт: кто управляет окружением процесса, на
|
||||
Linux и macOS и так подменит `HOME`. Чтобы случайно оставленную переменную было видно, `main.cpp`
|
||||
при старте пишет в лог предупреждение с итоговой папкой лаунчера.
|
||||
|
||||
Внутри `rootDir()`:
|
||||
|
||||
```
|
||||
|
||||
+8
-7
@@ -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 общие на процесс, и код лаунчера их не трогает.
|
||||
|
||||
Reference in new issue
Block a user