diff --git a/script/todo/kdbx_manager.py b/script/todo/kdbx_manager.py index 8032165..edcb6e4 100644 --- a/script/todo/kdbx_manager.py +++ b/script/todo/kdbx_manager.py @@ -82,7 +82,11 @@ class KdbxManager: # pas une panne : la bibliothèque lève `CredentialsError` et, sans # ce rattrapage, la trace remontait jusqu'à tuer le CLI. On nomme # aussi le coffre — l'invite ne disait pas DE QUOI elle parlait. - print(f"{t('kdbx_vault_is')} {kdbx_file_path}") + # `flush` : l'invite de getpass part vers le terminal, ce `print` + # vers la sortie standard — qui est un TUBE quand le menu nous lance. + # Sans vidage, on lisait « Mot de passe du coffre : Coffre KeePass : + # /chemin » — la question avant ce dont elle parle. + print(f"{t('kdbx_vault_is')} {kdbx_file_path}", flush=True) for _ in range(attempts): password = getpass.getpass(prompt=t("kdbx_ask_password")) if not password: diff --git a/test/test_kdbx_manager.py b/test/test_kdbx_manager.py index 716a04f..24f9ba5 100644 --- a/test/test_kdbx_manager.py +++ b/test/test_kdbx_manager.py @@ -42,7 +42,11 @@ class KdbxCase(unittest.TestCase): vues = [] with patch("getpass.getpass", side_effect=list(reponses)), patch( "builtins.print", - side_effect=lambda *a: vues.append(" ".join(map(str, a))), + # `**k` : un bouchon de `print` doit accepter la signature de + # `print`. Sans lui, ajouter un `flush=True` dans le code + # testé faisait échouer six tests sur une différence qui n'a + # rien à voir avec ce qu'ils vérifient. + side_effect=lambda *a, **k: vues.append(" ".join(map(str, a))), ): resultat = self._manager().get_kdbx() return resultat, "\n".join(vues) @@ -106,7 +110,11 @@ class TestRecoveryAndSuccess(KdbxCase): vues = [] with patch( "builtins.print", - side_effect=lambda *a: vues.append(" ".join(map(str, a))), + # `**k` : un bouchon de `print` doit accepter la signature de + # `print`. Sans lui, ajouter un `flush=True` dans le code + # testé faisait échouer six tests sur une différence qui n'a + # rien à voir avec ce qu'ils vérifient. + side_effect=lambda *a, **k: vues.append(" ".join(map(str, a))), ): resultat = self._manager("mauvais").get_kdbx() self.assertIsNone(resultat)