Un-xfail 9 im.tincan.Calls contract tests; make the pending-iface guard self-healing#166
Conversation
…ding-iface guard strict (tincan-73eki) The daemon has exported all 9 im.tincan.Calls signals since tincan-0e6na landed, but _KNOWN_PENDING_DAEMON_IFACES still gated them behind an unconditional pytest.xfail() that could never self-heal. Remove the stale entry, refresh the comments that still cited the interface as pending, and switch the guard to a dynamically-applied strict xfail (mirroring conftest.py's _KNOWN_BROKEN_CONTRACT) so a future landed interface can't rot silently again.
|
Thanks @quad341 — this is exactly the kind of stale-guard cleanup that's easy to leave rotting for months. Nice catch that the I re-traced the core claim against Reviewers: Qwen (local) — ok · Claude (claude-opus-4-8[1m]) — ok · Codex (gpt-5.5) — ok Verified locally + tests pass. Ready to merge — clicking the button is the only step left. |
What this changes
Nine D-Bus contract tests for the
im.tincan.Callsinterface (signals likeIncomingCall,CallConnected,CallEnded,CallActive, etc.) werexfailing under a "not yet exported by the daemon" guard. The daemon has
actually exported all nine signals for a while now — the guard just never
got updated, so the tests were silently skipping real coverage instead of
running it.
This removes the stale entry so those 9 tests run for real (77 passed, 1
skipped, 0 xfailed in the contract file — was 66/2/10 before).
It also fixes why the guard went stale in the first place: the
pending-iface skip was an unconditional
pytest.xfail(), which can neverself-heal or flag when an interface lands. It's now a strict xfail
(mirrors the existing
_KNOWN_BROKEN_CONTRACTpattern inconftest.py), sothe next time an interface listed as "pending" actually ships, CI fails
loudly (XPASS) instead of the test suite quietly losing coverage again.
Review notes
tests/tincand/test_dbus_contract.py, noruntime/production code touched.
pending-iface entry was temporarily simulated and confirmed to produce a
hard
XPASS(strict)failure, then reverted before this commit.Test plan
pytest tests/tincand/test_dbus_contract.py— 77 passed, 1 skipped, 0 xfailedpytest tests/— 2376 passed, 1 skipped, 0 failed, 0 xfailedruff check .— 77 errors, identical count before/after (zero new lint issues)release-gates/unxfail-calls-contract-sgeqs-gate.md🤖 Deployed by actual-factory