From af3e9c47c419406dbd8457b037da11ea750448c9 Mon Sep 17 00:00:00 2001 From: Andrey Epifancev Date: Thu, 15 Oct 2026 00:36:03 +0400 Subject: [PATCH] =?UTF-8?q?fix(agent):=20=D0=BE=D0=B3=D1=80=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D1=87=D0=B8=D1=82=D1=8C=20=D0=B4=D0=BB=D0=B8=D0=BD=D1=83?= =?UTF-8?q?=20=D0=B7=D0=BD=D0=B0=D1=87=D0=B5=D0=BD=D0=B8=D0=B9=20=D0=B2=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=B4=D1=81=D0=BA=D0=B0=D0=B7=D0=BA=D0=B5=20=D0=BE?= =?UTF-8?q?=20=D0=BD=D0=B5=D0=BF=D0=BE=D0=BB=D0=BD=D0=BE=D0=B9=20=D0=BF?= =?UTF-8?q?=D1=83=D0=B1=D0=BB=D0=B8=D0=BA=D0=B0=D1=86=D0=B8=D0=B8=20(M-4)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- src/agent.py | 2 +- tests/test_update.py | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/agent.py b/src/agent.py index a021a0c..00aef51 100644 --- a/src/agent.py +++ b/src/agent.py @@ -1014,7 +1014,7 @@ class Updater: return False version, sha = release.get("version"), release.get("sha256") if type(version) is not int or not isinstance(sha, str) or not self.SHA_RE.fullmatch(sha): - self._hint("format", "хаб прислал неполную публикацию: version=%r, sha256=%r" % (version, sha)) # design 10 + self._hint("format", "хаб прислал неполную публикацию: version=%.80r, sha256=%.80r" % (version, sha)) # design 10 return False if version <= AGENT_VERSION: return False diff --git a/tests/test_update.py b/tests/test_update.py index 86ceca4..0c07813 100644 --- a/tests/test_update.py +++ b/tests/test_update.py @@ -97,6 +97,14 @@ class UpdaterCheckTest(unittest.TestCase): self.assertEqual(self.hub.release_requests, 0) self.assertIsNone(self.u.state()) + def test_incomplete_release_hint_is_bounded(self): + """M-4: подсказка не печатает произвольно длинный мусор от хаба целиком.""" + logs = self.capture_logs() + self.assertFalse(self.u.check({"version": NEXT, "sha256": "x" * 10000})) + hints = [l for l in logs if l.startswith("хаб прислал неполную публикацию")] + self.assertEqual(len(hints), 1) + self.assertLess(len(hints[0]), 300) + def test_hints_have_separate_timers(self): logs = self.capture_logs() self.u.launcher_version = None