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 functools import partial
import logging
import re
from types import MappingProxyType
from typing import Any, TypedDict, cast
@ -259,7 +260,12 @@ class FritzBoxTools(
self._unique_id = info.serial_number
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,

View File

@ -29,7 +29,7 @@ MOCK_HOST = "fake_host"
MOCK_IPS = {"fritz.box": "192.168.178.1", "printer": "192.168.178.2"}
MOCK_MODELNAME = "FRITZ!Box 7530 AX"
MOCK_FIRMWARE = "256.07.29"
MOCK_FIRMWARE_AVAILABLE = "256.07.50"
MOCK_FIRMWARE_AVAILABLE = "7.50"
MOCK_FIRMWARE_RELEASE_URL = (
"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()
],
"connection_type": "WANPPPConnection",
"current_firmware": "256.07.29",
"current_firmware": "7.29",
"discovered_services": [
"DeviceInfo1",
"Hosts1",

View File

@ -9,7 +9,6 @@ from homeassistant.core import HomeAssistant
from homeassistant.setup import async_setup_component
from .const import (
MOCK_FIRMWARE,
MOCK_FIRMWARE_AVAILABLE,
MOCK_FIRMWARE_RELEASE_URL,
MOCK_USER_DATA,
@ -60,7 +59,7 @@ async def test_update_available(
update = hass.states.get("update.mock_title_fritz_os")
assert update is not None
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("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")
assert update is not None
assert update.state == "off"
assert update.attributes.get("installed_version") == MOCK_FIRMWARE
assert update.attributes.get("latest_version") == MOCK_FIRMWARE
assert update.attributes.get("installed_version") == "7.29"
assert update.attributes.get("latest_version") == "7.29"
async def test_available_update_can_be_installed(