Étape 0a.4 : comparaison du moteur aux références de gnubg #8

Manually merged
pierre merged 8 commits from comparaison into main 2026-11-02 18:04:53 +00:00
4 changed files with 24 additions and 12 deletions
Showing only changes of commit ae166d51e5 - Show all commits
+4 -3
View File
@@ -34,12 +34,13 @@ Les contenus pédagogiques (leçons, textes) sont sous licence CC BY-SA 4.0.
(`docker/gnubg-reference/`, `tests/reference/`). Les résultats de
`tests/reference/results/` et les données `gnubg.wd`, `gnubg_os0.bd`,
`gnubg_ts0.bd` sont produits par ce programme.
- **jq** (licence MIT), lecture des JSON dans `tests/test_reference.sh` ;
utilisé sur le PC, pas dans Docker.
- **Image `ustagammon/build-c`** (`docker/build-c/Dockerfile`), construite sur
Debian trixie : gcc (GPLv3 avec exception d'exécution), make (GPLv3),
GLib (LGPL 2.1 ou ultérieure, uniquement pour les outils `makeweights` et
`makebearoff` lancés au build ; le moteur embarqué n'en contient rien).
`makebearoff` lancés au build ; le moteur embarqué n'en contient rien),
**Python 3** (licence PSF, compatible GPL), qui exécute le comparateur
`tests/reference/compare.py`, et **jq** (licence MIT), qui lit les JSON
dans `tests/test_reference.sh`. Aucun des deux n'est utilisé sur le PC.
## Remerciements
+1 -1
View File
@@ -17,7 +17,7 @@ GHERKIN_IMAGE := ustagammon/gherkin:2
REFERENCE_IMAGE := ustagammon/gnubg-reference:14b6798
# Chaîne de compilation C (docker/build-c/Dockerfile) : changer l'étiquette
# à chaque modification du Dockerfile, pour que make setup la reconstruise.
BUILD_C_IMAGE := ustagammon/build-c:1
BUILD_C_IMAGE := ustagammon/build-c:2
export SHELLCHECK_IMAGE GHERKIN_IMAGE BUILD_C_IMAGE
+7 -5
View File
@@ -1,14 +1,16 @@
# Chaîne de compilation C d'Ustagammon (moteur embarqué et engine-cli).
# Construite une fois par `make setup` ; le build tourne dedans, jamais avec
# les outils de l'hôte (ADR 0004).
# Chaîne de compilation C d'Ustagammon (moteur embarqué et engine-cli), et
# outils des tests du moteur. Construite une fois par `make setup` ; le build
# et ces tests tournent dedans, jamais avec les outils de l'hôte (ADR 0004).
#
# - gcc et make : compilation du moteur et d'engine-cli ;
# - libglib2.0-dev : uniquement pour les outils officiels de gnubg lancés au
# build (makeweights, makebearoff), qui produisent les données du moteur.
# Le moteur embarqué lui-même n'utilise pas GLib (shim engine/compat/).
# Le moteur embarqué lui-même n'utilise pas GLib (shim engine/compat/) ;
# - python3 : comparateur du moteur aux références (tests/reference/compare.py) ;
# - jq : contrôle du format des références (tests/test_reference.sh).
FROM debian:trixie
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
gcc libc6-dev make pkg-config libglib2.0-dev \
gcc libc6-dev make pkg-config libglib2.0-dev python3 jq \
&& rm -rf /var/lib/apt/lists/*
+12 -3
View File
@@ -2,12 +2,21 @@
# Vérifie la cohérence des positions de référence (tests/reference/) :
# JSON valide, au moins 30 positions, chaque catégorie présente, un résultat
# par position aux niveaux 0 et 2 plis avec tous les champs du format
# (voir tests/reference/README.md). Ne lance pas Docker ni gnubg.
# (voir tests/reference/README.md). Ne lance pas gnubg : jq tourne dans
# l'image de la chaîne C (ADR 0004), dans laquelle le script se relance.
set -euo pipefail
cd "$(dirname "$0")/reference"
cd "$(dirname "$0")/.."
command -v jq >/dev/null || { echo "jq est requis : sudo apt install jq"; exit 1; }
if [ -z "${USTAGAMMON_IN_DOCKER:-}" ]; then
image="${BUILD_C_IMAGE:?lancer via make test}"
docker image inspect "$image" >/dev/null 2>&1 \
|| { echo "Chaîne C absente : lancer d'abord make setup"; exit 1; }
exec docker run --rm --user "$(id -u):$(id -g)" -e USTAGAMMON_IN_DOCKER=1 \
-v "$PWD:/src:ro" -w /src "$image" bash tests/test_reference.sh
fi
cd tests/reference
erreurs=0
signaler() {