Do not mark downgrades as updates (#68893)
This commit is contained in:
parent
fb41734342
commit
6d168d2672
2 changed files with 20 additions and 3 deletions
|
@ -6,6 +6,7 @@ from datetime import timedelta
|
||||||
import logging
|
import logging
|
||||||
from typing import Any, Final, final
|
from typing import Any, Final, final
|
||||||
|
|
||||||
|
from awesomeversion import AwesomeVersion, AwesomeVersionCompareException
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
|
|
||||||
from homeassistant.backports.enum import StrEnum
|
from homeassistant.backports.enum import StrEnum
|
||||||
|
@ -295,9 +296,15 @@ class UpdateEntity(RestoreEntity):
|
||||||
) is None:
|
) is None:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
if latest_version not in (current_version, self.__skipped_version):
|
if latest_version == self.__skipped_version:
|
||||||
return STATE_ON
|
return STATE_OFF
|
||||||
return STATE_OFF
|
|
||||||
|
try:
|
||||||
|
newer = AwesomeVersion(latest_version) > current_version
|
||||||
|
return STATE_ON if newer else STATE_OFF
|
||||||
|
except AwesomeVersionCompareException:
|
||||||
|
# Can't compare versions, fallback to exact match
|
||||||
|
return STATE_OFF if latest_version == current_version else STATE_ON
|
||||||
|
|
||||||
@final
|
@final
|
||||||
@property
|
@property
|
||||||
|
|
|
@ -89,6 +89,16 @@ async def test_update(hass: HomeAssistant) -> None:
|
||||||
update._attr_latest_version = None
|
update._attr_latest_version = None
|
||||||
assert update.state is None
|
assert update.state is None
|
||||||
|
|
||||||
|
# Test no update if new version is not an update
|
||||||
|
update._attr_current_version = "1.0.0"
|
||||||
|
update._attr_latest_version = "0.9.0"
|
||||||
|
assert update.state is STATE_OFF
|
||||||
|
|
||||||
|
# Test update if new version is not considered a valid version
|
||||||
|
update._attr_current_version = "1.0.0"
|
||||||
|
update._attr_latest_version = "awesome_update"
|
||||||
|
assert update.state is STATE_ON
|
||||||
|
|
||||||
# Test entity category becomes config when its possible to install
|
# Test entity category becomes config when its possible to install
|
||||||
update._attr_supported_features = UpdateEntityFeature.INSTALL
|
update._attr_supported_features = UpdateEntityFeature.INSTALL
|
||||||
assert update.entity_category is EntityCategory.CONFIG
|
assert update.entity_category is EntityCategory.CONFIG
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue