Skip to content

test_refused_write_settles.py silently skips HTTP-protocol control drivers #80

Description

@frahlg

drivers/tests/test_refused_write_settles.py only probes drivers whose manifest declares PROTOCOL == "modbus". It holds every Modbus control driver to the write-refusal-counting rule in docs/WRITING-A-DRIVER.md ("The same rule for writes"): count refusals, stop after N, report the default as held rather than failed.

nibe_local (PROTOCOL = "http", writes via host.http_patch) is the first HTTP-protocol driver to gain a write path — see #46 — and it falls through this check entirely, silently. In the current code, driver_default_mode has no bounded refusal counter: if the pump keeps refusing the clear write (e.g. left read-only on the pump side via installer menu 7.5.15), it retries every 60s indefinitely instead of counting to N and reporting the state as held, the way sungrow 1.5.7 does.

This gap applies to any future HTTP-protocol control driver, not just nibe_local — the check's protocol filter is the root cause, not the individual driver.

Ask: widen test_refused_write_settles.py (and refused-write-baseline.json bookkeeping) to also probe HTTP-protocol drivers that declare a write path, the same way it already does for Modbus. Surfaced during automated review of #46; filing separately since it's a pre-existing coverage gap in the test suite rather than something that PR's diff introduced.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions