[udp] Keep constant write payloads in shared flash tables (#20268)

This commit is contained in:
J. Nick Koston
2026-10-08 07:31:09 -10:00
committed by GitHub
parent 052f5a4cc6
commit 4b2f8122e3
4 changed files with 49 additions and 39 deletions
@@ -0,0 +1,22 @@
esphome:
name: test
esp8266:
board: d1_mini
wifi:
ssid: test
password: password1
udp:
addresses:
- 10.0.0.1
button:
- platform: template
name: send
on_press:
- udp.write: [0xAA, 0x55, 0x01, 0x02]
- udp.write: [0xAA, 0x55, 0x01, 0x02]
- udp.write: ""
- udp.write: !lambda return {0x10, 0x20};
@@ -0,0 +1,17 @@
"""Tests for the udp.write action codegen."""
from collections.abc import Callable
from pathlib import Path
def test_write_payloads_share_a_progmem_table(
generate_main: Callable[[str | Path], str],
component_config_path: Callable[[str], Path],
) -> None:
"""Identical constant payloads share one flash table; an empty one needs none."""
main_cpp = generate_main(component_config_path("udp_write.yaml"))
assert main_cpp.count("udp_data[] PROGMEM = {0xAA, 0x55, 0x01, 0x02};") == 1
assert main_cpp.count("->set_data_static(udp_data, 4);") == 2
assert "->set_data_static(nullptr, 0);" in main_cpp
assert "->set_data_template(" in main_cpp