mirror of
https://github.com/esphome/esphome.git
synced 2026-09-17 18:18:43 +00:00
Additional measurements showed GCC's -Os inliner re-inlines most IIFE chunks back into setup() by choice, and the structural scoping alone captures nearly all of the peak-stack benefit on esp32 without the flash cost of forcing all chunks to stay as real functions. Apollo (esp32-s3, -Os) with vs without noinline: peak setup stack 176 B (noinline) vs 304 B (scope-only) flash delta +388 B (noinline) vs -504 B (scope-only) chunks kept 86 vs 20 Issue #15796 is an LVGL-setup class of bug that has only surfaced on esp32 after years in the field; the extra guarantee that noinline provides is not worth the flash cost in practice. Also rename the helper from _wrap_in_noinline_iifes to _wrap_in_iifes to match.
Tests for ESPHome
This directory contains some tests for ESPHome.
At the moment, all the tests only work by simply executing
esphome over some YAML files that are made to test
whether the yaml gets converted to the proper C++ code.
Of course this is all just very high-level and things like unit tests would be much better. So if you have time and know how to set up a unit testing framework for python, please do give it a try.
When adding entries in test_.yaml files we usually need only
one file updated, unless conflicting code is generated for
different configurations, e.g. wifi and ethernet cannot
be tested on the same device.
Current test_.yaml file contents.
| Test name | Platform | Network | BLE |
|---|---|---|---|
| test1.yaml | ESP32 | wifi | None |
| test2.yaml | ESP32 | ethernet | esp32_ble_tracker |
| test3.yaml | ESP8266 | wifi | N/A |
| test4.yaml | ESP32 | ethernet | None |
| test5.yaml | ESP32 | wifi | ble_server |
| test6.yaml | RP2040 | wifi | N/A |
| test7.yaml | ESP32-C3 | wifi | N/A |
| test8.yaml | ESP32-S3 | wifi | None |
| test10.yaml | ESP32 | wifi | None |