better faulty encoding detection

This commit is contained in:
sebastien committed 2026-09-29 08:03:47 +02:00
1 parent ec8e79bb1a
commit 2a4c5f4f7c
12 files changed
+299 -25

No files matched your search

+43 -3
View File
@@ -1,8 +1,16 @@
import subprocess
import os
import tkinter as tk
import unittest
from unittest.mock import patch
from copienator_gui.syncthing import SERVICE, control_service
from copienator_gui.syncthing import (
SERVICE,
SYSTEMCTL,
SyncthingPanel,
control_service,
service_status,
)
class SyncthingTests(unittest.TestCase):
@@ -16,7 +24,7 @@ class SyncthingTests(unittest.TestCase):
with patch("copienator_gui.syncthing.service_status", side_effect=["inactive", "active"]), \
patch("copienator_gui.syncthing.subprocess.run", return_value=subprocess.CompletedProcess([], 0)) as run:
self.assertEqual(control_service("ensure"), "active")
self.assertEqual(run.call_args.args[0], ["systemctl", "--no-ask-password", "start", SERVICE])
self.assertEqual(run.call_args.args[0], [*SYSTEMCTL, "start", SERVICE])
def test_failed_start_reports_error(self):
with patch("copienator_gui.syncthing.service_status", return_value="inactive"), \
@@ -28,4 +36,36 @@ class SyncthingTests(unittest.TestCase):
with patch("copienator_gui.syncthing.service_status", return_value="inactive"), \
patch("copienator_gui.syncthing.subprocess.run", return_value=subprocess.CompletedProcess([], 0)) as run:
self.assertEqual(control_service("stop"), "inactive")
self.assertEqual(run.call_args.args[0], ["systemctl", "--no-ask-password", "stop", SERVICE])
self.assertEqual(run.call_args.args[0], [*SYSTEMCTL, "stop", SERVICE])
def test_status_uses_the_non_privileged_user_service(self):
with patch(
"copienator_gui.syncthing.subprocess.run",
return_value=subprocess.CompletedProcess([], 0, stdout="active\n"),
) as run:
self.assertEqual(service_status(), "active")
self.assertEqual(
run.call_args.args[0],
[*SYSTEMCTL, "show", SERVICE, "--property=ActiveState", "--value"],
)
@unittest.skipUnless(os.environ.get("DISPLAY"), "Tk requires a display")
class SyncthingPanelTests(unittest.TestCase):
def test_failed_automatic_start_warns_and_continues_export(self):
root = tk.Tk()
self.addCleanup(root.destroy)
with patch("copienator_gui.syncthing.threading.Thread.start"):
panel = SyncthingPanel(root)
panel.pack()
continued = []
panel.pending_export = lambda: continued.append(True)
panel.busy = True
panel.events.put(("ensure", None, "Access denied"))
with patch("copienator_gui.syncthing.messagebox.showwarning") as warning:
panel.poll()
warning.assert_called_once()
self.assertIn("L’export va continuer", warning.call_args.args[1])
self.assertEqual(continued, [True])