• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

floatdrop / moq-go / 31730027469
89%

Build:
DEFAULT BRANCH: draft-19
Ran 13 Aug 2026 06:19PM UTC
Jobs 1
Files 102
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

13 Aug 2026 06:17PM UTC coverage: 88.386% (-0.3%) from 88.66%
31730027469

push

github

web-flow
test(session): hold all three Conn adapters to one shared conformance suite (#80)

The session layer never imports a QUIC library — it is written against Conn and
Stream — so every guarantee it relies on is one some adapter has to make good
on. Three do, and only sessiontest is exercised by `go test`. The two carrying
the semantics production runs on were covered by the interop jobs alone, which
is how a stale flag in entrypoint-relay.sh once broke the WebTransport path
with the whole unit suite green.

conntest.RunSuite turns CLAUDE.md's "transport behaviour must land in all three
adapters" from a review rule into a mechanical one: add a subtest and every
adapter is held to it at once.

What it pins, and who depends on it:

  - Conn.Context ends when the connection does; the relay's per-session
    handler goroutines hang off it.
  - A send stream's Context ends once its data is delivered and it is closed.
    §8 SUBGROUP_DELIVERY_TIMEOUT arms a timer against exactly this signal.
  - CancelWrite unblocks the peer's Read with an error rather than io.EOF — a
    reset must not be indistinguishable from a clean FIN.
  - OpenStream reports an exhausted peer limit as ErrNoStreamCredit. A
    documented MUST that PUBLISH_SKIPPED (§10.20) is built on: an adapter
    returning the raw transport error would make the relay hang where the spec
    says to send PUBLISH_SKIPPED.

Writing it surfaced a divergence between the doubles and the real thing. The
first version wrote before the peer accepted, which passes on both real
adapters — QUIC buffers — and deadlocks on sessiontest, whose streams are
synchronous io.Pipes. It now drains concurrently throughout, so it tests the
Conn contract rather than each transport's buffering, which the contract says
nothing about.

The stream-limit case skips on wtconn rather than passing quietly:
webtransport-go negotiates its limits over capsules and exposes no knob to
lower them, so that adapter's ErrNoStreamCredit mapping st... (continued)

86 of 142 new or added lines in 1 file covered. (60.56%)

12 existing lines in 4 files now uncovered.

9307 of 10530 relevant lines covered (88.39%)

2.01 hits per line

Uncovered Changes

Lines Coverage ∆ File
56
60.56
pkg/moqt/session/internal/conntest/suite.go

Coverage Regressions

Lines Coverage ∆ File
5
95.04
-3.55% pkg/relay/internal/registry/track_entry.go
3
74.63
-1.49% pkg/relay/handler_namespace.go
2
57.14
-28.57% pkg/relay/discovery/discovery.go
2
85.69
-0.36% pkg/relay/handler_fanout.go
Jobs
ID Job ID Ran Files Coverage
1 31730027469.1 13 Aug 2026 06:19PM UTC 102
88.39
GitHub Action Run
Source Files on build 31730027469
  • Tree
  • List 102
  • Changed 10
  • Source Changed 0
  • Coverage Changed 10
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #31730027469
  • 77ba4ec6 on github
  • Prev Build on draft-19 (#31728506563)
  • Next Build on draft-19 (#31764328097)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc