runner

command
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 2, 2026 License: MIT Imports: 26 Imported by: 0

Documentation

Overview

Сценарии CLI: сквозной прогон catalogctl против ноги прогона (sqlite или postgres). Проверки утверждают канонический вывод en (D9 — en каноничен, локаль CLI по умолчанию), поэтому прогон не зависит от русских текстов.

Фаза consumer: пример встраивания examples/embed — внешний модуль, зависимость на библиотеку подключена require + replace на локальный путь, как у сайт-проекта. Компилируемость фасада components у внешнего потребителя — часть контракта: внутримодульные тесты позволяют импорты internal/ и подлинности не доказывают. Фаза собирает пример его собственным go build и запускает бинарник (одноразовая база sqlite — пример создаёт и удаляет её сам).

Подготовка одноразовой базы PostgreSQL для ног прогона: очистка таблиц модуля перед сценариями, чтобы абсолютные проверки количества (count) не зависели от остатков предыдущих прогонов. Список таблиц — storage.TableNames() (выводится из DDL хранилища, единый источник). Сброс деструктивен, поэтому ограждён: автоматически чистится только базa из env-конвенции CATALOG_TEST_POSTGRES_DSN (одноразовая по регламенту — internal/testutil чистит её каждым `go test`); DSN из флага -postgres-dsn чистится исключительно с явным -reset-postgres (main.go).

Помощники запуска внешних команд: go, собранные catalogctl/restsrv, gofmt. Логика прогона целиком в Go — никаких sh/bat/cmd (регламент qa/README.md).

Определение окружения и железа прогона: переносимая часть (stdlib) плюс платформенные файлы hostinfo_<os>.go (Linux — /proc, macOS — sysctl, Windows — реестр и kernel32). Внешних зависимостей нет: golang.org/x/sys уже в графе модуля.

Определение железа на Linux: /proc/cpuinfo, /proc/meminfo, os-release, версия ядра — /proc/sys/kernel/osrelease (uname -r).

Команда runner — кроссплатформенный прогон QA справочника (Linux, macOS, Windows; регламент — qa/README.md). Фазы: определение окружения и железа, сборка catalogctl/restsrv, статические проверки (go build/vet, gofmt, go test), сборка и запуск примера встраивания examples/embed (внешний модуль — контракт фасада components), сквозные сценарии CLI и REST на SQLite (всегда) и PostgreSQL (при CATALOG_TEST_POSTGRES_DSN либо -postgres-dsn), опциональная нагрузочная прикидка (-scale). Итог — структурный отчёт qa-log/1 (qa/reports/*.log); код выхода 0 — все проверки зелёные.

Прогон целиком на Go: внешние команды — только go и собранные бинарники проекта; никаких sh/bat/cmd-скриптов.

Централизованная маскировка секретов DSN на границе отчёта: вывод дочерних команд (go test, catalogctl, restsrv) и ошибки драйверов включают строки подключения «best effort», а отчёт прогона коммитится в репозиторий как свидетельство. Точечная маскировка мест подключения не покрывает все пути утечки, поэтому маскируются все строки, попадающие в отчёт (report.line): точные вхождения известного DSN ноги (любая форма, включая ключевую — storage.MaskDSN) и userinfo URL-формы в произвольном тексте.

Структурный журнал прогона QA — формат qa-log/1 (грамматика — qa/README.md). Пишется построчно с флешем на каждой записи: прерванный прогон оставляет читаемый частичный отчёт; одновременно строки дублируются на консоль.

Сценарии REST: qa/restsrv (минимальный хост /api/v1) поднимается на свободном порту ноги прогона, проверки идут через net/http — контракт статусов, коды ошибок, ETag/304, CRUD без внешних инструментов.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL