Commit Graph
475 Commits
Author SHA1 Message Date
J. Nick Koston b718ca079f Name the unreadable report's file, tighten the number and region checks
The corrupt-report arm names its file with wording distinct from the
backstop, so tests can tell them apart (and now do, plus the non-UTF-8
half). _is_number rejects bool and non-finite floats, and the RAM
region selects by key presence, so a falsy-but-present DRAM value is
malformed rather than absent -- the size report is the one input
nothing upstream validates, so these stay hardened. The not-app_size
comment carries the zero case it also swallows.
2026-08-23 16:17:05 -05:00
J. Nick Koston 5447239258 Name the missing-table state for the backstop
Still the backstop's business, but a clean message beats a bare
FileNotFoundError for the one impossible state most likely to appear
in a report.
2026-08-23 16:11:32 -05:00
J. Nick Koston b8f736ac86 Let the backstop own the impossible table states
A build cannot succeed with a missing or unreadable partition table
(gen_esp32part consumes it first), so the is_file check and the OSError
arm also defended dead paths; the reachable contract keeps its named
handling (None from the caller, no qualifying row) and everything else
is the backstop's business.
2026-08-23 16:09:22 -05:00
J. Nick Koston f4651dcc57 Remove the partition-table arms gen_esp32part makes unreachable
A malformed table cannot reach a successful build: IDF's own parser
rejects blank/junk/zero size cells and validates the layout before rc
is 0, so the blank-cell raise, the row-context re-raise, the broken-
table warning arm, and the size-0 backstop defended dead paths. Only
the read race (OSError) stays named; anything else is the backstop's
business. Their tests go with them; a decimal size cell keeps the
plain-int parse covered.
2026-08-23 16:05:31 -05:00
J. Nick Koston 7595baebd2 Warn only on corrupt reports, carry the traceback, name the file
Structural corruption at any level (containers or non-numeric leaves)
warns as malformed; a well-shaped report simply lacking DRAM/DIRAM is a
variant difference and stays at debug, so healthy builds on other
targets cannot train users to ignore the warning channel. The backstop
warning carries exc_info so a field report is actionable without -v,
and the image_size warning names its file. Tests pin each message
distinctly.
2026-08-23 15:49:41 -05:00
J. Nick Koston aa200c1051 Name malformed shapes distinctly, widen the broken-table net, pin the quiet path
A structurally corrupt memory_types warns as malformed instead of
posing as a variant without the region; csv.Error joins the
broken-table warning arm; the blanket's visible record carries the
exception type. The malformed-cell test parametrizes over blank and
non-blank junk, the missing-report test pins its warning, and the
quiet path asserts its debug record exists with no warning records.
2026-08-23 15:31:34 -05:00
J. Nick Koston 0e9a08c7c1 Let the Flash-line helper own both sides of its bar
_flash_line validates image_size and returns the formatted line, so
nothing after a print can raise and the line buffer, the image_size
double-lookup, and the blanket's one known trigger all dissolve; the
blanket keeps its charter (a test now drives it with a patched raise).
_find_app_partition_size returns None for legitimate absence and
reserves raises for a present-but-broken table, dissolving the
_MalformedPartitionRow subclass and the except-ordering it relied on;
run_compile passes the table path unconditionally so the module owns
the whole policy. The is_file pre-check folds into the OSError arm,
the dead or-{} is gone, and the tests share _dram_size_data and
_write_partitions instead of repeating payload literals.
2026-08-23 15:24:13 -05:00
J. Nick Koston 2f86ab222a Cover the suffix parse, quiet-skip arms, and corrupt size report 2026-08-23 15:17:32 -05:00
J. Nick Koston c43003d0c1 Warn on the build's own broken artifacts, buffer the report, pin the blank-cell path
Skips caused by the build's own outputs (missing/unparsable/misshapen
size report, absent RAM region, broken-but-present partition table via
a typed _MalformedPartitionRow) log at warning; only the legitimately
quiet cases (no table given, no qualifying partition) stay at debug.
The report is buffered so a late failure prints nothing instead of half
a report. The blank-cell test now asserts the logged row and path, so
reverting the ValueError fails it (mutation-checked), and the nested-
shape tests assert the named guard fired rather than the blanket.
2026-08-23 15:12:59 -05:00
J. Nick Koston 2982d75fd2 Warn when the summary is skipped, name the file and row, pin the blanket test on output
The blanket backstop and the zero-partition skip log at warning naming
their input, so a regression or broken table is visible where the
missing line is observed, with the traceback at debug. The blank-cell
ValueError carries the partition and csv path, and the blanket test
asserts no half-formed bar prints instead of a vacuous Traceback check.
2026-08-23 14:04:42 -05:00
J. Nick Koston 6a5a45dd73 Trim comments and docstrings 2026-08-22 23:57:02 -05:00
J. Nick Koston dca2e6dafd Blanket the summary against nested shapes, reject blank size cells by name, correct the CI-effect comment 2026-08-22 23:41:19 -05:00
J. Nick Koston b27a0227a1 Exercise the OSError arm deterministically; annotate the fixtures 2026-08-22 23:33:22 -05:00
J. Nick Koston 6193a39358 [esp-idf] Never let the size summary fail a linked build 2026-08-22 23:26:34 -05:00
J. Nick Koston 74bdf275d2 [core] Dump the main.cpp config comment with sorted keys (#18653) 2026-08-22 20:58:28 -05:00
J. Nick Koston c062d0c717 [ota] Log prepare, upload, and total OTA timing in espota2 (#18582) 2026-08-22 20:57:13 -05:00
David van 't Wout 2ab09e1a77 [core] Add add_cmake_arg (#18498) 2026-08-20 12:30:33 -05:00
J. Nick Koston a3ea77c2f1 [core] Keep templated !include filenames as strings so Windows path normalization cannot corrupt them (#18549) 2026-08-20 11:32:15 -05:00
J. Nick Koston a8e721abeb [esp32] Apply IDF component exclusions to native toolchain builds (#18531) 2026-08-20 10:03:49 -04:00
J. Nick Koston 132f494195 [nrf52] Rebuild the Python env when its interpreter symlink dangles (#18540) 2026-08-20 07:59:57 -04:00
470226ca03 [image] Restore defaults:/files: support for platform entries (#18032)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2026-08-19 12:30:12 -05:00
J. Nick Koston 8b637b339b [vscode] Report the origin of an unexpected exception during validation (#18494) 2026-08-18 19:37:10 -05:00
J. Nick Koston 4f866c563b [platformio] Give the ccache wrapper a cmd.exe safe path (#18495) 2026-08-18 19:36:57 -05:00
Jesse Hills 463e3833da [light] Replace rgb_order/is_rgbw/is_wrgb with channel_colors (#18474) 2026-08-18 13:19:48 +12:00
J. Nick Koston de3e657d8b [platformio] Skip ccache when the binary on PATH fails to run (#18407) 2026-08-16 08:42:47 -07:00
J. Nick Koston b178f74e5d [core] Save the validated config cache on the first upload or logs run (#18367) 2026-08-14 18:45:23 -07:00
Karl Beecken 617e2ec1e0 [core] fix PYTHONPATH leak (#18360) 2026-08-14 17:23:34 +12:00
J. Nick Koston 1afac0312d [core] Restore cv.parse_esphome_version as a deprecated helper (#18366) 2026-08-14 17:22:22 +12:00
J. Nick Koston dd51624fbb [core] Partially revert "Hash entity keys from the raw name to fix collisions" (#18361) 2026-08-13 20:06:48 -05:00
J. Nick Koston 945c2458b3 [core] Load component aliases from a generated registry (#18335) 2026-08-13 13:31:19 -05:00
J. Nick Koston 7420d23867 [ota] Retry uploads that fail from network errors (#18332) 2026-08-13 13:31:06 -05:00
J. Nick Koston 8e624b4117 [core] Retry framework downloads on transient network errors (#18330) 2026-08-13 12:14:50 +12:00
J. Nick Koston 787a909aa4 [core] Don't block logs startup on MQTT IP discovery when addresses are known (#18313) 2026-08-13 12:11:32 +12:00
J. Nick Koston 22153be4cd [core] Add esphome logs over web_server HTTP SSE (#17110) 2026-08-12 22:00:07 +12:00
J. Nick Koston 58a42fe5c2 [core] Batch remote file downloads during config validation (#18069) 2026-08-12 18:44:35 +12:00
J. Nick Koston 622942482c [rp2] Size the lwIP segment pool and heap for concurrent senders (#18257) 2026-08-12 17:30:17 +12:00
J. Nick Koston 37eae9b466 [api] Gate the bluetooth connection messages on their own define (#18281) 2026-08-11 21:31:13 -05:00
Jesse Hills 3349046c5d [rp2] Record the RP2350 die on generated board entries (#18305) 2026-08-12 01:56:05 +00:00
Jonathan SwobodaandJ. Nick Koston be5e28ea9e [core] Warn when running a different source tree than the one you are in (#18288)
Co-authored-by: J. Nick Koston <nick@koston.org>
2026-08-11 21:06:57 -04:00
J. Nick Koston 94fbfa05de [core] Show the out-of-flash tip instead of crashing the build (#18280) 2026-08-11 14:35:06 -05:00
J. Nick Koston 3ae651af7b [core] Stop dropping complete lines behind an unfinished one (#18279) 2026-08-11 12:38:55 -05:00
J. Nick Koston 9938a2487d [core] Show the last line when output stops without a newline (#18265) 2026-08-11 10:55:42 -05:00
J. Nick Koston f3a5a9fbd5 [core] Retry transient git network failures with backoff (#18242) 2026-08-11 08:41:55 -05:00
J. Nick Koston eefd2a00c7 [espidf] Flush the runner's output so dashboard builds stream (#18264) 2026-08-11 08:11:42 -05:00
J. Nick Koston e8852c5950 [core] Flush stdout in safe_print so logs stream live (#18261) 2026-08-11 08:11:23 -05:00
Jesse Hills f697cf2011 [api] Add DeviceCapabilities message for optional-feature flags (#17984) 2026-08-11 14:52:19 +12:00
J. Nick Koston bae7f19323 [core] Extend '/' in names deprecation window to 2027.7.0 (#18236) 2026-08-10 11:32:02 -05:00
J. Nick Koston f3d1fc0d64 [bluetooth_proxy] Migrate esp32 onto the neutral GATT backend (#18198) 2026-08-10 10:47:56 -05:00
J. Nick Koston 02fa18b74f [core] Skip colorama init for terminal and dashboard runs (#18224) 2026-08-10 09:44:01 -05:00
J. Nick Koston 25cb440005 [core] Use Happy Eyeballs for remote file downloads (#18050) 2026-08-10 17:29:00 +12:00