No description
  • Python 89%
  • Makefile 11%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Gilles Fritz c42e95c0cd
All checks were successful
ci / test (3.10) (push) Successful in 24s
ci / test (3.12) (push) Successful in 25s
ci / test (3.11) (push) Successful in 22s
ci / test (3.13) (push) Successful in 23s
ci / test (3.14) (push) Successful in 24s
ci / test (3.15) (push) Successful in 24s
ci / lint (push) Successful in 45s
ci / publish (push) Successful in 23s
Send publish reports to Argus from the release job (#5)
Closes #4

Monitoring plan, phase 5 rollout, same as the pilots argus/backend#45 and argus/frontend#35.

## Changes (`.forgejo/workflows/ci.yml`)
- New step "Collect publish details for Argus": `ARGUS_ARTIFACT` = built wheel `name|bytes|package page`; `/tmp/dependencies.txt` = the runtime dependencies declared in `pyproject.toml` (`name specifier` lines, e.g. `Django >=4.2`).
- Both publish-release calls (numbered release, devel snapshot) get `ARGUS_UPLOAD_TOKEN: ${{ secrets.ARGUS_UPLOAD_TOKEN }}` and `--artifact "$ARGUS_ARTIFACT" --dependencies /tmp/dependencies.txt`. A failed upload only warns, the release itself is unaffected.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_014BSmBtGWeFBD9z4mYm9SjA
Reviewed-on: #5
2026-10-30 08:15:32 +00:00
.forgejo/workflows Send publish reports to Argus from the release job (#5) 2026-10-30 08:15:32 +00:00
src/thierryade_pytest Docs: refinements are now specs, R-* codes are aliases (#3) 2026-10-25 18:42:02 +00:00
tests Add leveled logging (debug/info/warning/error) throughout 2026-10-18 10:17:50 +02:00
.gitignore Scaffold thierryade-pytest: covers() marker, JUnit property injection, push to Thierryade + Argus 2026-10-18 07:45:39 +02:00
.pylintrc Scaffold thierryade-pytest: covers() marker, JUnit property injection, push to Thierryade + Argus 2026-10-18 07:45:39 +02:00
LICENSE Scaffold thierryade-pytest: covers() marker, JUnit property injection, push to Thierryade + Argus 2026-10-18 07:45:39 +02:00
Makefile Scaffold thierryade-pytest: covers() marker, JUnit property injection, push to Thierryade + Argus 2026-10-18 07:45:39 +02:00
pyproject.toml Scaffold thierryade-pytest: covers() marker, JUnit property injection, push to Thierryade + Argus 2026-10-18 07:45:39 +02:00
README.md Docs: refinements are now specs, R-* codes are aliases (#3) 2026-10-25 18:42:02 +00:00
renovate.json Configure Renovate (#1) 2026-10-19 05:56:39 +00:00
tox.ini Test thierryade-pytest across py310-py315, matching the ecosystem's matrix 2026-10-18 08:18:03 +02:00

thierryade-pytest

CI License: GPLv3

Plugin pytest pour Thierryade : relie automatiquement vos tests unitaires aux specs (raffinements compris) que vous avez documentées dans Thierryade, et pousse le résultat de chaque run CI directement vers l'outil.

Installation

pip install thierryade-pytest

Aucune configuration supplémentaire : le marqueur covers est enregistré automatiquement (entry point pytest11), pas besoin de le déclarer dans votre pytest.ini.

Usage

Dans vos tests, référencez le code de la spec Thierryade (DRH-17) que ce test vérifie :

import pytest

@pytest.mark.covers("DRH-17")
def test_commit_transfer_locks_the_registration_and_sends_an_email():
    ...

Un test peut couvrir plusieurs codes : @pytest.mark.covers("DRH-17", "DRH-23").

Un raffinement est une spec comme une autre, avec son propre code. Les anciens codes de raffinage (DRH-R-9), d'avant la refonte de Thierryade, restent acceptés : ils désignent désormais la spec qui a repris ce raffinage.

Après un run normal avec --junitxml=junit.xml, les codes couverts sont automatiquement sérialisés dans les <properties> de chaque <testcase>. Poussez-les ensuite vers Thierryade (typiquement une étape de CI, après le job de tests) :

thierryade-pytest push-coverage \
  --junit-xml junit.xml \
  --thierryade-url https://thierryade.stationmyr.net \
  --thierryade-token "$THIERRYADE_UPLOAD_TOKEN" \
  --commit-sha "$GITHUB_SHA" \
  --ci-run-url "$CI_RUN_URL" \
  --argus-report-out argus-thierryade-report.json

--argus-report-out est optionnel : s'il est fourni, un second fichier JSON est écrit au format générique d'Argus (« format maison »), à uploader avec l'action partagée argus/upload-action :

- uses: https://git.stationmyr.net/argus/upload-action@v1
  with:
    token: ${{ secrets.ARGUS_UPLOAD_TOKEN }}
    reports: custom argus-thierryade-report.json thierryade-coverage

Un code inconnu de Thierryade n'interrompt jamais le reste du push (il est juste signalé) ; une erreur de transport/HTTP, en revanche, fait échouer la commande -- ce mécanisme alimente une vraie base de données, pas juste un badge informatif.

--log-level debug|info|warning|error (défaut info) règle la verbosité (requêtes HTTP, codes rencontrés, etc. en debug).

Développement

Voir le Makefile (make dev, make test, make lint, make tox).