zapretgui/tests/test_rule_passports.py
loop-uh bced8ecb26
All checks were successful
Zapret source guards / validate (push) Successful in 9s
BlockCheck: паспорт у каждого вида блокировки — что вывод утверждает, на чём держится, когда врёт и чем это отсечено
По образцу «паспортов сигналов» ByeByeVPN: diagnostics/rule_passports.py
записывает для каждого вида из block_kind.KINDS утверждение, факты проверки,
известные ложные тревоги и контроль, который их отсекает. Тест не даёт завести
вид блокировки без паспорта: меняется правило вывода — меняется и паспорт.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 00:13:18 +03:00

23 lines
875 B
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""У каждого вида блокировки есть паспорт: что утверждает, на чём держится, когда врёт и чем это отсечено."""
from __future__ import annotations
import unittest
from diagnostics.block_kind import KINDS
from diagnostics.rule_passports import PASSPORTS
class PassportTests(unittest.TestCase):
def test_every_kind_has_a_passport(self) -> None:
self.assertEqual(set(PASSPORTS), set(KINDS))
def test_every_passport_names_false_alarms_and_their_control(self) -> None:
for kind, passport in PASSPORTS.items():
with self.subTest(kind=kind):
for field in ("claim", "evidence", "false_alarms", "control"):
self.assertGreater(len(getattr(passport, field).strip()), 20, field)
if __name__ == "__main__":
unittest.main()