Перейти к содержанию

Тесты и фикстуры

Тесты приложения офлайновые: железо не нужно, Python тоже. Всё, что они читают, лежит в tests/fixtures/ и закоммичено в репозиторий приложения.

Что проверяют тесты

Файл Что проверяет
protocol.test.ts парсеры, payload'ы режимов, записи bind-таблицы, карту клавиш
macro.test.ts токены, блоб макросов, XML вендорской утилиты
apply.test.ts порядок секций и расстановку save в apply на поддельной клавиатуре
smoke.test.ts что каркас и общие модули импортируются
preview.test.ts имитацию режимов, перевод кодов клавиш, игнорирование направления

Запуск из каталога приложения:

npm test

Состав фикстур

Файл Содержимое
python.json Эталонные байты из katana.py: payload'ы, bind-записи, блоб, XML
dumps.json SET-пакеты вендорских дампов: макросы и три дампа переназначения
test.xml Вендорский XML макроса
macros-create-test.xml Вендорский XML, использованный при создании макроса
profile.example.yaml Копия katana.yaml.example для проверки разбора профиля

Обновление

Источник истины — katana.py и датасет дампов в Python-репозитории. Поэтому фикстуры собирает его генератор misc/make_ts_fixtures.py, а в приложение они попадают готовыми.

После изменений в katana.py или в дампах пересоберите фикстуры из корня Python-репозитория:

.venv/bin/python misc/make_ts_fixtures.py            # записать в tests/fixtures
.venv/bin/python misc/make_ts_fixtures.py --check    # только сверить

При раздельных репозиториях каталог задаётся явно: --out <путь>.

Геометрия клавиатуры (src/renderer/src/keyboard/layout.json) пересоздаётся генератором misc/make_layout.py, тоже с --out.

Подписи клавиш правятся в словаре LABELS этого скрипта: там исправлены опечатки вендора, цифровой ряд записан как 1! … =+, а тильда — как `~ё.

Там же сокращения PS, SL, PB, HM, PU, PD и капс для модификаторов. Функция label_of() переводит в капс и остальные многобуквенные служебные подписи.

Описание генераторов — в разделе Скрипты репозитория.