mirror of
https://github.com/esphome/esphome.git
synced 2026-09-30 08:20:21 +00:00
Warn on missing decode tools on both toolchains, fail the CI key resolver loudly
The PlatformIO branch of _decode_pc now routes through the same rate-limited warning as the native one; raw undecoded crash addresses with no stated reason were undiagnosable at default log level. The CI cache key uses the assignment form so errexit catches a resolver failure instead of echo swallowing it into a degenerate key, with a non-empty check, and the cache comments stop claiming a ccache store the seed job never populates (it saves before any compile runs).
This commit is contained in:
@@ -139,6 +139,26 @@ def test_decode_pc_native_missing_tools_warns_once(
|
||||
esp8266._DECODE_WARNED_AT.clear()
|
||||
|
||||
|
||||
def test_decode_pc_platformio_missing_tools_warns_once(
|
||||
caplog: pytest.LogCaptureFixture,
|
||||
) -> None:
|
||||
"""The PlatformIO branch reports a missing addr2line/ELF at the same
|
||||
warning level as the native one; raw undecoded addresses with no
|
||||
stated reason are undiagnosable at default log level."""
|
||||
from types import SimpleNamespace
|
||||
|
||||
from esphome.components import esp8266
|
||||
|
||||
esp8266._DECODE_WARNED_AT.clear()
|
||||
CORE.toolchain = Toolchain.PLATFORMIO
|
||||
idedata = SimpleNamespace(addr2line_path=None, firmware_elf_path=None)
|
||||
with patch("esphome.platformio.toolchain.get_idedata", return_value=idedata):
|
||||
esp8266._decode_pc({}, "40201234")
|
||||
esp8266._decode_pc({}, "40201238")
|
||||
assert caplog.text.count("Cannot decode crash addresses") == 1
|
||||
esp8266._DECODE_WARNED_AT.clear()
|
||||
|
||||
|
||||
def test_resolve_toolchain_rejects_unsupported() -> None:
|
||||
"""ESP8266 rejects a CLI toolchain it cannot serve, like every platform."""
|
||||
from esphome.components.esp8266 import _resolve_toolchain
|
||||
|
||||
Reference in New Issue
Block a user