mirror of
https://github.com/esphome/esphome.git
synced 2026-09-19 02:58:38 +00:00
Merge remote-tracking branch 'upstream/dev' into move_device_class_progmem
This commit is contained in:
@@ -12,7 +12,9 @@
|
||||
using namespace esphome;
|
||||
|
||||
void setup() {
|
||||
App.pre_setup("livingroom", "LivingRoom", false);
|
||||
static char name[] = "livingroom";
|
||||
static char friendly_name[] = "LivingRoom";
|
||||
App.pre_setup(name, sizeof(name) - 1, friendly_name, sizeof(friendly_name) - 1);
|
||||
auto *log = new logger::Logger(115200); // NOLINT
|
||||
log->pre_setup();
|
||||
log->set_uart_selection(logger::UART_SELECTION_UART0);
|
||||
|
||||
@@ -23,6 +23,7 @@ from esphome.const import (
|
||||
from esphome.core import CORE, config
|
||||
from esphome.core.config import (
|
||||
Area,
|
||||
make_app_name_cpp,
|
||||
preload_core_config,
|
||||
valid_include,
|
||||
valid_project_name,
|
||||
@@ -969,3 +970,79 @@ def test_config_hash_different_for_different_configs() -> None:
|
||||
hash2 = CORE.config_hash
|
||||
|
||||
assert hash1 != hash2
|
||||
|
||||
|
||||
def test_make_app_name_cpp_no_mac_simple() -> None:
|
||||
"""Test simple name without MAC suffix returns string literal."""
|
||||
cpp_expr, global_decl, byte_len = make_app_name_cpp(
|
||||
"my-device", "buf", "-", add_mac_suffix=False
|
||||
)
|
||||
assert cpp_expr == '"my-device"'
|
||||
assert global_decl is None
|
||||
assert byte_len == 9
|
||||
|
||||
|
||||
def test_make_app_name_cpp_no_mac_empty() -> None:
|
||||
"""Test empty name without MAC suffix."""
|
||||
cpp_expr, global_decl, byte_len = make_app_name_cpp(
|
||||
"", "buf", "-", add_mac_suffix=False
|
||||
)
|
||||
assert cpp_expr == '""'
|
||||
assert global_decl is None
|
||||
assert byte_len == 0
|
||||
|
||||
|
||||
def test_make_app_name_cpp_mac_suffix() -> None:
|
||||
"""Test name with MAC suffix emits static buffer."""
|
||||
cpp_expr, global_decl, byte_len = make_app_name_cpp(
|
||||
"my-device", "esphome_app_name_buf", "-", add_mac_suffix=True
|
||||
)
|
||||
assert cpp_expr == "esphome_app_name_buf"
|
||||
assert global_decl is not None
|
||||
assert "static char esphome_app_name_buf[]" in global_decl
|
||||
assert "my-device-XXXXXX" in global_decl
|
||||
assert byte_len == len("my-device-XXXXXX")
|
||||
|
||||
|
||||
def test_make_app_name_cpp_mac_suffix_empty() -> None:
|
||||
"""Test empty name with MAC suffix emits empty static buffer."""
|
||||
cpp_expr, global_decl, byte_len = make_app_name_cpp(
|
||||
"", "esphome_app_name_buf", "-", add_mac_suffix=True
|
||||
)
|
||||
assert cpp_expr == "esphome_app_name_buf"
|
||||
assert global_decl is not None
|
||||
assert "static char esphome_app_name_buf[]" in global_decl
|
||||
assert byte_len == 0
|
||||
|
||||
|
||||
def test_make_app_name_cpp_mac_suffix_space_sep() -> None:
|
||||
"""Test friendly name uses space separator for MAC suffix."""
|
||||
cpp_expr, global_decl, byte_len = make_app_name_cpp(
|
||||
"My Device", "esphome_app_friendly_name_buf", " ", add_mac_suffix=True
|
||||
)
|
||||
assert cpp_expr == "esphome_app_friendly_name_buf"
|
||||
assert global_decl is not None
|
||||
assert "My Device XXXXXX" in global_decl
|
||||
assert byte_len == len("My Device XXXXXX")
|
||||
|
||||
|
||||
def test_make_app_name_cpp_non_ascii_utf8_length() -> None:
|
||||
"""Test non-ASCII characters use UTF-8 byte length."""
|
||||
_, global_decl, byte_len = make_app_name_cpp(
|
||||
"café", "buf", "-", add_mac_suffix=False
|
||||
)
|
||||
assert byte_len == len("café".encode()) # 5 bytes, not 4 chars
|
||||
assert global_decl is None
|
||||
|
||||
|
||||
def test_make_app_name_cpp_non_ascii_mac_suffix_utf8_length() -> None:
|
||||
"""Test non-ASCII with MAC suffix uses UTF-8 byte length."""
|
||||
_, _, byte_len = make_app_name_cpp("café", "buf", "-", add_mac_suffix=True)
|
||||
assert byte_len == len("café-XXXXXX".encode())
|
||||
|
||||
|
||||
def test_make_app_name_cpp_special_chars_escaped() -> None:
|
||||
"""Test special characters are properly escaped in C++ string."""
|
||||
cpp_expr, _, _ = make_app_name_cpp('my "device"', "buf", "-", add_mac_suffix=False)
|
||||
# cpp_string_escape uses octal escapes for quotes
|
||||
assert '"' not in cpp_expr[1:-1] # no unescaped quotes inside the outer quotes
|
||||
|
||||
Reference in New Issue
Block a user