From 2be5bdcb4f9b9996aa9060f647db5d24dd0f7e67 Mon Sep 17 00:00:00 2001 From: Pierre MARTIN Date: Tue, 3 Nov 2026 15:05:27 +0100 Subject: [PATCH] =?UTF-8?q?Tests=20:=20image=20du=20site=20propre=20=C3=A0?= =?UTF-8?q?=20chaque=20copie=20de=20travail,=20supprim=C3=A9e=20en=20fin?= =?UTF-8?q?=20de=20test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- tests/browser.sh | 9 ++++----- tests/site-image.sh | 20 ++++++++++++++++++++ tests/test_site.sh | 9 ++++----- 3 files changed, 28 insertions(+), 10 deletions(-) create mode 100644 tests/site-image.sh diff --git a/tests/browser.sh b/tests/browser.sh index 580baaf..102b264 100755 --- a/tests/browser.sh +++ b/tests/browser.sh @@ -18,11 +18,10 @@ browsers="${BROWSERS:-chromium firefox}" unset MAKEFLAGS MFLAGS MAKELEVEL make -s package >/dev/null -site_image="ustagammon/site-test:local" -docker build -q -t "$site_image" build/deploy >/dev/null -container="$(docker run -d --rm -p 127.0.0.1::80 "$site_image")" -trap 'docker stop "$container" >/dev/null' EXIT -port="$(docker port "$container" 80/tcp | head -n1 | sed 's/.*://')" +# Image de production lancée, étiquette propre à ce dépôt : site_image, +# container, port. +# shellcheck source=tests/site-image.sh +. tests/site-image.sh # Le paquet playwright, à la version des navigateurs de l'image. tools=build/browser-tools diff --git a/tests/site-image.sh b/tests/site-image.sh new file mode 100644 index 0000000..0955638 --- /dev/null +++ b/tests/site-image.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash +# Construit l'image de production (build/deploy, voir make package) sous une +# étiquette propre à ce dépôt, et la lance. À sourcer depuis la racine du +# dépôt ; définit site_image, container et port, et arrête le conteneur puis +# supprime l'image à la sortie du script. +# +# Plusieurs copies de travail (worktrees) peuvent lancer leurs tests en même +# temps : avec une étiquette commune, docker échouait (« parent snapshot ... +# does not exist »). Le suffixe est un hachage court du chemin du dépôt. + +site_image="ustagammon/site-test:$(pwd -P | sha1sum | cut -c1-12)" +docker build -q -t "$site_image" build/deploy >/dev/null +container="$(docker run -d --rm -p 127.0.0.1::80 "$site_image")" +site_cleanup() { + docker stop "$container" >/dev/null 2>&1 || true + docker rmi "$site_image" >/dev/null 2>&1 || true +} +trap site_cleanup EXIT +port="$(docker port "$container" 80/tcp | head -n1 | sed 's/.*://')" +export site_image container port diff --git a/tests/test_site.sh b/tests/test_site.sh index 774c058..dbadebb 100755 --- a/tests/test_site.sh +++ b/tests/test_site.sh @@ -11,11 +11,10 @@ cd "$(dirname "$0")/.." unset MAKEFLAGS MFLAGS MAKELEVEL make -s package >/dev/null -image="ustagammon/site-test:local" -docker build -q -t "$image" build/deploy >/dev/null -container="$(docker run -d --rm -p 127.0.0.1::80 "$image")" -trap 'docker stop "$container" >/dev/null' EXIT -port="$(docker port "$container" 80/tcp | head -n1 | sed 's/.*://')" +# Image de production lancée, étiquette propre à ce dépôt : site_image, +# container, port. +# shellcheck source=tests/site-image.sh +. tests/site-image.sh base="http://127.0.0.1:$port" # Caddy démarre en une fraction de seconde : on attend qu'il réponde.