Import AITURK IDE 1.0.0-beta.1 from Hermes 63279301; preserve MIT license
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
"""Regression test for #90835 (logging-illusion half).
|
||||
|
||||
The Telegram adapter's "Connecting to Telegram (attempt N/8)…" line is
|
||||
emitted at WARNING and therefore reaches the gateway's default stderr
|
||||
handler (WARNING-only at default verbosity). The matching
|
||||
"Connected to Telegram (… mode)" success line was INFO and went to the log
|
||||
file only, so a healthy startup looked permanently stalled at "attempt 1/8"
|
||||
on the terminal.
|
||||
|
||||
This test pins the invariant that both sides of the connect transition are
|
||||
emitted at the same terminal-visible level, by inspecting the log calls in
|
||||
the adapter source (the connect path needs a live bot token to execute, so
|
||||
the levels are asserted at the AST level rather than by running it).
|
||||
"""
|
||||
|
||||
import ast
|
||||
from pathlib import Path
|
||||
|
||||
ADAPTER = (
|
||||
Path(__file__).resolve().parents[2]
|
||||
/ "plugins"
|
||||
/ "platforms"
|
||||
/ "telegram"
|
||||
/ "adapter.py"
|
||||
)
|
||||
|
||||
|
||||
def _logger_call_level(tree: ast.AST, needle: str) -> str:
|
||||
"""Return the logger method name for the log call whose format string
|
||||
contains *needle*."""
|
||||
for node in ast.walk(tree):
|
||||
if (
|
||||
isinstance(node, ast.Call)
|
||||
and isinstance(node.func, ast.Attribute)
|
||||
and isinstance(node.func.value, ast.Name)
|
||||
and node.func.value.id == "logger"
|
||||
and node.args
|
||||
):
|
||||
first = node.args[0]
|
||||
if (
|
||||
isinstance(first, ast.Constant)
|
||||
and isinstance(first.value, str)
|
||||
and needle in first.value
|
||||
):
|
||||
return node.func.attr
|
||||
raise AssertionError(f"no logger call containing {needle!r} found")
|
||||
|
||||
|
||||
def test_connect_success_line_matches_attempt_line_visibility():
|
||||
tree = ast.parse(ADAPTER.read_text(encoding="utf-8"))
|
||||
attempt_level = _logger_call_level(tree, "Connecting to Telegram (attempt")
|
||||
success_level = _logger_call_level(tree, "Connected to Telegram")
|
||||
|
||||
# The attempt line is terminal-visible (WARNING at default verbosity).
|
||||
assert attempt_level == "warning"
|
||||
# The success line must reach the same console sink — otherwise a healthy
|
||||
# connect is indistinguishable from a hang at "attempt 1/8" (#90835).
|
||||
assert success_level == attempt_level, (
|
||||
"Telegram connect success line logs at a different level "
|
||||
f"({success_level!r}) than the attempt line ({attempt_level!r}); "
|
||||
"a healthy startup will look hung on the terminal (#90835)"
|
||||
)
|
||||
Reference in New Issue
Block a user