Display current version in common format in AVM Fritz!Tools (#96424)

This commit is contained in:
Michael 2023-07-21 21:58:18 +02:00 committed by GitHub
parent 7814ce06f4
commit facd6ef765
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 12 additions and 7 deletions

View File

@ -6,6 +6,7 @@ from dataclasses import dataclass, field
from datetime import datetime, timedelta from datetime import datetime, timedelta
from functools import partial from functools import partial
import logging import logging
import re
from types import MappingProxyType from types import MappingProxyType
from typing import Any, TypedDict, cast from typing import Any, TypedDict, cast
@ -259,7 +260,12 @@ class FritzBoxTools(
self._unique_id = info.serial_number self._unique_id = info.serial_number
self._model = info.model_name self._model = info.model_name
self._current_firmware = info.software_version if (
version_normalized := re.search(r"^\d+\.[0]?(.*)", info.software_version)
) is not None:
self._current_firmware = version_normalized.group(1)
else:
self._current_firmware = info.software_version
( (
self._update_available, self._update_available,

View File

@ -29,7 +29,7 @@ MOCK_HOST = "fake_host"
MOCK_IPS = {"fritz.box": "192.168.178.1", "printer": "192.168.178.2"} MOCK_IPS = {"fritz.box": "192.168.178.1", "printer": "192.168.178.2"}
MOCK_MODELNAME = "FRITZ!Box 7530 AX" MOCK_MODELNAME = "FRITZ!Box 7530 AX"
MOCK_FIRMWARE = "256.07.29" MOCK_FIRMWARE = "256.07.29"
MOCK_FIRMWARE_AVAILABLE = "256.07.50" MOCK_FIRMWARE_AVAILABLE = "7.50"
MOCK_FIRMWARE_RELEASE_URL = ( MOCK_FIRMWARE_RELEASE_URL = (
"http://download.avm.de/fritzbox/fritzbox-7530-ax/deutschland/fritz.os/info_de.txt" "http://download.avm.de/fritzbox/fritzbox-7530-ax/deutschland/fritz.os/info_de.txt"
) )

View File

@ -50,7 +50,7 @@ async def test_entry_diagnostics(
for _, device in avm_wrapper.devices.items() for _, device in avm_wrapper.devices.items()
], ],
"connection_type": "WANPPPConnection", "connection_type": "WANPPPConnection",
"current_firmware": "256.07.29", "current_firmware": "7.29",
"discovered_services": [ "discovered_services": [
"DeviceInfo1", "DeviceInfo1",
"Hosts1", "Hosts1",

View File

@ -9,7 +9,6 @@ from homeassistant.core import HomeAssistant
from homeassistant.setup import async_setup_component from homeassistant.setup import async_setup_component
from .const import ( from .const import (
MOCK_FIRMWARE,
MOCK_FIRMWARE_AVAILABLE, MOCK_FIRMWARE_AVAILABLE,
MOCK_FIRMWARE_RELEASE_URL, MOCK_FIRMWARE_RELEASE_URL,
MOCK_USER_DATA, MOCK_USER_DATA,
@ -60,7 +59,7 @@ async def test_update_available(
update = hass.states.get("update.mock_title_fritz_os") update = hass.states.get("update.mock_title_fritz_os")
assert update is not None assert update is not None
assert update.state == "on" assert update.state == "on"
assert update.attributes.get("installed_version") == MOCK_FIRMWARE assert update.attributes.get("installed_version") == "7.29"
assert update.attributes.get("latest_version") == MOCK_FIRMWARE_AVAILABLE assert update.attributes.get("latest_version") == MOCK_FIRMWARE_AVAILABLE
assert update.attributes.get("release_url") == MOCK_FIRMWARE_RELEASE_URL assert update.attributes.get("release_url") == MOCK_FIRMWARE_RELEASE_URL
@ -83,8 +82,8 @@ async def test_no_update_available(
update = hass.states.get("update.mock_title_fritz_os") update = hass.states.get("update.mock_title_fritz_os")
assert update is not None assert update is not None
assert update.state == "off" assert update.state == "off"
assert update.attributes.get("installed_version") == MOCK_FIRMWARE assert update.attributes.get("installed_version") == "7.29"
assert update.attributes.get("latest_version") == MOCK_FIRMWARE assert update.attributes.get("latest_version") == "7.29"
async def test_available_update_can_be_installed( async def test_available_update_can_be_installed(