Skip to content

fix: make V1Channel re-subscribable after a failed subscribe (#845) #3012

fix: make V1Channel re-subscribable after a failed subscribe (#845)

fix: make V1Channel re-subscribable after a failed subscribe (#845) #3012

Triggered via push June 22, 2026 16:42
Status Failure
Total duration 2m 41s
Artifacts

ci.yml

on: push
Matrix: test
Lint Commit Messages
16s
Lint Commit Messages
lint
19s
lint
Build Package
Build Package
Test Semantic Release
Test Semantic Release
Fit to window
Zoom out
Zoom in

Annotations

1 error, 3 warnings, and 1 notice
Lint Commit Messages
You have commit messages with errors ⧗ input: fix: make V1Channel re-subscribable after a failed subscribe (#845) * fix: make V1Channel re-subscribable after a failed subscribe * fix: narrow subscribe/connect cleanup to Exception; use 16-byte test nonce Address review feedback on #845: - Narrow the cleanup guards in RoborockDevice.connect() and V1Channel.subscribe() from BaseException to Exception so KeyboardInterrupt/SystemExit/CancelledError propagate untouched while still releasing the channel on normal failures (incl. the ValueError and RoborockException retry paths the fix targets). - Use an actually-16-byte test nonce to match its name and avoid relying on absent length validation. * test: verify v1 subscribe/connect behavior via public api, not internals Rewrite the V1Channel/RoborockDevice regression tests to assert observable behavior (the callback fires on message arrival; re-subscribe and re-connect succeed) instead of private attributes (_callback, _reconnect_task, _mqtt_unsub, _unsub), per review feedback. Add type: ignore for the test-only mock assignments and FakeChannel construction that were failing the mypy pre-commit hook. * refactor: distinguish expected vs unexpected exceptions in subscribe/connect cleanup Split the leak-safety catch-all in V1Channel.subscribe() and RoborockDevice.connect() into an explicit `except RoborockException` (the expected failure path) and an `except Exception` that logs the unexpected, shouldn't-happen error before tearing down. Both branches still run teardown/unsub and re-raise, so behavior is unchanged; the broad catch is now a deliberate, signposted exception to the usual don't-catch-Exception rule, and unexpected errors become observable in logs. ✖ footer's lines must not be longer than 100 characters [footer-max-line-length] ✖ found 1 problems, 0 warnings ⓘ Get help: https://github.com/conventional-changelog/commitlint/#what-is-commitlint
lint
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
test (3.11)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
test (3.14)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
release
Generating and uploading digital attestations