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.