diff --git a/.forgejo/workflows/ci.yml b/.forgejo/workflows/ci.yml index a9cb7fa7..1bcf6635 100644 --- a/.forgejo/workflows/ci.yml +++ b/.forgejo/workflows/ci.yml @@ -233,11 +233,18 @@ jobs: # coverage.xml — артефакт для будущего Codecov/Coveralls upload (#68 badge). # term-missing → видно непокрытые строки прямо в job-логе. run: | + # #2871: код возврата печатаем ЯВНО. Сводка pytest («4647 passed») уходит + # в лог ДО выхода, поэтому зелёная сводка при ненулевом коде выглядит как + # «job упал неизвестно где» — а падал именно этот шаг. Гейт сохраняется: + # ниже `exit $rc`. + rc=0 uv run pytest -q -rs --ignore=tests/smoke \ --cov=app \ --cov-report=term-missing:skip-covered \ --cov-report=xml:coverage.xml \ - --cov-fail-under=65 + --cov-fail-under=65 || rc=$? + echo "### pytest вернул код $rc" + exit $rc - name: Coverage summary → job output # Дешёвый human-readable итог. Бежит даже если gate упал (if: always) —