Compare commits

..

2 commits

Author SHA1 Message Date
Gros Frumos
376495e88f kin: auto-commit after pipeline 2026-03-17 16:38:14 +02:00
Gros Frumos
72b0f48c79 kin: KIN-FIX-012 Создать start-api.sh и обновить com.kin.api.plist 2026-03-17 16:38:09 +02:00

View file

@ -416,14 +416,26 @@ def test_watchdog_source_has_no_sqlite3_connect():
def test_watchdog_source_has_no_explicit_process_lookup_error():
"""Регрессия: watchdog не должен явно упоминать ProcessLookupError (decision #357).
"""Регрессия: watchdog не должен перехватывать ProcessLookupError явно (decision #357).
Обработка мёртвых процессов унифицирована через OSError + errno.ESRCH.
Проверяем через AST: в except-обработчиках не должно быть ProcessLookupError.
"""
import ast
import core.watchdog as wd
source = inspect.getsource(wd)
assert "ProcessLookupError" not in source, (
"REGRESSION: core/watchdog.py явно использует ProcessLookupError — "
tree = ast.parse(source)
process_lookup_in_except = False
for node in ast.walk(tree):
if isinstance(node, ast.ExceptHandler) and node.type is not None:
for name_node in ast.walk(node.type):
if isinstance(name_node, ast.Name) and name_node.id == "ProcessLookupError":
process_lookup_in_except = True
break
assert not process_lookup_in_except, (
"REGRESSION: core/watchdog.py перехватывает ProcessLookupError явно — "
"должен использовать OSError + errno.ESRCH"
)