fix: the lane/program guard compared every section, not just programs (4295)
CI / lint (push) Successful in 2s
CI / extension-version (push) Successful in 3s
Build images / sign-extension (push) Successful in 3s
Build images / build-agent (push) Successful in 6s
Build images / build-web (push) Successful in 5s
CI / frontend-build (push) Successful in 25s
CI / backend-lint-and-test (push) Successful in 33s
Build images / smoke-web (push) Successful in 46s
Build images / promote (push) Skipped
CI / integration (push) Successful in 2m9s
CI / lint (push) Successful in 2s
CI / extension-version (push) Successful in 3s
Build images / sign-extension (push) Successful in 3s
Build images / build-agent (push) Successful in 6s
Build images / build-web (push) Successful in 5s
CI / frontend-build (push) Successful in 25s
CI / backend-lint-and-test (push) Successful in 33s
Build images / smoke-web (push) Successful in 46s
Build images / promote (push) Skipped
CI / integration (push) Successful in 2m9s
`test_every_lane_gets_a_program` asserted
`set(cp.sections()) - {"supervisord"} == expected`, so it failed the moment
the generated config grew non-program sections. b09ee87 added three — the
control socket that lets `supervisorctl` reach supervisord — and the
property the test exists for had not moved at all: every lane still has a
program and no program is not a lane.
Now compared over `program:` sections only, both directions. A guard that
fires on a correct change is one people learn to edit rather than read, which
costs more than it catches.
I reported b09ee87 as green off runs 7328 and 7330 and did not look at 7329,
which was red on this. The image itself smoked clean — that part was true —
but "green" was a claim about the commit and I checked two of its three runs.
Earlier in this session I had been reading all three every time.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LVjrnpQjRgHdvq95rASoiR
This commit is contained in:
@@ -39,10 +39,19 @@ def test_it_is_valid_ini_with_a_supervisord_section():
|
|||||||
|
|
||||||
def test_every_lane_gets_a_program():
|
def test_every_lane_gets_a_program():
|
||||||
"""One image carries every lane since step 6, so nothing is conditional.
|
"""One image carries every lane since step 6, so nothing is conditional.
|
||||||
A lane in LANES with no program is a queue with no consumer."""
|
A lane in LANES with no program is a queue with no consumer.
|
||||||
|
|
||||||
|
Compared over the `program:` sections ONLY, both directions: no lane
|
||||||
|
without a program, and no program that is not a lane. It used to compare
|
||||||
|
every section minus `[supervisord]`, which made it fail the moment the
|
||||||
|
config grew non-program plumbing — the control socket did exactly that,
|
||||||
|
and the property it exists for had not moved at all. A guard that fires on
|
||||||
|
a correct change is one people learn to edit rather than read.
|
||||||
|
"""
|
||||||
cp = _parse()
|
cp = _parse()
|
||||||
|
programs = {s for s in cp.sections() if s.startswith("program:")}
|
||||||
expected = {"program:web"} | {f"program:{lane.name}" for lane in LANES}
|
expected = {"program:web"} | {f"program:{lane.name}" for lane in LANES}
|
||||||
assert set(cp.sections()) - {"supervisord"} == expected
|
assert programs == expected
|
||||||
|
|
||||||
|
|
||||||
def test_the_ml_lane_runs_even_though_it_ships_disabled():
|
def test_the_ml_lane_runs_even_though_it_ships_disabled():
|
||||||
|
|||||||
Reference in New Issue
Block a user