From 9c58e20e4eb3e3e9578225a6bd1809c0b8c28bd9 Mon Sep 17 00:00:00 2001 From: bot-backend Date: Thu, 13 Aug 2026 22:12:49 +0500 Subject: [PATCH] =?UTF-8?q?ci:=20=D0=BF=D0=B5=D1=87=D0=B0=D1=82=D0=B0?= =?UTF-8?q?=D1=82=D1=8C=20=D0=BA=D0=BE=D0=B4=20=D0=B2=D0=BE=D0=B7=D0=B2?= =?UTF-8?q?=D1=80=D0=B0=D1=82=D0=B0=20pytest=20=D1=8F=D0=B2=D0=BD=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Маркеры из #2872 показали, что оба шага после pytest отрабатывают успешно («coverage report вернул код 0», «Снести тестовый Postgres закончился успешно»), и всё равно через 250 мс act объявляет job упавшей. Значит остаётся один невидимый кандидат — сам шаг с pytest. Его сводка («4647 passed, 28 skipped») печатается ДО выхода процесса, поэтому ненулевой код после зелёной сводки выглядит как «упало неизвестно где». Печатаем код явно и сохраняем гейт через `exit $rc`. `|| rc=$?`, а не отдельная строка: под `set -e` присваивание после упавшей команды не выполнится. Refs #2871 --- .forgejo/workflows/ci.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) 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) — -- 2.45.3