diff --git a/tests/application/test_startup.py b/tests/application/test_startup.py index 24478160..22e9430b 100644 --- a/tests/application/test_startup.py +++ b/tests/application/test_startup.py @@ -270,3 +270,31 @@ async def test_auto_form_necessary(device, make_application, mocker): assert nvram[OsalNvIds.ZDO_DIRECT_CB] == t.Bool(True).serialize() await app.shutdown() + + +@pytest.mark.parametrize("device", [FormedZStack1CC2531]) +async def test_zstack_build_id_empty(device, make_application, mocker): + app, znp_server = make_application(server_cls=device) + + znp_server.reply_once_to( + c.SYS.Version.Req(), + responses=c.SYS.Version.Rsp( + TransportRev=2, + ProductId=0, + MajorRel=2, + MinorRel=6, + MaintRel=3, + # These are missing + CodeRevision=None, + BootloaderBuildType=None, + BootloaderRevision=None, + ), + override=True, + ) + + await app.startup(auto_form=True) + + assert app._zstack_build_id is not None + assert app._zstack_build_id == 0x00000000 + + await app.shutdown() diff --git a/zigpy_znp/zigbee/application.py b/zigpy_znp/zigbee/application.py index 07000a53..2f19c954 100644 --- a/zigpy_znp/zigbee/application.py +++ b/zigpy_znp/zigbee/application.py @@ -812,6 +812,10 @@ def _zstack_build_id(self) -> t.uint32_t: Z-Stack build ID, more recently the build date. """ + # Old versions of Z-Stack do not include `CodeRevision` in the version response + if self._version_rsp.CodeRevision is None: + return 0x00000000 + return self._version_rsp.CodeRevision @property