test_relance_apres_maj.py
Rama main · réplica de lectura del repositorio original.
"""La relance qui suit une mise à jour garde chacun de ses verbes.
Vu en vrai le 2026-10-17, à la première mise à jour par l'installateur commun
(0.23.0 vers 0.23.1) : l'assistant de nico579-commons 0.5.0 perd les arguments
vides. « serve … --trusted-host "" watch --loop 10 download … » revenait
« … --trusted-host watch --loop 10 download … » : --trusted-host avalait la
relève, et serve mourait sur un --loop qu'il ne connaît pas. Page et relève
restaient éteintes jusqu'à une relance à la main."""
import unittest
from unittest import mock
import maj
import runtime
STANDARD = ["serve", "--port", "8765", "--timezone", "Europe/Paris", "--trusted-host", "",
"watch", "--loop", "10",
"download", "--from", "all", "--usb-loop", "10", "--cloud-loop", "1"]
GROUPES = [["serve", "--port", "8765", "--timezone", "Europe/Paris", "--trusted-host", ""],
["watch", "--loop", "10"],
["download", "--from", "all", "--usb-loop", "10", "--cloud-loop", "1"]]
def abimee(ligne: list) -> list:
"""Ce que l'assistant de nico579-commons 0.5.0 fait d'une ligne de relance."""
return [mot for mot in ligne if mot]
class LignesAbimeesParLAncienAssistant(unittest.TestCase):
def test_la_ligne_intacte_ne_change_pas(self):
self.assertEqual(runtime.decouper_verbes(STANDARD), GROUPES)
def test_sans_supplement_la_releve_n_est_plus_avalee(self):
# Démarrage de Windows : « start » seul.
self.assertEqual(runtime.decouper_verbes(abimee(STANDARD)), GROUPES)
def test_avec_le_supplement_du_raccourci(self):
# Raccourci du bureau : « start --open-browser », greffé après le bloc fixe.
ligne = STANDARD[:runtime.LONGUEUR_BLOC_SERVE] + ["--open-browser"] \
+ STANDARD[runtime.LONGUEUR_BLOC_SERVE:]
self.assertEqual(runtime.decouper_verbes(abimee(ligne)),
[GROUPES[0] + ["--open-browser"], GROUPES[1], GROUPES[2]])
def test_un_hote_nomme_comme_un_verbe_reste_une_valeur(self):
# Audit I-11 : standard() fait suivre l'hôte du verbe watch.
self.assertEqual(
runtime.decouper_verbes(["serve", "--trusted-host", "watch", "watch", "--loop", "10"]),
[["serve", "--trusted-host", "watch"], ["watch", "--loop", "10"]])
self.assertEqual(runtime.decouper_verbes(["serve", "--trusted-host", "watch"]),
[["serve", "--trusted-host", "watch"]])
class ListeDeRelance(unittest.TestCase):
def relance(self, compositions):
with mock.patch.object(maj, "_compositions_en_cours", return_value=compositions):
return maj._verbes_a_relancer()
def test_aucun_argument_vide_n_est_confie_a_l_assistant(self):
lignes = self.relance([GROUPES])
self.assertEqual(len(lignes), 1)
self.assertNotIn("", lignes[0])
# serve retrouve de lui-même son hôte vide, valeur par défaut.
self.assertEqual(runtime.decouper_verbes(abimee(lignes[0])),
[GROUPES[0][:5], GROUPES[1], GROUPES[2]])
def test_un_hote_renseigne_est_garde(self):
groupes = [GROUPES[0][:6] + ["nas.local"], GROUPES[1]]
self.assertEqual(self.relance([groupes]),
[[mot for groupe in groupes for mot in groupe]])
def test_rien_ne_tournait(self):
self.assertEqual(self.relance([[]]), [["start"]])
if __name__ == "__main__":
unittest.main()