diff --git a/script/todo/proxmox_menu.py b/script/todo/proxmox_menu.py index d111760..c52299e 100644 --- a/script/todo/proxmox_menu.py +++ b/script/todo/proxmox_menu.py @@ -1980,10 +1980,13 @@ class ProxmoxMenuMixin: " /etc/apt/sources.list.d/*.list 2>/dev/null; true" ) code, _o = self._pve_ssh(cible, geste, timeout=60) + # Au JOURNAL, pas seulement à la console : c'est en rouvrant le + # journal qu'on cherche quel miroir a été posé, le jour où la suite + # échoue sur des dépendances introuvables. if code: - print(f" ⚠ {t('apt mirror not pinned')} ({code})") + self._pve_note(vm, f" ⚠ {t('apt mirror not pinned')} ({code})") return False - print(f" ✓ {t('apt mirror pinned')} : {miroir}") + self._pve_note(vm, f" ✓ {t('apt mirror pinned')} : {miroir}") return True def _pve_set_gpu_groups(self, cible, utilisateur, mod=None): diff --git a/test/test_proxmox_form.py b/test/test_proxmox_form.py index 315e944..afdeab1 100644 --- a/test/test_proxmox_form.py +++ b/test/test_proxmox_form.py @@ -1216,6 +1216,33 @@ class TestLeMiroirAptDesVmProxmox(unittest.TestCase): self.assertIn("archive|security", vu["cmd"]) self.assertNotIn("second.invalid", vu["cmd"]) + def test_the_mirror_decision_reaches_the_log(self): + """La console défile ; le journal est ce qu'on rouvre le lendemain. + + C'est en le rouvrant qu'on cherche quel miroir a été posé, le jour où + l'installation échoue plus bas sur des dépendances introuvables — un + message qui accuse le dépôt, jamais le miroir. Dite à l'écran seule, + la décision manquait à l'endroit exact où on la cherche. + """ + for code, marque, porte in ( + (0, "✓", "miroir.invalid"), + (7, "⚠", "(7)"), + ): + with self.subTest(code=code): + vm = {"distro": "ubuntu", "arch": "amd64"} + self._poser(vm, code=code) + notes = vm.get("notes") or [] + self.assertEqual(len(notes), 1, notes) + self.assertTrue(notes[0].startswith(marque), notes[0]) + self.assertIn(porte, notes[0]) + + def test_the_pinned_mirror_is_named_in_the_log(self): + """« posé » sans dire lequel n'apprend rien : c'est le NOM qu'on + vient chercher.""" + vm = {"distro": "ubuntu", "arch": "amd64"} + self._poser(vm) + self.assertIn("miroir.invalid/ubuntu", (vm["notes"] or [""])[0]) + def test_les_deux_formats_de_sources_sont_couverts(self): """Le « .sources » deb822 des images récentes, et le « sources.list » des anciennes : n'en réécrire qu'un laisse l'autre