mirror of
https://github.com/esphome/esphome.git
synced 2025-09-16 18:22:22 +01:00
90 lines
2.2 KiB
Python
90 lines
2.2 KiB
Python
"""
|
|
ESPHome Unittests
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
Configuration file for unit tests.
|
|
|
|
If adding unit tests ensure that they are fast. Slower integration tests should
|
|
not be part of a unit test suite.
|
|
|
|
"""
|
|
|
|
from collections.abc import Generator
|
|
from pathlib import Path
|
|
import sys
|
|
from unittest.mock import Mock, patch
|
|
|
|
import pytest
|
|
|
|
from esphome.core import CORE
|
|
|
|
here = Path(__file__).parent
|
|
|
|
# Configure location of package root
|
|
package_root = here.parent.parent
|
|
sys.path.insert(0, package_root.as_posix())
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def reset_core():
|
|
"""Reset CORE after each test."""
|
|
yield
|
|
CORE.reset()
|
|
|
|
|
|
@pytest.fixture
|
|
def fixture_path() -> Path:
|
|
"""
|
|
Location of all fixture files.
|
|
"""
|
|
return here / "fixtures"
|
|
|
|
|
|
@pytest.fixture
|
|
def setup_core(tmp_path: Path) -> Path:
|
|
"""Set up CORE with test paths."""
|
|
CORE.config_path = str(tmp_path / "test.yaml")
|
|
return tmp_path
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_write_file_if_changed() -> Generator[Mock, None, None]:
|
|
"""Mock write_file_if_changed for storage_json."""
|
|
with patch("esphome.storage_json.write_file_if_changed") as mock:
|
|
yield mock
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_copy_file_if_changed() -> Generator[Mock, None, None]:
|
|
"""Mock copy_file_if_changed for core.config."""
|
|
with patch("esphome.core.config.copy_file_if_changed") as mock:
|
|
yield mock
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_run_platformio_cli() -> Generator[Mock, None, None]:
|
|
"""Mock run_platformio_cli for platformio_api."""
|
|
with patch("esphome.platformio_api.run_platformio_cli") as mock:
|
|
yield mock
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_run_platformio_cli_run() -> Generator[Mock, None, None]:
|
|
"""Mock run_platformio_cli_run for platformio_api."""
|
|
with patch("esphome.platformio_api.run_platformio_cli_run") as mock:
|
|
yield mock
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_decode_pc() -> Generator[Mock, None, None]:
|
|
"""Mock _decode_pc for platformio_api."""
|
|
with patch("esphome.platformio_api._decode_pc") as mock:
|
|
yield mock
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_run_external_command() -> Generator[Mock, None, None]:
|
|
"""Mock run_external_command for platformio_api."""
|
|
with patch("esphome.platformio_api.run_external_command") as mock:
|
|
yield mock
|