Skip to content

ci: report test coverage to Codecov - #672

Open
refaim wants to merge 1 commit into
unxed:mainfrom
refaim:ci/coverage
Open

ci: report test coverage to Codecov#672
refaim wants to merge 1 commit into
unxed:mainfrom
refaim:ci/coverage

Conversation

@refaim

@refaim refaim commented Aug 22, 2026

Copy link
Copy Markdown
Collaborator

Добавил сбор покрытия тестами и отправку в Codecov.

Что в PR:

  • три ячейки тестовой матрицы (linux/amd64, darwin/arm64, windows/amd64) собирают профиль с -coverpkg=./... и отправляют его в Codecov — три отчёта он склеивает сам;
  • .github/codecov.yml: оба статус-чека informational, то есть покрытие ничего не блокирует;
  • бейдж в README.

Одна ячейка на ОС, а не все шесть: набор компилируемых файлов гейтится по GOOS, файлов, зависящих от GOARCH, в дереве нет — arm64-близнецы дали бы ровно те же строки. Цена — примерно минута на ячейку.

@unxed, чтобы заработало, нужно четыре шага с твоей стороны:

  1. зайти на codecov.io через GitHub-аккаунт;
  2. добавить репозиторий unxed/f4 (поставится Codecov App);
  3. скопировать там Repository Upload Token;
  4. Settings → Secrets and variables → Actions → New repository secret, имя CODECOV_TOKEN.

Что получится:

  • на каждом пуше в main — общий процент по трём ОС (сейчас около 65%), история изменений и рабочий бейдж в README;
  • в PR — комментарий с дельтой и разбивкой по изменённым файлам, плюс чеки codecov/project и codecov/patch, оба informational, мерж не блокируют;
  • в вебе — построчный просмотр: видно не «44% в пакете», а конкретные непокрытые ветки.

Одна оговорка: PR из форков секретов не видят, поэтому на них заливка не сработает и комментария не будет — цифры будут обновляться на пушах в main. Если захочется и на форковых PR, в настройках организации Codecov есть разрешение на заливку без токена для публичных репозиториев.

Пока токена нет, всё безопасно: заливка отваливается с Token required, шаг остаётся зелёным, CI не краснеет. Проверено на форке: https://github.com/refaim/f4/actions/runs/32566460922

The suite runs on six native cells but nothing measured what it actually
covers. Collect a profile on one cell per OS and hand it to Codecov, which
merges the three uploads for a commit on its side.

One cell per OS, not all six: which files compile is gated by GOOS alone —
the tree has no GOARCH-gated Go files — so the arm64 twins would spend an
instrumented build to report the same lines. The profile uses -coverpkg so
hits count across package boundaries; without it a project that keeps most
of its tests in cmd/f4 reports every other package as nearly untested.

Nothing here can fail a build: uploads are best-effort, and both Codecov
status checks are informational, so the numbers report without gating.
@unxed

unxed commented Aug 22, 2026

Copy link
Copy Markdown
Owner

Хорошее! Займусь с компа попозже или завтра

@unxed

unxed commented Aug 24, 2026

Copy link
Copy Markdown
Owner

Напомни, плз, что мне нужно настроить, чтобы дать доступ к настройкам безопасности тебе?

@refaim

refaim commented Aug 25, 2026

Copy link
Copy Markdown
Collaborator Author

Сейчас не получится, это твой личный репозиторий, только у тебя есть доступ.

Можно создать организацию на гитхабе (как FarGroup) и туда проект перенести, тогда ты как владелец сможешь в нее добавлять людей и нарезать им разные уровни доступа, в том числе к настройкам безопасности.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants