Skip to content

feat(ci): PHPStan gate + PHPUnit scaffold for pure helpers#433

Open
Ibochkarev wants to merge 4 commits into
betafrom
feat/issue-429-phpstan-ci
Open

feat(ci): PHPStan gate + PHPUnit scaffold for pure helpers#433
Ibochkarev wants to merge 4 commits into
betafrom
feat/issue-429-phpstan-ci

Conversation

@Ibochkarev

@Ibochkarev Ibochkarev commented Jul 23, 2026

Copy link
Copy Markdown
Member

Описание

Roadmap #429, уровни 0–1 в одном PR:

  1. Уровень 0: PHPStan в CI (composer stan / job PHPStan), portable phpstan.neon, baseline, pinned MODX/pdoTools.
  2. Уровень 1 ([Feature] PHPUnit: каркас + 2–3 unit-теста на чистые функции #395): PHPUnit 11, tests/Unit/, composer test внутри ci:php. Перенесены кейсы CSV option parse и email-verify URL; добавлены charset helpers, OptionColumnSpec, GridEditorReferenceRegistry. Хелперы charset вынесены в phinx_mysql_charset.php.

Тип изменений

  • Новая функциональность (non-breaking change)

Связанные Issues

Closes #395
Refs #429 (уровни 0–1; интеграционные тесты и Vitest — follow-up)

Как это было протестировано?

Локально (exit 0):

cd core/components/minishop3
composer install
composer ci:php          # php -l + smoke (3) + PHPUnit (39) — exit 0
composer stan:prepare && composer stan   # exit 0 (уровень 0)
  • Ручное тестирование
  • Автоматические тесты (composer ci:php, composer test, composer stan / GitHub Actions CI)
  • Тестирование на разных версиях PHP/MODX

Конфигурация тестирования:

  • MiniShop3: ветка feat/issue-429-phpstan-ci
  • MODX / pdoTools: pinned в scripts/phpstan-deps.pins
  • PHP: 8.2 (CI) / 8.4 локально

Скриншоты (если применимо)

До После
n/a n/a

Чеклист

  • Код соответствует стилю проекта
  • Добавлены/обновлены комментарии в сложных местах
  • Изменения не ломают существующую функциональность
  • Лексиконы добавлены на двух языках (ru/en)
  • PHPStan проходит без новых ошибок (composer stan / CI job PHPStan)
  • ESLint проходит без ошибок (npm run lint:ci для Vue)
  • Обновлён CHANGELOG.md (для значимых изменений)

Дополнительные заметки

@Ibochkarev Ibochkarev added priority: high Важно исправить в ближайшее время enhancement New feature or request tech-debt Maintainability / refactor / architecture debt labels Jul 23, 2026
@Ibochkarev Ibochkarev changed the title feat(ci): add PHPStan analyse job with portable config and baseline feat(ci): PHPStan gate + PHPUnit scaffold for pure helpers Jul 23, 2026
@Ibochkarev
Ibochkarev requested a review from biz87 July 23, 2026 11:13
@Ibochkarev
Ibochkarev force-pushed the feat/issue-429-phpstan-ci branch from 596d958 to 75bd1ca Compare July 23, 2026 16:08
Wire level-0 static analysis into CI so PR reviews stop relying on
manual PHPStan runs; pin MODX/pdoTools trees and keep historical
findings in baseline so only new errors fail the gate.
Level 1 of the testing roadmap: PHPUnit in CI beside smoke, migrate CSV
option parse and email-verify URL cases, cover charset helpers plus
security allowlists; extract Phinx charset helpers for F.I.R.S.T. tests.
Renaming the check broke the beta required status "PHP lint + smoke",
so the PR stayed blocked waiting for a check that never runs.
Bump checkout/setup-node/cache to v5 (Node 24 action runtime) and run
vueManager lint on Node 24 so CI stops requesting the EOL Node 20 toolchain.
@Ibochkarev
Ibochkarev force-pushed the feat/issue-429-phpstan-ci branch from 75bd1ca to 4ce69b4 Compare July 24, 2026 02:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request priority: high Важно исправить в ближайшее время tech-debt Maintainability / refactor / architecture debt

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] PHPUnit: каркас + 2–3 unit-теста на чистые функции

1 participant