make couverture runs the node series under V8 instrumentation and prints one row per module, full ones included, plus a line-by-line HTML report. Four modules hold a hard 100 % branch floor — indicateurs.js, plafond.js, depot.js, journal.js — and the command fails below it; there is no global threshold, which covering the easy modules would satisfy. The tree guard refuses a lowered or global floor, a floor on a file the measure never loads, and a command that does not measure. It extends determinism and layer boundaries to src/stockage, src/csv and src/application (§ 13.4), and no longer takes a string literal for DOM access. Checked: 1266 node tests; the four floors at 100 %. --- FR --- [ADD] épreuves : couverture par module, seuils durs, gardes des couches make couverture joue la série node sous l'instrumentation de V8 et imprime une ligne par module, pleins compris, et un rapport HTML ligne à ligne. Quatre modules tiennent un seuil dur de 100 % des branches — indicateurs.js, plafond.js, depot.js, journal.js — et la commande échoue en deçà ; aucun seuil global, qu'on satisferait en couvrant les modules faciles. La garde de l'arborescence refuse un seuil abaissé ou global, un seuil sur un fichier que la mesure ne charge pas, et une commande qui ne mesure pas. Elle étend le déterminisme et les frontières des couches à src/stockage, src/csv et src/application (§ 13.4), et ne prend plus une chaîne littérale pour le DOM. Vérifié : 1266 épreuves node ; les quatre seuils à 100 %. Assisted-by: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01EUXSGcwCLSC69FWEdCtWSb
112 lines
3.5 KiB
Makefile
112 lines
3.5 KiB
Makefile
# © 2026 TechnoLibre (http://www.technolibre.ca)
|
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl)
|
|
#
|
|
# Cibles du projet. Chacune délègue à un script qui porte la logique et se
|
|
# lance aussi sans make : ./run.sh, ./install.sh, ./install_dev.sh, et sous
|
|
# Windows run.cmd, install.cmd, install_dev.cmd. npm, npx et node passent par
|
|
# avec_node, qui pose le Node du projet en tête du PATH après avoir vérifié
|
|
# l'installation.
|
|
#
|
|
# make lance l'application, comme ./run.sh
|
|
# make help la liste des cibles
|
|
|
|
ifeq ($(OS),Windows_NT)
|
|
PS := powershell.exe -NoProfile -ExecutionPolicy Bypass
|
|
LANCER := $(PS) -File scripts/windows/lancer.ps1
|
|
INSTALLER := $(PS) -File scripts/windows/installer.ps1
|
|
INSTALLER_DEV := $(PS) -File scripts/windows/installer.ps1 -Dev
|
|
AVEC_NODE := $(PS) -File scripts/windows/avec_node.ps1
|
|
else
|
|
# bash, où qu'il soit : /bin/bash n'existe pas sous NixOS, et make s'y
|
|
# arrêterait avant la première recette.
|
|
SHELL := $(shell command -v bash 2>/dev/null || echo /bin/bash)
|
|
LANCER := ./run.sh
|
|
INSTALLER := ./install.sh
|
|
INSTALLER_DEV := ./install_dev.sh
|
|
AVEC_NODE := scripts/installation/avec_node.sh
|
|
endif
|
|
|
|
.DEFAULT_GOAL := run
|
|
|
|
.PHONY: run
|
|
run: ## Lance l'application : Electron sur une session graphique, sinon le serveur de Vite
|
|
$(LANCER)
|
|
|
|
.PHONY: web
|
|
web: ## Sert l'application à un navigateur, http://localhost:5173
|
|
$(LANCER) --web
|
|
|
|
.PHONY: electron
|
|
electron: ## Lance la coquille Electron
|
|
$(LANCER) --electron
|
|
|
|
.PHONY: install
|
|
install: ## Installe de quoi lancer l'application et jouer les épreuves sous node
|
|
$(INSTALLER)
|
|
|
|
.PHONY: install_dev
|
|
install_dev: ## Installe aussi Chromium, des polices et podman
|
|
$(INSTALLER_DEV)
|
|
|
|
.PHONY: test
|
|
test: ## Joue la série surveillée, sous node (§ 14.4)
|
|
$(AVEC_NODE) npm test
|
|
|
|
.PHONY: test_long
|
|
test_long: ## Joue la série longue, sous node
|
|
$(AVEC_NODE) npm run test:long
|
|
|
|
.PHONY: test_navigateur
|
|
test_navigateur: ## Joue les épreuves du navigateur, sous Chromium
|
|
$(AVEC_NODE) npm run test:navigateur
|
|
|
|
.PHONY: test_tout
|
|
test_tout: ## Joue les trois séries
|
|
$(AVEC_NODE) npm run test:tout
|
|
|
|
.PHONY: couverture
|
|
couverture: ## Mesure la couverture de la série node, module par module ; seuils durs du § 14.13
|
|
$(AVEC_NODE) npm run couverture
|
|
|
|
.PHONY: build
|
|
build: ## Construit la page dans www/
|
|
$(AVEC_NODE) npm run build
|
|
|
|
.PHONY: verifier
|
|
verifier: ## Contrôle la version, le nom du livrable et le changelog (§ 18.5)
|
|
$(AVEC_NODE) node scripts/version.js controler
|
|
|
|
.PHONY: essai_demarrage
|
|
essai_demarrage: ## Lance Electron, lit le titre de sa fenêtre et ferme
|
|
$(AVEC_NODE) node scripts/essai_demarrage.js
|
|
|
|
ifeq ($(OS),Windows_NT)
|
|
.PHONY: windows
|
|
windows: ##W Construit l'exécutable Windows portable (sous Linux seulement, § 16)
|
|
@echo La construction de l'executable se fait sous Linux, en conteneur : make windows.
|
|
@exit 1
|
|
|
|
.PHONY: clean
|
|
clean: ##W Retire la page construite, www/
|
|
$(PS) -Command "Remove-Item -Recurse -Force -ErrorAction SilentlyContinue www"
|
|
|
|
.PHONY: help
|
|
help: ##W Affiche cette liste
|
|
@findstr /R /C:"^[a-z_]*:.*## " /C:"^[a-z_]*:.*##W " Makefile
|
|
else
|
|
.PHONY: windows
|
|
windows: ##U Construit l'exécutable Windows portable, sous podman (§ 16)
|
|
$(AVEC_NODE) scripts/construire_windows.sh
|
|
|
|
.PHONY: verifier_systemes
|
|
verifier_systemes: ##U Installe et éprouve sur chaque système du catalogue, en conteneurs
|
|
scripts/verifier_systemes.sh
|
|
|
|
.PHONY: clean
|
|
clean: ##U Retire la page construite, www/
|
|
rm -rf www
|
|
|
|
.PHONY: help
|
|
help: ##U Affiche cette liste
|
|
@awk 'BEGIN { FS = ":.*##U? " } /^[a-z_]+:.*##U? / { printf " make %-18s %s\n", $$1, $$2 }' $(MAKEFILE_LIST)
|
|
endif
|