RU
Проверки перед выпуском
Содержание
- 1. Тесты движка
- 2. Окружение, консольная команда и окно
- 3. Проход по собранной программе
- 4. Настоящая работа
- 5. Сборщик и чистка — на копии
- 6. Что проверяет только человек
- Правила для командных файлов
Что прогоняется, прежде чем сборка программы уходит наружу. Каждая проверка либо
проходит, либо называет, что именно не так. Ни одна из них не трогает ваши
сборки браузеров: всё, что запускает операции, работает на стенде — отдельной
папке со своими input, output и logs.
1. Тесты движка
runtime\python.exe -m pytest
Около четырёхсот проверок без сети: поиск сборок в Источнике, приведение
чужой сборки к виду App / Data / Cache, замена браузера на месте, загрузки,
сертификаты, страж Defender, остановка посреди операции, консольная команда.
Запросы к разработчикам браузеров заменены локальными файлами; поиск, перестановка,
замена и упаковка — настоящие.
2. Окружение, консольная команда и окно
install\verify_portable_env.cmd
Три шага подряд:
- окружение — Python программы на месте, PyYAML ставится, все операции
манифеста находят свои функции,
.cmd-файлы в UTF-8 без BOM и с CRLF; - консольная команда —
browsers_cli.cmd describeчитает манифест; - окно — собранное окно (
App\AudionBrowsersPortable.exe) без показа на экране строит каждый раздел и сверяется с манифестом: у каждой операции есть кнопка, у каждого поля — элемент формы, у каждой кнопки — значок.
3. Проход по собранной программе
Source\Tools\release-walk.ps1 -Stand <новая папка>
Программа копируется на стенд, и её собственные кнопки нажимаются без мыши, через UI Automation — так же, как их нажал бы человек:
- раздел открывается, операция запускается и заканчивается, её журнал лежит в
logs; - выбор в форме переключается (
ZIP/7Z), поля под «Дополнительно» на виду; - запуск без отмеченного браузера ничего не начинает;
- очистка рабочих папок: меню, вопрос, содержимое ушло, папки остались;
СТОПво время загрузки: операция останавливается, кнопки снова доступны, недокачанного файла не остаётся;- закрытие окна во время загрузки: окно спрашивает, останавливает операцию и закрывается;
- ни одного процесса стенда после закрытия, ни одного отчёта о сбое окна.
4. Настоящая работа
Source\Tools\live-walk.ps1 -Stand <новая папка на диске с запасом места>
Собранная программа делает то, для чего она сделана, — кнопками, без мыши: скачивает официальные файлы четырёх браузеров, собирает пять портативных, проверяет их, обновляет, обновляет с пересборкой без новой версии и меняет одну библиотеку. Нужны сеть, около гигабайта и несколько минут. Проход сверяет настройки, переданные окном, с выставленными в форме и считает, что каждая операция сделала: «готово» при нуле обновлённых сборок проверку не проходит.
Галка «Обойти Defender» в этом проходе снята, а операции с сертификатами не нажимаются: они меняют Windows, и это остаётся за человеком.
5. Сборщик и чистка — на копии
На копии программы, не в рабочей папке:
cleanup_project.cmd /Y
install\Build_Portable_Env.cmd
install\Install-Portable-7Zip.cmd
install\verify_portable_env.cmd
install\Clean-Install-Cache.cmd
Чистка убирает окружение, загрузки и рабочие папки и оставляет исходники, настройки, лицензии и собранное окно. Папку-ссылку внутри программы она не обходит: что лежит по ссылке вне программы, остаётся нетронутым. Сборщик возвращает Python и 7-Zip, проверка из пункта 2 проходит на свежем окружении, и на нём же проходят тесты из пункта 1.
В рабочей папке чистка запускается только с ключом /DRYRUN — он печатает,
что было бы удалено, и ничего не удаляет.
6. Что проверяет только человек
- Страж Defender по-настоящему. На компьютере, где Defender включён: сборка с галкой «Обойти Defender» — Windows спрашивает разрешение, исключение появляется на время сборки и снимается после неё. Тесты прогоняют сценарий стража на подставных командах Defender; настоящий Defender они не трогают.
- Сертификаты.
СЕРТИФИКАТ→УСТАНОВИТЬ, затемПРОВЕРИТЬиОТОЗВАТЬ: в хранилище учётной записи появляются и исчезают ровно два сертификата. - Запуск собранного браузера с флешки на другом компьютере: профиль остаётся в папке сборки.
Правила для командных файлов
Все .cmd — UTF-8 без BOM и строго CRLF. Проверка и исправление:
install\Check-CmdEncoding.cmd -Fix
Работающий .cmd нельзя переписывать изнутри, поэтому сборка и проверка только
проверяют; исправление запускается отдельно, после него сборщик открывается заново.