Version: remove deprecated YAML import (#69010)

This commit is contained in:
Paulus Schoutsen 2022-03-31 11:25:01 -07:00 committed by GitHub
parent bb322a18bb
commit 56998f219b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 6 additions and 155 deletions

View File

@ -1,69 +1,19 @@
"""Sensor that can display the current Home Assistant versions.""" """Sensor that can display the current Home Assistant versions."""
from __future__ import annotations from __future__ import annotations
from typing import Any, Final from typing import Any
import voluptuous as vol from homeassistant.components.sensor import SensorEntity, SensorEntityDescription
from voluptuous.schema_builder import Schema from homeassistant.config_entries import ConfigEntry
from homeassistant.components.sensor import (
PLATFORM_SCHEMA as SENSOR_PLATFORM_SCHEMA,
SensorEntity,
SensorEntityDescription,
)
from homeassistant.config_entries import SOURCE_IMPORT, ConfigEntry
from homeassistant.const import CONF_NAME from homeassistant.const import CONF_NAME
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType, StateType from homeassistant.helpers.typing import StateType
from .const import ( from .const import CONF_SOURCE, DEFAULT_NAME, DOMAIN
ATTR_SOURCE,
CONF_BETA,
CONF_IMAGE,
CONF_SOURCE,
DEFAULT_BETA,
DEFAULT_IMAGE,
DEFAULT_NAME,
DEFAULT_SOURCE,
DOMAIN,
LOGGER,
VALID_IMAGES,
VALID_SOURCES,
)
from .coordinator import VersionDataUpdateCoordinator from .coordinator import VersionDataUpdateCoordinator
from .entity import VersionEntity from .entity import VersionEntity
PLATFORM_SCHEMA: Final[Schema] = SENSOR_PLATFORM_SCHEMA.extend(
{
vol.Optional(CONF_BETA, default=DEFAULT_BETA): cv.boolean,
vol.Optional(CONF_IMAGE, default=DEFAULT_IMAGE): vol.In(VALID_IMAGES),
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
vol.Optional(CONF_SOURCE, default=DEFAULT_SOURCE): vol.In(VALID_SOURCES),
}
)
async def async_setup_platform(
hass: HomeAssistant,
config: ConfigType,
async_add_entities: AddEntitiesCallback,
discovery_info: DiscoveryInfoType | None = None,
) -> None:
"""Set up the legacy version sensor platform."""
LOGGER.warning(
"Configuration of the Version platform in YAML is deprecated and will be "
"removed in Home Assistant 2022.4; Your existing configuration "
"has been imported into the UI automatically and can be safely removed "
"from your configuration.yaml file"
)
hass.async_create_task(
hass.config_entries.flow.async_init(
DOMAIN, context={ATTR_SOURCE: SOURCE_IMPORT}, data=config
)
)
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, hass: HomeAssistant,

View File

@ -1,54 +1,12 @@
"""The test for the version sensor platform.""" """The test for the version sensor platform."""
from __future__ import annotations from __future__ import annotations
from typing import Any
from unittest.mock import patch
from pyhaversion import HaVersionChannel, HaVersionSource
from pyhaversion.exceptions import HaVersionException from pyhaversion.exceptions import HaVersionException
import pytest import pytest
from homeassistant.components.version.const import (
CONF_BETA,
CONF_CHANNEL,
CONF_IMAGE,
CONF_VERSION_SOURCE,
DEFAULT_NAME_LATEST,
DOMAIN,
VERSION_SOURCE_DOCKER_HUB,
VERSION_SOURCE_VERSIONS,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_NAME, CONF_SOURCE
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.setup import async_setup_component
from .common import ( from .common import MOCK_VERSION, mock_get_version_update, setup_version_integration
MOCK_VERSION,
MOCK_VERSION_DATA,
TEST_DEFAULT_IMPORT_CONFIG,
mock_get_version_update,
setup_version_integration,
)
async def async_setup_sensor_wrapper(
hass: HomeAssistant, config: dict[str, Any]
) -> ConfigEntry:
"""Set up the Version sensor platform."""
with patch(
"pyhaversion.HaVersion.get_version",
return_value=(MOCK_VERSION, MOCK_VERSION_DATA),
):
assert await async_setup_component(
hass, "sensor", {"sensor": {"platform": DOMAIN, **config}}
)
await hass.async_block_till_done()
config_entries = hass.config_entries.async_entries(DOMAIN)
config_entry = config_entries[-1]
assert config_entry.source == "import"
return config_entry
async def test_version_sensor(hass: HomeAssistant): async def test_version_sensor(hass: HomeAssistant):
@ -73,60 +31,3 @@ async def test_update(hass: HomeAssistant, caplog: pytest.LogCaptureFixture):
await mock_get_version_update(hass, side_effect=HaVersionException) await mock_get_version_update(hass, side_effect=HaVersionException)
assert hass.states.get("sensor.local_installation").state == "unavailable" assert hass.states.get("sensor.local_installation").state == "unavailable"
assert "Error fetching version data" in caplog.text assert "Error fetching version data" in caplog.text
@pytest.mark.parametrize(
"yaml,converted",
(
(
{},
TEST_DEFAULT_IMPORT_CONFIG,
),
(
{CONF_NAME: "test"},
{**TEST_DEFAULT_IMPORT_CONFIG, CONF_NAME: "test"},
),
(
{CONF_SOURCE: "hassio", CONF_IMAGE: "odroid-n2"},
{
**TEST_DEFAULT_IMPORT_CONFIG,
CONF_NAME: DEFAULT_NAME_LATEST,
CONF_SOURCE: HaVersionSource.SUPERVISOR,
CONF_VERSION_SOURCE: VERSION_SOURCE_VERSIONS,
CONF_IMAGE: "odroid-n2",
},
),
(
{CONF_SOURCE: "docker"},
{
**TEST_DEFAULT_IMPORT_CONFIG,
CONF_NAME: DEFAULT_NAME_LATEST,
CONF_SOURCE: HaVersionSource.CONTAINER,
CONF_VERSION_SOURCE: VERSION_SOURCE_DOCKER_HUB,
},
),
(
{CONF_BETA: True},
{
**TEST_DEFAULT_IMPORT_CONFIG,
CONF_CHANNEL: HaVersionChannel.BETA,
},
),
(
{CONF_SOURCE: "container", CONF_IMAGE: "odroid-n2"},
{
**TEST_DEFAULT_IMPORT_CONFIG,
CONF_NAME: DEFAULT_NAME_LATEST,
CONF_SOURCE: HaVersionSource.CONTAINER,
CONF_VERSION_SOURCE: VERSION_SOURCE_DOCKER_HUB,
CONF_IMAGE: "odroid-n2-homeassistant",
},
),
),
)
async def test_config_import(
hass: HomeAssistant, yaml: dict[str, Any], converted: dict[str, Any]
) -> None:
"""Test importing YAML configuration."""
config_entry = await async_setup_sensor_wrapper(hass, yaml)
assert config_entry.data == converted