From ff0d4347d64d3483f0b6591f7660a8db86c7b1c2 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Thu, 8 Oct 2026 14:05:18 -1000 Subject: [PATCH] [api] Fix C++ unit test link failure when api is only a dependency (#20418) --- tests/components/api/__init__.py | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/tests/components/api/__init__.py b/tests/components/api/__init__.py index 4a66287c33..bd84c8d9bb 100644 --- a/tests/components/api/__init__.py +++ b/tests/components/api/__init__.py @@ -1,6 +1,12 @@ +from pathlib import Path + import esphome.codegen as cg +from esphome.const import CONF_ESPHOME, CONF_INCLUDES +from esphome.core import CORE from tests.testing_helpers import ComponentManifestOverride +TESTS_DIR = Path(__file__).parent + def override_manifest(manifest: ComponentManifestOverride) -> None: # USE_API compiles every api source, so emit what they need. No socket @@ -10,16 +16,18 @@ def override_manifest(manifest: ComponentManifestOverride) -> None: cg.add_define("USE_API_PLAINTEXT") # Linked wizard inputs only exist next to homeassistant entities, which need this cg.add_define("USE_API_HOMEASSISTANT_STATES") - # test_wizard.cpp supplies the tables that codegen emits for a real build - for define in ( - "USE_API_WIZARD", - "USE_API_WIZARD_INPUTS", - "USE_API_WIZARD_LINKED_INPUTS", - "USE_API_WIZARD_STANDALONE_INPUTS", - ): - cg.add_define(define) - cg.add_define("API_WIZARD_DATA_SIZE", 200) - cg.add_define("API_WIZARD_INPUT_COUNT", 2) + # test_wizard.cpp supplies the tables that codegen emits for a real build; + # it is only compiled when api's own tests are, not when api is a dependency + if any(Path(p) == TESTS_DIR for p in CORE.config[CONF_ESPHOME][CONF_INCLUDES]): + for define in ( + "USE_API_WIZARD", + "USE_API_WIZARD_INPUTS", + "USE_API_WIZARD_LINKED_INPUTS", + "USE_API_WIZARD_STANDALONE_INPUTS", + ): + cg.add_define(define) + cg.add_define("API_WIZARD_DATA_SIZE", 200) + cg.add_define("API_WIZARD_INPUT_COUNT", 2) cg.add_define("API_MAX_SEND_QUEUE", 8) cg.add_define("MAX_API_CONNECTIONS", 1) cg.add_define("USE_SOCKET_IMPL_BSD_SOCKETS")