Chaîne C : Python 3 et jq ; test_reference.sh tourne dans Docker
jq n'est plus utilisé sur le PC (ADR 0004) : tests/test_reference.sh se relance dans l'image ustagammon/build-c:2, qui contient aussi Python 3 pour le comparateur du moteur. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
be6a4b4446
commit
ae166d51e5
+4
-3
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user