OS latest version set from upgrade path (#3632)
* OS latest version set from upgrade path * fix tests * Update test_updater.py * Revert / fetch_update is global unwrapped Co-authored-by: Pascal Vizeli <pvizeli@syshack.ch>
This commit is contained in:
parent
eabd976d33
commit
cbe0adf53f
|
@ -243,6 +243,15 @@ class Updater(FileConfiguration, CoreSysAttributes):
|
|||
self._data[ATTR_OTA] = data["ota"]
|
||||
if version := data["hassos"].get(self.sys_os.board):
|
||||
events.append("os")
|
||||
upgrade_map = data.get("hassos-upgrade", {})
|
||||
if last_in_major := upgrade_map.get(str(self.sys_os.version.major)):
|
||||
if self.sys_os.version != AwesomeVersion(last_in_major):
|
||||
version = last_in_major
|
||||
elif last_in_next_major := upgrade_map.get(
|
||||
str(int(self.sys_os.version.major) + 1)
|
||||
):
|
||||
version = last_in_next_major
|
||||
|
||||
self._data[ATTR_HASSOS] = AwesomeVersion(version)
|
||||
else:
|
||||
_LOGGER.warning(
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
"""Test updater files."""
|
||||
from unittest.mock import patch
|
||||
|
||||
from awesomeversion import AwesomeVersion
|
||||
import pytest
|
||||
|
||||
from supervisor.coresys import CoreSys
|
||||
|
@ -48,3 +50,23 @@ async def test_fetch_versions(coresys: CoreSys) -> None:
|
|||
assert coresys.updater.image_multicast == data["images"]["multicast"].format(
|
||||
arch=coresys.arch.supervisor
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"version, expected",
|
||||
[
|
||||
("3.1", "3.13"),
|
||||
("4.5", "4.20"),
|
||||
("5.0", "5.13"),
|
||||
("6.4", "6.6"),
|
||||
("4.20", "5.13"),
|
||||
],
|
||||
)
|
||||
async def test_os_update_path(coresys: CoreSys, version: str, expected: str):
|
||||
"""Test OS upgrade path across major versions."""
|
||||
coresys.os._board = "rpi4" # pylint: disable=protected-access
|
||||
coresys.os._version = AwesomeVersion(version) # pylint: disable=protected-access
|
||||
with patch.object(type(coresys.security), "verify_own_content"):
|
||||
await coresys.updater.fetch_data()
|
||||
|
||||
assert coresys.updater.version_hassos == AwesomeVersion(expected)
|
||||
|
|
Loading…
Reference in New Issue