Skip to content

chore(ci): wyrzuc coverage z CI + lokalny make coverage-ai#242

Open
mpasternak wants to merge 3 commits into
devfrom
chore/drop-ci-coverage
Open

chore(ci): wyrzuc coverage z CI + lokalny make coverage-ai#242
mpasternak wants to merge 3 commits into
devfrom
chore/drop-ci-coverage

Conversation

@mpasternak
Copy link
Copy Markdown
Member

Summary

  • Coveralls.io okresowo zwracal HTTP 520 (Cloudflare backend error) przy uploadzie raportu z CI shardow, blokujac zielony build mimo zielonych testow. Coverage data generowane na CI nigdy nie byly faktycznie ogladane.
  • Wycofuje generowanie pokrycia z CI w calosci: workflow Coveralls, parallel-finish, flagi --cov w pytest, Makefile targety clean-coverage/combine-coverage/coveralls-upload, sekcje [tool.coverage.*], dep coveralls, pytest-cov oraz cala redundancja --cov-report w pytest.ini.
  • W zamian: lokalny make coverage-ai — narzedzie zoptymalizowane pod konsumpcje przez agenta AI/LLM: sortuje pliki ascending po %, filtruje migracje/testy/trywialne __init__.py, emituje zwiezle zakresy linii missing zamiast pojedynczych numerow, ucina do top-N. Format <path> COVER=X% STMTS=N MISS=N BRANCH=N MISSING=L-L,L-L to ~30 tokenow per plik (3x mniej niz rownowazny JSON).

Uzycie

make coverage-ai                                  # default: <90%, top 30, bez playwright
make coverage-ai COVERAGE_THRESHOLD=80 COVERAGE_LIMIT=50
make coverage-ai COVERAGE_PYTEST_ARGS='-m ""'    # rowniez playwright (wolne)

Wyjscie idzie na stdout — agent pipuje do swojego kontekstu lub make coverage-ai > /tmp/cov.txt.

Przykladowe wyjscie:

# Coverage gaps below 90.0% — showing 30 of 142 below threshold (412 eligible source files, 87 skipped as migrations/tests/trivial)
# Schema: <path> COVER=<%> STMTS=<n> MISS=<n> BRANCH=<n-partial> MISSING=<line-ranges>
# Sorted: ascending coverage; ties broken by descending statement count (bigger files first).

src/bpp/views/foo.py COVER=12.5% STMTS=80 MISS=70 BRANCH=5 MISSING=5-12,18-25,30-45
...

Decyzje projektowe

  • pytest-cov zostaje jako dev dep, ale CI nie wola --cov — plugin jest neutralny dopoki nie podasz flagi, wiec instalacja CI nie cierpi.
  • [tool.coverage.*] sekcje wracaja do pyproject.toml — sa inertne dopoki ktos nie odpali coverage CLI; bez nich make coverage-ai musialby duplikowac config.
  • Skrypt w bin/coverage_for_ai.py zamiast inline w Makefile — czytelniejsze, latwiej rozszerzyc, ma docstring z przykladami uzycia.

Test plan

  • make coverage-ai (na lokalnej maszynie) — sprawdz ze tworzy coverage.json i wypluwa ranking
  • CI tests workflow przechodzi (zielony build bez Coveralls)
  • make help pokazuje coverage-ai w sekcji Testy
  • Brak zostawionych referencji do Coveralls: grep -rn coveralls .github Makefile pyproject.toml pytest.ini -> 0 hits

🤖 Generated with Claude Code

mpasternak and others added 3 commits May 22, 2026 13:51
Coveralls.io okresowo zwracal HTTP 520 (Cloudflare backend error)
przy uploadzie raportu z CI, blokujac zielony build. Coverage data
generowane na CI nigdy nie byly faktycznie ogladane.

Zmiany:
- .github/workflows/tests.yml: usun --cov flags i krok upload do
  Coveralls
- .github/workflows/coveralls-finish.yml: usun caly workflow
  (parallel-finish nie ma juz czego finiszowac)
- Makefile: usun targety clean-coverage, combine-coverage,
  coveralls-upload + odepnij je z chain'ow tests: i full-tests:
- pyproject.toml: usun sekcje [tool.coverage.*] oraz dependency
  coveralls i pytest-cov
- pytest.ini: usun zakomentowany blok --cov-report z addopts
- uv.lock: regen (drop coveralls/coverage/pytest-cov + transitive)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Lokalne narzedzie (NIE wpiete w CI) do generowania raportu pokrycia
zoptymalizowanego pod konsumpcje przez AI: sortowanie ascending po %,
filtr migracji/testow/trywialnych __init__.py, zwiezle zakresy linii
missing zamiast pojedynczych numerow, top-N najgorszych plikow.

Format wyjsciowy (~30 tokenow per plik, 3x mniej niz JSON):

    src/bpp/foo.py COVER=12.5% STMTS=80 MISS=70 BRANCH=5 MISSING=5-12,18-25

Uzycie:
    make coverage-ai                      # default: <90%, top 30, no playwright
    make coverage-ai COVERAGE_THRESHOLD=80 COVERAGE_LIMIT=50
    make coverage-ai COVERAGE_PYTEST_ARGS='-m ""'   # rowniez playwright

Wprowadzone elementy:
- pyproject.toml: re-add pytest-cov + minimal [tool.coverage.*] config
  (config jest inertny w CI — CI nie wola --cov)
- bin/coverage_for_ai.py: parser coverage.json -> compact LLM-friendly text
- Makefile: target `coverage-ai` z konfigurowalnym threshold/limit/args
- .gitignore: coverage.json + cov_html/ (efemeryczne artefakty)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- bin/coverage_for_ai.py: ruff zwinal kilka lamanych linii
- uv.lock: idna 3.11 -> 3.16 (CVE-2026-45409, fixable, blokowal pip-audit
  gate; problem byl pre-existing na dev od 2026-05-21)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.

1 participant