From e988905c2f498634a6eabb11718d3dd9a6dbf454 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Mon, 20 Oct 2025 08:31:59 -1000 Subject: [PATCH] [json] Add basic compile tests (#11409) Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- tests/components/json/common.yaml | 33 +++++++++++++++++++++ tests/components/json/test.esp32-idf.yaml | 1 + tests/components/json/test.esp8266-ard.yaml | 1 + 3 files changed, 35 insertions(+) create mode 100644 tests/components/json/common.yaml create mode 100644 tests/components/json/test.esp32-idf.yaml create mode 100644 tests/components/json/test.esp8266-ard.yaml diff --git a/tests/components/json/common.yaml b/tests/components/json/common.yaml new file mode 100644 index 0000000000..f4074e1172 --- /dev/null +++ b/tests/components/json/common.yaml @@ -0,0 +1,33 @@ +json: + +interval: + - interval: 60s + then: + - lambda: |- + // Test build_json + std::string json_str = esphome::json::build_json([](JsonObject root) { + root["sensor"] = "temperature"; + root["value"] = 23.5; + root["unit"] = "°C"; + }); + ESP_LOGD("test", "Built JSON: %s", json_str.c_str()); + + // Test parse_json + bool parse_ok = esphome::json::parse_json(json_str, [](JsonObject root) { + if (root.containsKey("sensor") && root.containsKey("value")) { + const char* sensor = root["sensor"]; + float value = root["value"]; + ESP_LOGD("test", "Parsed: sensor=%s, value=%.1f", sensor, value); + } else { + ESP_LOGD("test", "Parsed JSON missing required keys"); + } + }); + ESP_LOGD("test", "Parse result (JSON syntax only): %s", parse_ok ? "success" : "failed"); + + // Test JsonBuilder class + esphome::json::JsonBuilder builder; + JsonObject obj = builder.root(); + obj["test"] = "direct_builder"; + obj["count"] = 42; + std::string result = builder.serialize(); + ESP_LOGD("test", "JsonBuilder result: %s", result.c_str()); diff --git a/tests/components/json/test.esp32-idf.yaml b/tests/components/json/test.esp32-idf.yaml new file mode 100644 index 0000000000..dade44d145 --- /dev/null +++ b/tests/components/json/test.esp32-idf.yaml @@ -0,0 +1 @@ +<<: !include common.yaml diff --git a/tests/components/json/test.esp8266-ard.yaml b/tests/components/json/test.esp8266-ard.yaml new file mode 100644 index 0000000000..dade44d145 --- /dev/null +++ b/tests/components/json/test.esp8266-ard.yaml @@ -0,0 +1 @@ +<<: !include common.yaml