ctlport_test: the polling sender is a Grbl sender, not a product

The NewlinePoller docstring and poll_case's named one sender product
as the sender that polls '?' with an end of line behind it, and quoted
that product's poll rate beside the harness's own. The behavior under
test is the controller port's: an empty line is not the sender
speaking, a port jog is never refused for a poll, and every poll draws
its one ok. Which sender polls, and how often, is not the contract;
the harness's own rate (four times a second, period 0.25) is the fact
that matters. Both docstrings now say a Grbl sender that polls, and
the comparative rate is gone.

Proof: docstrings only, no behavior change. python3 -B -m py_compile
and pyflakes are clean on scripts/bench/ctlport_test.py, and the file
names no product. The harness runs in grblHAL-glowforge CI (python3
forgefirm/scripts/bench/ctlport_test.py build/grblHAL_glowforge).

Acceptance: none; docstrings of a harness outside every covers map.
This commit is contained in:
ScottW514
2026-10-15 22:42:49 -04:00
parent 68e9d3fb8e
commit b2a011ac08
+5 -6
View File
@@ -379,8 +379,8 @@ def test_sender_wins_queued(s):
class NewlinePoller(threading.Thread): class NewlinePoller(threading.Thread):
"""A sender that polls the way LightBurn does: '?' with an end of line """A sender that polls '?' with an end of line behind it, on a timer,
behind it, on a timer. The '?' is a realtime character; the end of line as some Grbl senders do. The '?' is a realtime character; the end of line
is an empty line, which the core answers ok.""" is an empty line, which the core answers ok."""
def __init__(self, sender, period=0.25): def __init__(self, sender, period=0.25):
@@ -402,10 +402,9 @@ class NewlinePoller(threading.Thread):
def poll_case(tag, eol): def poll_case(tag, eol):
"""An empty line is not the sender speaking. With a sender polling """An empty line is not the sender speaking. With a sender polling
'?'<eol> four times a second (LightBurn polls about twice a second): a '?'<eol> four times a second: a port jog is never refused for it, a
port jog is never refused for it, a long port jog runs whole under it, long port jog runs whole under it, and every poll still draws its one
and every poll still draws its one ok, during the jog too. A real line ok, during the jog too. A real line still goes first."""
still goes first."""
s = Session(eol=eol) s = Session(eol=eol)
try: try:
s.sender.wait_state("Idle") s.sender.wait_state("Idle")