>>> zigbee2mqtt: Building community/zigbee2mqtt 1.42.0-r0 (using abuild 3.15.0_rc3-r1) started Wed, 30 Apr 2025 06:06:31 +0000 >>> zigbee2mqtt: Validating /home/buildozer/aports/community/zigbee2mqtt/APKBUILD... >>> zigbee2mqtt: Analyzing dependencies... >>> zigbee2mqtt: Installing for build: build-base nodejs linux-headers npm python3 (1/21) Installing ca-certificates (20241121-r2) (2/21) Installing ada-libs (2.9.2-r3) (3/21) Installing icu-data-en (76.1-r0) Executing icu-data-en-76.1-r0.post-install * * If you need ICU with non-English locales and legacy charset support, install * package icu-data-full. * (4/21) Installing icu-libs (76.1-r0) (5/21) Installing simdjson (3.12.0-r0) (6/21) Installing simdutf (6.4.1-r0) (7/21) Installing sqlite-libs (3.49.1-r1) (8/21) Installing nodejs (22.13.1-r4) (9/21) Installing linux-headers (6.14.2-r0) (10/21) Installing npm (10.9.1-r0) (11/21) Installing libbz2 (1.0.8-r6) (12/21) Installing libffi (3.4.8-r0) (13/21) Installing gdbm (1.24-r0) (14/21) Installing xz-libs (5.8.1-r0) (15/21) Installing mpdecimal (4.0.0-r0) (16/21) Installing libpanelw (6.5_p20250412-r0) (17/21) Installing python3 (3.12.10-r0) (18/21) Installing python3-pycache-pyc0 (3.12.10-r0) (19/21) Installing pyc (3.12.10-r0) (20/21) Installing python3-pyc (3.12.10-r0) (21/21) Installing .makedepends-zigbee2mqtt (20250430.060641) Executing busybox-1.37.0-r16.trigger Executing ca-certificates-20241121-r2.trigger OK: 503 MiB in 124 packages >>> zigbee2mqtt: Cleaning up srcdir >>> zigbee2mqtt: Cleaning up pkgdir >>> zigbee2mqtt: Cleaning up tmpdir >>> zigbee2mqtt: Fetching https://distfiles.alpinelinux.org/distfiles/v3.22/zigbee2mqtt-1.42.0.tar.gz Connecting to distfiles.alpinelinux.org (172.105.82.32:443) wget: server returned error: HTTP/1.1 404 Not Found >>> zigbee2mqtt: Fetching https://github.com/Koenkk/zigbee2mqtt/archive/1.42.0/zigbee2mqtt-1.42.0.tar.gz Connecting to github.com (140.82.121.4:443) Connecting to codeload.github.com (140.82.121.10:443) saving to '/var/cache/distfiles/v3.22/zigbee2mqtt-1.42.0.tar.gz.part' zigbee2mqtt-1.42.0.t 100% |********************************| 548k 0:00:00 ETA '/var/cache/distfiles/v3.22/zigbee2mqtt-1.42.0.tar.gz.part' saved >>> zigbee2mqtt: Fetching https://distfiles.alpinelinux.org/distfiles/v3.22/zigbee2mqtt-1.42.0.tar.gz >>> zigbee2mqtt: Checking sha512sums... zigbee2mqtt-1.42.0.tar.gz: OK dont-build-on-start.patch: OK ungit.patch: OK pan_id-secret.patch: OK configuration.yaml: OK zigbee2mqtt.initd: OK zigbee2mqtt.confd: OK >>> zigbee2mqtt: Unpacking /var/cache/distfiles/v3.22/zigbee2mqtt-1.42.0.tar.gz... >>> zigbee2mqtt: dont-build-on-start.patch patching file index.js patching file package.json >>> zigbee2mqtt: ungit.patch patching file lib/util/utils.ts patching file test/utils.test.js Hunk #1 succeeded at 17 (offset 6 lines). >>> zigbee2mqtt: pan_id-secret.patch patching file lib/util/settings.ts Hunk #1 succeeded at 258 (offset 44 lines). Hunk #2 succeeded at 415 (offset 62 lines). patching file test/settings.test.js npm warn deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. npm warn deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported > @serialport/bindings-cpp@12.0.1 install > node-gyp-build > sd-notify@2.8.0 install > node-gyp rebuild gyp info it worked if it ends with ok gyp info using node-gyp@10.2.0 gyp info using node@22.13.1 | linux | x64 gyp info find Python using Python version 3.12.10 found at "/usr/bin/python3" gyp info spawn /usr/bin/python3 gyp info spawn args [ gyp info spawn args '/usr/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py', gyp info spawn args 'binding.gyp', gyp info spawn args '-f', gyp info spawn args 'make', gyp info spawn args '-I', gyp info spawn args '/home/buildozer/aports/community/zigbee2mqtt/src/zigbee2mqtt-1.42.0/node_modules/sd-notify/build/config.gypi', gyp info spawn args '-I', gyp info spawn args '/usr/lib/node_modules/npm/node_modules/node-gyp/addon.gypi', gyp info spawn args '-I', gyp info spawn args '/home/buildozer/.cache/node-gyp/22.13.1/include/node/common.gypi', gyp info spawn args '-Dlibrary=shared_library', gyp info spawn args '-Dvisibility=default', gyp info spawn args '-Dnode_root_dir=/home/buildozer/.cache/node-gyp/22.13.1', gyp info spawn args '-Dnode_gyp_dir=/usr/lib/node_modules/npm/node_modules/node-gyp', gyp info spawn args '-Dnode_lib_file=/home/buildozer/.cache/node-gyp/22.13.1/<(target_arch)/node.lib', gyp info spawn args '-Dmodule_root_dir=/home/buildozer/aports/community/zigbee2mqtt/src/zigbee2mqtt-1.42.0/node_modules/sd-notify', gyp info spawn args '-Dnode_engine=v8', gyp info spawn args '--depth=.', gyp info spawn args '--no-parallel', gyp info spawn args '--generator-output', gyp info spawn args 'build', gyp info spawn args '-Goutput_dir=.' gyp info spawn args ] gyp info spawn make gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build', '--jobs', 48 ] make: Entering directory '/home/buildozer/aports/community/zigbee2mqtt/src/zigbee2mqtt-1.42.0/node_modules/sd-notify/build' CXX(target) Release/obj.target/notify/notify.o ../notify.cc:5:10: fatal error: systemd/sd-daemon.h: No such file or directory 5 | #include | ^~~~~~~~~~~~~~~~~~~~~ compilation terminated. make: *** [notify.target.mk:105: Release/obj.target/notify/notify.o] Error 1 make: Leaving directory '/home/buildozer/aports/community/zigbee2mqtt/src/zigbee2mqtt-1.42.0/node_modules/sd-notify/build' gyp ERR! build error gyp ERR! stack Error: `make` failed with exit code: 2 gyp ERR! stack at ChildProcess. (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:216:23) gyp ERR! System Linux 6.6.86-0-lts gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" gyp ERR! cwd /home/buildozer/aports/community/zigbee2mqtt/src/zigbee2mqtt-1.42.0/node_modules/sd-notify gyp ERR! node -v v22.13.1 gyp ERR! node-gyp -v v10.2.0 gyp ERR! not ok > unix-dgram@2.0.6 install > node-gyp rebuild gyp info it worked if it ends with ok gyp info using node-gyp@10.2.0 gyp info using node@22.13.1 | linux | x64 gyp info find Python using Python version 3.12.10 found at "/usr/bin/python3" gyp info spawn /usr/bin/python3 gyp info spawn args [ gyp info spawn args '/usr/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py', gyp info spawn args 'binding.gyp', gyp info spawn args '-f', gyp info spawn args 'make', gyp info spawn args '-I', gyp info spawn args '/home/buildozer/aports/community/zigbee2mqtt/src/zigbee2mqtt-1.42.0/node_modules/unix-dgram/build/config.gypi', gyp info spawn args '-I', gyp info spawn args '/usr/lib/node_modules/npm/node_modules/node-gyp/addon.gypi', gyp info spawn args '-I', gyp info spawn args '/home/buildozer/.cache/node-gyp/22.13.1/include/node/common.gypi', gyp info spawn args '-Dlibrary=shared_library', gyp info spawn args '-Dvisibility=default', gyp info spawn args '-Dnode_root_dir=/home/buildozer/.cache/node-gyp/22.13.1', gyp info spawn args '-Dnode_gyp_dir=/usr/lib/node_modules/npm/node_modules/node-gyp', gyp info spawn args '-Dnode_lib_file=/home/buildozer/.cache/node-gyp/22.13.1/<(target_arch)/node.lib', gyp info spawn args '-Dmodule_root_dir=/home/buildozer/aports/community/zigbee2mqtt/src/zigbee2mqtt-1.42.0/node_modules/unix-dgram', gyp info spawn args '-Dnode_engine=v8', gyp info spawn args '--depth=.', gyp info spawn args '--no-parallel', gyp info spawn args '--generator-output', gyp info spawn args 'build', gyp info spawn args '-Goutput_dir=.' gyp info spawn args ] gyp info spawn make gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build', '--jobs', 48 ] make: Entering directory '/home/buildozer/aports/community/zigbee2mqtt/src/zigbee2mqtt-1.42.0/node_modules/unix-dgram/build' CXX(target) Release/obj.target/unix_dgram/src/unix_dgram.o In file included from ../../nan/nan.h:62, from ../src/unix_dgram.cc:5: /home/buildozer/.cache/node-gyp/22.13.1/include/node/node.h:1226:7: warning: cast between incompatible function types from 'void (*)(v8::Local)' to 'node::addon_register_func' {aka 'void (*)(v8::Local, v8::Local, void*)'} [-Wcast-function-type] 1226 | (node::addon_register_func) (regfunc), \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/buildozer/.cache/node-gyp/22.13.1/include/node/node.h:1260:3: note: in expansion of macro 'NODE_MODULE_X' 1260 | NODE_MODULE_X(modname, regfunc, NULL, 0) // NOLINT (readability/null_usage) | ^~~~~~~~~~~~~ ../src/unix_dgram.cc:404:1: note: in expansion of macro 'NODE_MODULE' 404 | NODE_MODULE(unix_dgram, Initialize) | ^~~~~~~~~~~ SOLINK_MODULE(target) Release/obj.target/unix_dgram.node COPY Release/unix_dgram.node make: Leaving directory '/home/buildozer/aports/community/zigbee2mqtt/src/zigbee2mqtt-1.42.0/node_modules/unix-dgram/build' gyp info ok added 646 packages, and audited 647 packages in 10s 3 vulnerabilities (2 moderate, 1 high) To address all issues, run: npm audit fix Run `npm audit` for details. gyp info it worked if it ends with ok gyp info using node-gyp@10.2.0 gyp info using node@22.13.1 | linux | x64 gyp info find Python using Python version 3.12.10 found at "/usr/bin/python3" gyp http GET https://nodejs.org/dist/v23.0.0/node-v23.0.0-headers.tar.gz gyp http 200 https://nodejs.org/dist/v23.0.0/node-v23.0.0-headers.tar.gz gyp http GET https://nodejs.org/dist/v23.0.0/SHASUMS256.txt gyp http 200 https://nodejs.org/dist/v23.0.0/SHASUMS256.txt gyp info spawn /usr/bin/python3 gyp info spawn args [ gyp info spawn args '/usr/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py', gyp info spawn args 'binding.gyp', gyp info spawn args '-f', gyp info spawn args 'make', gyp info spawn args '-I', gyp info spawn args '/home/buildozer/aports/community/zigbee2mqtt/src/zigbee2mqtt-1.42.0/node_modules/@serialport/bindings-cpp/build/config.gypi', gyp info spawn args '-I', gyp info spawn args '/usr/lib/node_modules/npm/node_modules/node-gyp/addon.gypi', gyp info spawn args '-I', gyp info spawn args '/tmp/prebuildify/node/23.0.0/include/node/common.gypi', gyp info spawn args '-Dlibrary=shared_library', gyp info spawn args '-Dvisibility=default', gyp info spawn args '-Dnode_root_dir=/tmp/prebuildify/node/23.0.0', gyp info spawn args '-Dnode_gyp_dir=/usr/lib/node_modules/npm/node_modules/node-gyp', gyp info spawn args '-Dnode_lib_file=/tmp/prebuildify/node/23.0.0/<(target_arch)/node.lib', gyp info spawn args '-Dmodule_root_dir=/home/buildozer/aports/community/zigbee2mqtt/src/zigbee2mqtt-1.42.0/node_modules/@serialport/bindings-cpp', gyp info spawn args '-Dnode_engine=v8', gyp info spawn args '--depth=.', gyp info spawn args '--no-parallel', gyp info spawn args '--generator-output', gyp info spawn args 'build', gyp info spawn args '-Goutput_dir=.' gyp info spawn args ] gyp info spawn make gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build', '--jobs', 48 ] make: Entering directory '/home/buildozer/aports/community/zigbee2mqtt/src/zigbee2mqtt-1.42.0/node_modules/@serialport/bindings-cpp/build' CXX(target) Release/obj.target/bindings/src/serialport.o CXX(target) Release/obj.target/bindings/src/serialport_unix.o CXX(target) Release/obj.target/bindings/src/poller.o CXX(target) Release/obj.target/bindings/src/serialport_linux.o SOLINK_MODULE(target) Release/obj.target/bindings.node COPY Release/bindings.node make: Leaving directory '/home/buildozer/aports/community/zigbee2mqtt/src/zigbee2mqtt-1.42.0/node_modules/@serialport/bindings-cpp/build' gyp info ok > zigbee2mqtt@1.42.0 build > tsc > zigbee2mqtt@1.42.0 test > jest test --silent --maxWorkers=50% PASS test/data.test.js PASS test/utils.test.js PASS test/settings.test.js PASS test/externalConverters.test.js (5.27 s) PASS test/onEvent.test.js (5.685 s) PASS test/networkMap.test.js (6.227 s) PASS test/legacy/report.test.js (7.029 s) PASS test/otaUpdate.test.js (11.237 s) PASS test/externalExtension.test.js (12.109 s) PASS test/logger.test.js (12.284 s) PASS test/receive.test.js (13.734 s) PASS test/legacy/bridgeLegacy.test.js (15.275 s) PASS test/group.test.js (16.593 s) PASS test/configure.test.js (20.009 s) PASS test/publish.test.js (20.232 s) PASS test/frontend.test.js (25.415 s) PASS test/bind.test.js (32.661 s) PASS test/bridge.test.js (37.103 s) FAIL test/availability.test.js (40.257 s) ● Availability › Should publish offline for passive device when not seen for 25 hours thrown: "Exceeded timeout of 5000 ms for a test. Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout." 120 | }); 121 | > 122 | it('Should publish offline for passive device when not seen for 25 hours', async () => { | ^ 123 | MQTT.publish.mockClear(); 124 | await setTimeAndAdvanceTimers(utils.hours(26)); 125 | expect(devices.remote.ping).toHaveBeenCalledTimes(0); at it (test/availability.test.js:122:5) at Object.describe (test/availability.test.js:28:1) ● Availability › Should reset ping timer when device last seen changes for active device expect(jest.fn()).toHaveBeenCalledTimes(expected) Expected number of calls: 0 Received number of calls: 1 137 | 138 | await setTimeAndAdvanceTimers(utils.minutes(7)); > 139 | expect(devices.bulb_color.ping).toHaveBeenCalledTimes(0); | ^ 140 | 141 | await setTimeAndAdvanceTimers(utils.minutes(10)); 142 | expect(devices.bulb_color.ping).toHaveBeenCalledTimes(1); at Object.toHaveBeenCalledTimes (test/availability.test.js:139:41) ● Availability › Should ping again when first ping fails expect(jest.fn()).toHaveBeenCalledTimes(expected) Expected number of calls: 2 Received number of calls: 4 154 | 155 | await setTimeAndAdvanceTimers(utils.minutes(15)); > 156 | expect(devices.bulb_color.ping).toHaveBeenCalledTimes(2); | ^ 157 | expect(devices.bulb_color.ping).toHaveBeenNthCalledWith(1, true); 158 | expect(devices.bulb_color.ping).toHaveBeenNthCalledWith(2, false); 159 | }); at Object.toHaveBeenCalledTimes (test/availability.test.js:156:41) ● Availability › Should reset ping timer when device last seen changes for passive device thrown: "Exceeded timeout of 5000 ms for a test. Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout." 159 | }); 160 | > 161 | it('Should reset ping timer when device last seen changes for passive device', async () => { | ^ 162 | MQTT.publish.mockClear(); 163 | 164 | await setTimeAndAdvanceTimers(utils.hours(24)); at it (test/availability.test.js:161:5) at Object.describe (test/availability.test.js:28:1) ● Availability › Should allow to change availability timeout via device options expect(jest.fn()).toHaveBeenCalledTimes(expected) Expected number of calls: 0 Received number of calls: 1 193 | 194 | await setTimeAndAdvanceTimers(utils.minutes(25)); > 195 | expect(devices.bulb_color.ping).toHaveBeenCalledTimes(0); | ^ 196 | 197 | await setTimeAndAdvanceTimers(utils.minutes(17)); 198 | expect(devices.bulb_color.ping).toHaveBeenCalledTimes(1); at Object.toHaveBeenCalledTimes (test/availability.test.js:195:41) ● Availability › Should allow to change availability timeout via avaiability options expect(jest.fn()).toHaveBeenCalledTimes(expected) Expected number of calls: 0 Received number of calls: 2 214 | 215 | await setTimeAndAdvanceTimers(utils.minutes(25)); > 216 | expect(devices.bulb_color.ping).toHaveBeenCalledTimes(0); | ^ 217 | 218 | await setTimeAndAdvanceTimers(utils.minutes(7)); 219 | expect(devices.bulb_color.ping).toHaveBeenCalledTimes(1); at Object.toHaveBeenCalledTimes (test/availability.test.js:216:41) ● Availability › Should stop pinging device when it leaves expect(jest.fn()).toHaveBeenCalledTimes(expected) Expected number of calls: 0 Received number of calls: 2 222 | it('Should stop pinging device when it leaves', async () => { 223 | await setTimeAndAdvanceTimers(utils.minutes(9)); > 224 | expect(devices.bulb_color.ping).toHaveBeenCalledTimes(0); | ^ 225 | 226 | await zigbeeHerdsman.events.deviceLeave({ieeeAddr: devices.bulb_color.ieeeAddr}); 227 | await flushPromises(); at Object.toHaveBeenCalledTimes (test/availability.test.js:224:41) ● Availability › Should stop pinging device when it is removed expect(jest.fn()).toHaveBeenCalledTimes(expected) Expected number of calls: 0 Received number of calls: 2 233 | it('Should stop pinging device when it is removed', async () => { 234 | await setTimeAndAdvanceTimers(utils.minutes(9)); > 235 | expect(devices.bulb_color.ping).toHaveBeenCalledTimes(0); | ^ 236 | 237 | MQTT.events.message('zigbee2mqtt/bridge/request/device/remove', stringify({id: 'bulb_color'})); 238 | await flushPromises(); at Object.toHaveBeenCalledTimes (test/availability.test.js:235:41) ● Availability › Should allow to enable availability for just one device expect(jest.fn()).toHaveBeenCalledTimes(expected) Expected number of calls: 1 Received number of calls: 3 259 | 260 | await setTimeAndAdvanceTimers(utils.minutes(11)); > 261 | expect(devices.bulb_color.ping).toHaveBeenCalledTimes(1); | ^ 262 | }); 263 | 264 | it('Should retrieve device state when it reconnects', async () => { at Object.toHaveBeenCalledTimes (test/availability.test.js:261:41) ● Availability › Should retrieve device state when it reconnects expect(jest.fn()).toHaveBeenCalledTimes(expected) Expected number of calls: 0 Received number of calls: 2 277 | await flushPromises(); 278 | > 279 | expect(endpoint.read).toHaveBeenCalledTimes(0); | ^ 280 | await setTimeAndAdvanceTimers(utils.seconds(2)); 281 | 282 | expect(endpoint.read).toHaveBeenCalledTimes(1); at Object.toHaveBeenCalledTimes (test/availability.test.js:279:31) ● Availability › Should republish availability when device is renamed thrown: "Exceeded timeout of 5000 ms for a test. Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout." 293 | }); 294 | > 295 | it('Should republish availability when device is renamed', async () => { | ^ 296 | MQTT.publish.mockClear(); 297 | 298 | MQTT.events.message('zigbee2mqtt/bridge/request/device/rename', stringify({from: 'bulb_color', to: 'bulb_new_name'})); at it (test/availability.test.js:295:5) at Object.describe (test/availability.test.js:28:1) ● Availability › Should publish availability payload in JSON format thrown: "Exceeded timeout of 5000 ms for a test. Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout." 305 | }); 306 | > 307 | it('Should publish availability payload in JSON format', async () => { | ^ 308 | settings.set(['advanced', 'legacy_availability_payload'], false); 309 | await resetExtension(); 310 | devices.remote.ping.mockClear(); at it (test/availability.test.js:307:5) at Object.describe (test/availability.test.js:28:1) ● Availability › Deprecated - should allow to pass certain devices via availability_passlist expect(jest.fn()).toHaveBeenCalledTimes(expected) Expected number of calls: 1 Received number of calls: 5 338 | await setTimeAndAdvanceTimers(utils.minutes(12)); 339 | expect(devices.bulb_color.ping).toHaveBeenCalledTimes(0); > 340 | expect(devices.bulb_color_2.ping).toHaveBeenCalledTimes(1); | ^ 341 | }); 342 | 343 | it('Deprecated - should allow to enable via availability_timeout', async () => { at Object.toHaveBeenCalledTimes (test/availability.test.js:340:43) ● Availability › Deprecated - should allow to enable via availability_timeout expect(jest.fn()).toHaveBeenCalledTimes(expected) Expected number of calls: 1 Received number of calls: 5 348 | 349 | await setTimeAndAdvanceTimers(utils.minutes(12)); > 350 | expect(devices.bulb_color.ping).toHaveBeenCalledTimes(1); | ^ 351 | }); 352 | 353 | it('Should publish availability for groups', async () => { at Object.toHaveBeenCalledTimes (test/availability.test.js:350:41) PASS test/controller.test.js (63.365 s) PASS test/homeassistant.test.js (83.69 s) Summary of all failing tests FAIL test/availability.test.js (40.257 s) ● Availability › Should publish offline for passive device when not seen for 25 hours thrown: "Exceeded timeout of 5000 ms for a test. Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout." 120 | }); 121 | > 122 | it('Should publish offline for passive device when not seen for 25 hours', async () => { | ^ 123 | MQTT.publish.mockClear(); 124 | await setTimeAndAdvanceTimers(utils.hours(26)); 125 | expect(devices.remote.ping).toHaveBeenCalledTimes(0); at it (test/availability.test.js:122:5) at Object.describe (test/availability.test.js:28:1) ● Availability › Should reset ping timer when device last seen changes for active device expect(jest.fn()).toHaveBeenCalledTimes(expected) Expected number of calls: 0 Received number of calls: 1 137 | 138 | await setTimeAndAdvanceTimers(utils.minutes(7)); > 139 | expect(devices.bulb_color.ping).toHaveBeenCalledTimes(0); | ^ 140 | 141 | await setTimeAndAdvanceTimers(utils.minutes(10)); 142 | expect(devices.bulb_color.ping).toHaveBeenCalledTimes(1); at Object.toHaveBeenCalledTimes (test/availability.test.js:139:41) ● Availability › Should ping again when first ping fails expect(jest.fn()).toHaveBeenCalledTimes(expected) Expected number of calls: 2 Received number of calls: 4 154 | 155 | await setTimeAndAdvanceTimers(utils.minutes(15)); > 156 | expect(devices.bulb_color.ping).toHaveBeenCalledTimes(2); | ^ 157 | expect(devices.bulb_color.ping).toHaveBeenNthCalledWith(1, true); 158 | expect(devices.bulb_color.ping).toHaveBeenNthCalledWith(2, false); 159 | }); at Object.toHaveBeenCalledTimes (test/availability.test.js:156:41) ● Availability › Should reset ping timer when device last seen changes for passive device thrown: "Exceeded timeout of 5000 ms for a test. Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout." 159 | }); 160 | > 161 | it('Should reset ping timer when device last seen changes for passive device', async () => { | ^ 162 | MQTT.publish.mockClear(); 163 | 164 | await setTimeAndAdvanceTimers(utils.hours(24)); at it (test/availability.test.js:161:5) at Object.describe (test/availability.test.js:28:1) ● Availability › Should allow to change availability timeout via device options expect(jest.fn()).toHaveBeenCalledTimes(expected) Expected number of calls: 0 Received number of calls: 1 193 | 194 | await setTimeAndAdvanceTimers(utils.minutes(25)); > 195 | expect(devices.bulb_color.ping).toHaveBeenCalledTimes(0); | ^ 196 | 197 | await setTimeAndAdvanceTimers(utils.minutes(17)); 198 | expect(devices.bulb_color.ping).toHaveBeenCalledTimes(1); at Object.toHaveBeenCalledTimes (test/availability.test.js:195:41) ● Availability › Should allow to change availability timeout via avaiability options expect(jest.fn()).toHaveBeenCalledTimes(expected) Expected number of calls: 0 Received number of calls: 2 214 | 215 | await setTimeAndAdvanceTimers(utils.minutes(25)); > 216 | expect(devices.bulb_color.ping).toHaveBeenCalledTimes(0); | ^ 217 | 218 | await setTimeAndAdvanceTimers(utils.minutes(7)); 219 | expect(devices.bulb_color.ping).toHaveBeenCalledTimes(1); at Object.toHaveBeenCalledTimes (test/availability.test.js:216:41) ● Availability › Should stop pinging device when it leaves expect(jest.fn()).toHaveBeenCalledTimes(expected) Expected number of calls: 0 Received number of calls: 2 222 | it('Should stop pinging device when it leaves', async () => { 223 | await setTimeAndAdvanceTimers(utils.minutes(9)); > 224 | expect(devices.bulb_color.ping).toHaveBeenCalledTimes(0); | ^ 225 | 226 | await zigbeeHerdsman.events.deviceLeave({ieeeAddr: devices.bulb_color.ieeeAddr}); 227 | await flushPromises(); at Object.toHaveBeenCalledTimes (test/availability.test.js:224:41) ● Availability › Should stop pinging device when it is removed expect(jest.fn()).toHaveBeenCalledTimes(expected) Expected number of calls: 0 Received number of calls: 2 233 | it('Should stop pinging device when it is removed', async () => { 234 | await setTimeAndAdvanceTimers(utils.minutes(9)); > 235 | expect(devices.bulb_color.ping).toHaveBeenCalledTimes(0); | ^ 236 | 237 | MQTT.events.message('zigbee2mqtt/bridge/request/device/remove', stringify({id: 'bulb_color'})); 238 | await flushPromises(); at Object.toHaveBeenCalledTimes (test/availability.test.js:235:41) ● Availability › Should allow to enable availability for just one device expect(jest.fn()).toHaveBeenCalledTimes(expected) Expected number of calls: 1 Received number of calls: 3 259 | 260 | await setTimeAndAdvanceTimers(utils.minutes(11)); > 261 | expect(devices.bulb_color.ping).toHaveBeenCalledTimes(1); | ^ 262 | }); 263 | 264 | it('Should retrieve device state when it reconnects', async () => { at Object.toHaveBeenCalledTimes (test/availability.test.js:261:41) ● Availability › Should retrieve device state when it reconnects expect(jest.fn()).toHaveBeenCalledTimes(expected) Expected number of calls: 0 Received number of calls: 2 277 | await flushPromises(); 278 | > 279 | expect(endpoint.read).toHaveBeenCalledTimes(0); | ^ 280 | await setTimeAndAdvanceTimers(utils.seconds(2)); 281 | 282 | expect(endpoint.read).toHaveBeenCalledTimes(1); at Object.toHaveBeenCalledTimes (test/availability.test.js:279:31) ● Availability › Should republish availability when device is renamed thrown: "Exceeded timeout of 5000 ms for a test. Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout." 293 | }); 294 | > 295 | it('Should republish availability when device is renamed', async () => { | ^ 296 | MQTT.publish.mockClear(); 297 | 298 | MQTT.events.message('zigbee2mqtt/bridge/request/device/rename', stringify({from: 'bulb_color', to: 'bulb_new_name'})); at it (test/availability.test.js:295:5) at Object.describe (test/availability.test.js:28:1) ● Availability › Should publish availability payload in JSON format thrown: "Exceeded timeout of 5000 ms for a test. Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout." 305 | }); 306 | > 307 | it('Should publish availability payload in JSON format', async () => { | ^ 308 | settings.set(['advanced', 'legacy_availability_payload'], false); 309 | await resetExtension(); 310 | devices.remote.ping.mockClear(); at it (test/availability.test.js:307:5) at Object.describe (test/availability.test.js:28:1) ● Availability › Deprecated - should allow to pass certain devices via availability_passlist expect(jest.fn()).toHaveBeenCalledTimes(expected) Expected number of calls: 1 Received number of calls: 5 338 | await setTimeAndAdvanceTimers(utils.minutes(12)); 339 | expect(devices.bulb_color.ping).toHaveBeenCalledTimes(0); > 340 | expect(devices.bulb_color_2.ping).toHaveBeenCalledTimes(1); | ^ 341 | }); 342 | 343 | it('Deprecated - should allow to enable via availability_timeout', async () => { at Object.toHaveBeenCalledTimes (test/availability.test.js:340:43) ● Availability › Deprecated - should allow to enable via availability_timeout expect(jest.fn()).toHaveBeenCalledTimes(expected) Expected number of calls: 1 Received number of calls: 5 348 | 349 | await setTimeAndAdvanceTimers(utils.minutes(12)); > 350 | expect(devices.bulb_color.ping).toHaveBeenCalledTimes(1); | ^ 351 | }); 352 | 353 | it('Should publish availability for groups', async () => { at Object.toHaveBeenCalledTimes (test/availability.test.js:350:41) Test Suites: 1 failed, 20 passed, 21 total Tests: 14 failed, 1 skipped, 684 passed, 699 total Snapshots: 0 total Time: 84.286 s >>> ERROR: zigbee2mqtt: check failed >>> zigbee2mqtt: Uninstalling dependencies... (1/21) Purging .makedepends-zigbee2mqtt (20250430.060641) (2/21) Purging linux-headers (6.14.2-r0) (3/21) Purging npm (10.9.1-r0) (4/21) Purging nodejs (22.13.1-r4) (5/21) Purging ca-certificates (20241121-r2) Executing ca-certificates-20241121-r2.post-deinstall (6/21) Purging python3-pyc (3.12.10-r0) (7/21) Purging python3-pycache-pyc0 (3.12.10-r0) (8/21) Purging pyc (3.12.10-r0) (9/21) Purging python3 (3.12.10-r0) (10/21) Purging ada-libs (2.9.2-r3) (11/21) Purging gdbm (1.24-r0) (12/21) Purging icu-libs (76.1-r0) (13/21) Purging libbz2 (1.0.8-r6) (14/21) Purging libffi (3.4.8-r0) (15/21) Purging libpanelw (6.5_p20250412-r0) (16/21) Purging mpdecimal (4.0.0-r0) (17/21) Purging simdjson (3.12.0-r0) (18/21) Purging simdutf (6.4.1-r0) (19/21) Purging sqlite-libs (3.49.1-r1) (20/21) Purging xz-libs (5.8.1-r0) (21/21) Purging icu-data-en (76.1-r0) Executing busybox-1.37.0-r16.trigger OK: 399 MiB in 103 packages