[FIX] qemu plan : retirer l'avertissement que NixOS ne s'installe pas

Le dernier écran avant de créer portait « ERPLibre ne s'installe pas encore
sur NixOS : la VM est créée, l'installation échoue ». Il s'y installe, de
bout en bout : clone, make install_os, make install_odoo_18, Odoo enregistré
en service et servant 8069.
Un avertissement périmé à cet endroit ne fait pas qu'induire en erreur, il
décourage d'essayer ce qui marche — et c'est la seule ligne de l'écran qui
parle d'un échec. Sa traduction part avec lui, une entrée que personne
n'appelle vieillissant sans qu'on le sache.

--- EN ---

The last screen before creating carried « ERPLibre does not install on NixOS
yet: the VM is created, the install fails ». It does install, end to end:
clone, make install_os, make install_odoo_18, Odoo registered as a service
and serving 8069.
A stale warning there does not merely mislead, it discourages trying what
works — and it is the screen's only line that speaks of a failure. Its
translation goes with it, an entry nobody calls ageing unnoticed.

Assisted-by: Claude Opus 5
This commit is contained in:
Mathieu Benoit 2026-09-17 04:04:25 -04:00
parent 286328215d
commit 36fa84b037
3 changed files with 35 additions and 28 deletions

View file

@ -1128,14 +1128,6 @@ class QemuDeployMixin:
lignes.append(
t("release pinned to %s, sha256 fixed in the repository") % tag
)
if spec.get("install") and "nixos" in distros:
lignes.append(
"⚠ "
+ t(
"ERPLibre does not install on NixOS yet: the VM is"
" created, the install fails"
)
)
return lignes
def _qemu_sudo_lines(self):

View file

@ -5811,17 +5811,6 @@ TRANSLATIONS = {
"fr": "release épinglée sur %s, sha256 figée dans le dépôt",
"en": "release pinned to %s, sha256 fixed in the repository",
},
"ERPLibre does not install on NixOS yet: the VM is created, the install"
" fails": {
"fr": (
"ERPLibre ne s'installe pas encore sur NixOS : la VM est créée,"
" l'installation échoue"
),
"en": (
"ERPLibre does not install on NixOS yet: the VM is created, the"
" install fails"
),
},
# Pourquoi le déploiement demande un mot de passe, dit AVANT l'invite.
"sudo password: asked when the deployment starts": {
"fr": "Mot de passe sudo : demandé au lancement du déploiement, pour",

View file

@ -163,7 +163,9 @@ class CeQuiSeDitALEcran(unittest.TestCase):
with self.subTest(distro=distro):
self.assertIsNone(DQ.image_source_note(distro))
def test_the_recap_shows_the_link_and_the_warning(self):
def test_the_recap_shows_where_the_image_comes_from(self):
"""L'origine d'une image rebâtie par un tiers se dit AVANT de créer
quoi que ce soit : c'est la seule des neuf dans ce cas."""
todo = TODO.__new__(TODO)
spec = {
"vms": [{"name": "vm", "distro": "nixos"}],
@ -174,16 +176,40 @@ class CeQuiSeDitALEcran(unittest.TestCase):
texte = " ".join(lignes)
self.assertIn(DQ.NIXOS_IMAGE_TAG, texte)
self.assertIn("https://", texte)
self.assertIn("ERPLibre", texte)
def test_without_an_install_the_warning_is_not_shown(self):
"""Une VM NixOS sans installation ERPLibre n'a rien qui échoue : le
dire serait du bruit."""
def test_the_plan_no_longer_promises_the_install_will_fail(self):
"""L'écran portait « ERPLibre ne s'installe pas encore sur NixOS ».
Il s'y installe, vérifié de bout en bout sur une VM — un avertissement
périmé sur le DERNIER écran avant de créer ne fait pas qu'induire en
erreur, il décourage d'essayer ce qui marche.
L'épreuve porte sur le texte RENDU et non sur la clé de traduction :
c'est ce que l'opérateur lit, et la clé pouvait partir en laissant la
phrase ailleurs."""
todo = TODO.__new__(TODO)
spec = {"vms": [{"name": "vm", "distro": "nixos"}], "install": None}
with mock.patch.object(TODO, "_qemu_import_module", return_value=DQ):
lignes = todo._qemu_image_lines(spec)
self.assertNotIn("ERPLibre", " ".join(lignes))
for install in ({"branch": "develop"}, None):
spec = {
"vms": [{"name": "vm", "distro": "nixos"}],
"install": install,
}
with self.subTest(install=bool(install)):
with mock.patch.object(
TODO, "_qemu_import_module", return_value=DQ
):
texte = " ".join(todo._qemu_image_lines(spec))
for interdit in ("ERPLibre", "échoue", "fails"):
self.assertNotIn(interdit, texte)
def test_no_orphan_translation_is_left_behind(self):
"""Une entrée que plus personne n'appelle vieillit sans qu'on le
sache, et réapparaît le jour où quelqu'un la recopie."""
from pathlib import Path
racine = Path(__file__).resolve().parent.parent
i18n = (racine / "script/todo/todo_i18n.py").read_text(
encoding="utf-8"
)
self.assertNotIn("does not install on NixOS", i18n)
def test_a_deployment_without_nixos_says_nothing(self):
todo = TODO.__new__(TODO)