mirror of
https://github.com/esphome/esphome.git
synced 2026-06-24 12:33:10 +00:00
[esp32] Decouple esp-idf toolchain version check from PIO, honor framework source: override (#16516)
This commit is contained in:
58
tests/unit_tests/test_espidf_toolchain.py
Normal file
58
tests/unit_tests/test_espidf_toolchain.py
Normal file
@@ -0,0 +1,58 @@
|
||||
"""Tests for esphome.espidf.toolchain helpers."""
|
||||
|
||||
# pylint: disable=protected-access
|
||||
|
||||
from unittest.mock import patch
|
||||
|
||||
from esphome.const import CONF_FRAMEWORK, CONF_SOURCE
|
||||
from esphome.core import CORE
|
||||
from esphome.espidf import toolchain
|
||||
|
||||
|
||||
def test_get_framework_source_override_no_config():
|
||||
"""When CORE.config hasn't been set, no override is returned."""
|
||||
CORE.config = None
|
||||
assert toolchain._get_framework_source_override() is None
|
||||
|
||||
|
||||
def test_get_framework_source_override_no_esp32_section():
|
||||
"""A config without an esp32 section yields no override."""
|
||||
CORE.config = {}
|
||||
assert toolchain._get_framework_source_override() is None
|
||||
|
||||
|
||||
def test_get_framework_source_override_no_framework_source():
|
||||
"""An esp32 section without framework.source yields no override."""
|
||||
CORE.config = {"esp32": {CONF_FRAMEWORK: {}}}
|
||||
assert toolchain._get_framework_source_override() is None
|
||||
|
||||
|
||||
def test_get_framework_source_override_returns_value():
|
||||
"""A user-supplied framework source is returned verbatim."""
|
||||
url = "https://example.com/esp-idf-v{VERSION}.tar.xz"
|
||||
CORE.config = {"esp32": {CONF_FRAMEWORK: {CONF_SOURCE: url}}}
|
||||
assert toolchain._get_framework_source_override() == url
|
||||
|
||||
|
||||
def test_get_esphome_esp_idf_paths_forwards_source_override():
|
||||
"""_get_esphome_esp_idf_paths threads the override into check_esp_idf_install."""
|
||||
url = "https://my-mirror/esp-idf-v{VERSION}.tar.xz"
|
||||
CORE.config = {"esp32": {CONF_FRAMEWORK: {CONF_SOURCE: url}}}
|
||||
# Hit a fresh cache key so check_esp_idf_install is actually called.
|
||||
toolchain._cache().paths.clear()
|
||||
with patch.object(
|
||||
toolchain, "check_esp_idf_install", return_value=("/fw", "/penv")
|
||||
) as mock_install:
|
||||
toolchain._get_esphome_esp_idf_paths("5.5.4")
|
||||
mock_install.assert_called_once_with("5.5.4", source_url=url)
|
||||
|
||||
|
||||
def test_get_esphome_esp_idf_paths_no_override():
|
||||
"""When no source override is configured, source_url=None is passed."""
|
||||
CORE.config = {}
|
||||
toolchain._cache().paths.clear()
|
||||
with patch.object(
|
||||
toolchain, "check_esp_idf_install", return_value=("/fw", "/penv")
|
||||
) as mock_install:
|
||||
toolchain._get_esphome_esp_idf_paths("5.5.4")
|
||||
mock_install.assert_called_once_with("5.5.4", source_url=None)
|
||||
Reference in New Issue
Block a user