Martin Vogel
cbd241d7f1
fix(tests): venue-parity interface probes must not pipe into grep -q
...
The two layer-5 interface probes tested for a substring by piping the
captured output into `grep -q`. Under `set -o pipefail` (line 32) that
turns a SATISFIED contract into a probe failure whenever the payload is
larger than the pipe buffer: `grep -q` exits at the first match, and the
writer takes EPIPE on the remainder, so the pipeline reports the writer's
non-zero status even though the match succeeded.
Observed on macos-15-intel:
test_venue_parity_contract.sh: line 404: printf: write error: Broken pipe
INTERFACE CONTRACT: scripts/ci/smoke-artifact.sh --help must exit 0 and
print a Usage: block (rc=0)
VENUE PARITY CONTRACT VIOLATED — interface probes failed (layer 5)
rc=0 and the Usage: block was present — the match is exactly what made
grep exit early. `smoke-artifact.sh --help` is 698 bytes against a
512-byte PIPE_BUF, and prints `Usage:` on its first line, so the writer
is killed at the earliest possible moment. Whether the remaining write
lands before grep exits is a scheduling race, which is why this only
ever showed up on one runner.
Replace both pipelines with in-shell `case` matching: no subprocess, no
pipe, no race, and a strictly literal match (the second probe's "--help."
was previously a regex whose `.` matched any character).
Verified: the contract passes (18 --help entries, 8 strict-flag entries),
and the matcher still returns 0 for output with no Usage: block, so the
probe can still fail.
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com >
2026-08-28 16:41:38 +02:00
..
2026-08-27 14:54:25 +02:00
2026-08-27 23:45:29 +02:00
2026-08-11 13:37:32 +02:00
2026-06-05 21:53:25 +02:00
2026-06-05 21:53:25 +02:00
2026-07-13 01:50:03 +02:00
2026-03-15 22:37:34 +01:00
2026-08-11 13:37:32 +02:00
2026-08-21 20:07:37 +08:00
2026-08-28 09:22:12 +02:00
2026-05-30 18:26:44 +02:00
2026-07-11 03:28:32 +02:00
2026-06-29 09:45:28 -06:00
2026-07-22 17:48:20 +02:00
2026-08-08 17:35:05 +02:00
2026-07-18 15:52:50 +02:00
2026-08-28 14:40:32 +02:00
2026-08-17 00:16:15 +02:00
2026-07-13 01:50:02 +02:00
2026-07-14 21:13:52 +02:00
2026-08-15 10:37:24 +03:00
2026-08-17 04:54:14 +02:00
2026-08-06 08:24:23 -04:00
2026-08-04 16:37:06 +02:00
2026-06-06 22:16:04 +02:00
2026-08-15 08:44:20 +02:00
2026-08-14 06:46:05 -04:00
2026-07-18 15:52:50 +02:00
2026-08-22 03:50:42 +08:00
2026-08-08 17:35:05 +02:00
2026-08-14 20:04:08 +02:00
2026-08-14 06:46:05 -04:00
2026-08-12 12:47:59 +02:00
2026-08-09 13:06:42 +02:00
2026-07-18 11:48:59 +02:00
2026-08-11 13:37:32 +02:00
2026-08-11 13:37:32 +02:00
2026-07-18 01:26:08 +02:00
2026-07-18 01:26:08 +02:00
2026-08-13 14:04:51 +02:00
2026-08-16 13:12:25 +02:00
2026-08-18 00:14:17 +02:00
2026-06-23 06:38:45 +09:00
2026-06-23 06:38:45 +09:00
2026-03-25 09:28:11 +01:00
2026-08-06 18:15:48 +02:00
2026-08-27 12:42:57 +02:00
2026-07-18 15:52:50 +02:00
2026-06-07 12:35:53 +02:00
2026-06-08 22:55:23 +02:00
2026-08-28 13:26:59 +02:00
2026-08-25 11:57:49 +03:00
2026-06-05 21:53:25 +02:00
2026-07-02 00:37:52 +02:00
2026-08-06 03:30:32 +02:00
2026-07-18 15:52:50 +02:00
2026-08-26 22:51:29 +02:00
2026-08-27 14:54:25 +02:00
2026-06-07 19:13:01 +02:00
2026-06-07 19:13:01 +02:00
2026-06-07 19:13:01 +02:00
2026-06-27 16:23:26 +02:00
2026-06-07 20:05:24 +02:00
2026-06-07 20:05:24 +02:00
2026-08-20 00:12:28 +02:00
2026-08-27 14:54:25 +02:00
2026-08-06 08:26:45 -04:00
2026-05-21 22:52:16 +02:00
2026-07-24 16:08:42 +02:00
2026-08-17 22:07:11 +03:00
2026-08-28 02:39:21 +02:00
2026-08-04 04:58:44 +02:00
2026-08-25 11:57:49 +03:00
2026-07-28 20:46:29 +00:00
2026-08-14 20:01:06 +02:00
2026-06-22 22:04:31 +02:00
2026-07-18 13:48:06 +02:00
2026-06-02 18:52:37 +02:00
2026-07-18 15:52:50 +02:00
2026-07-18 15:52:50 +02:00
2026-08-20 19:11:33 +02:00
2026-08-27 23:45:29 +02:00
2026-08-28 13:26:59 +02:00
2026-07-18 14:38:07 +02:00
2026-06-28 13:05:05 +02:00
2026-08-06 18:15:48 +02:00
2026-03-15 22:37:34 +01:00
2026-08-28 12:46:43 +02:00
2026-07-18 01:26:08 +02:00
2026-06-08 22:55:23 +02:00
2026-07-18 15:52:50 +02:00
2026-08-21 19:45:49 +05:30
2026-08-13 19:16:19 +02:00
2026-08-11 17:01:24 +02:00
2026-08-16 03:23:05 +02:00
2026-06-12 02:17:39 +02:00
2026-08-20 21:20:44 +02:00
2026-07-29 17:05:10 +02:00
2026-08-03 17:44:52 +02:00
2026-08-17 22:07:11 +03:00
2026-08-15 17:22:59 +02:00
2026-07-03 19:57:01 +02:00
2026-07-18 15:52:50 +02:00
2026-07-18 15:52:50 +02:00
2026-08-27 14:40:39 +02:00
2026-08-14 06:11:05 +03:00
2026-07-18 01:26:08 +02:00
2026-07-18 01:26:08 +02:00
2026-08-10 16:40:31 +02:00
2026-08-11 05:30:17 +02:00
2026-05-09 14:16:15 +02:00
2026-07-18 15:52:50 +02:00
2026-08-18 11:19:19 +02:00
2026-08-11 17:01:24 +02:00
2026-08-13 23:52:21 +02:00
2026-08-18 22:30:28 +02:00
2026-06-23 13:52:08 -03:00
2026-08-17 22:07:11 +03:00
2026-07-18 15:52:50 +02:00
2026-07-18 15:52:50 +02:00
2026-08-03 15:42:32 +02:00
2026-08-17 22:07:11 +03:00
2026-08-12 20:57:43 +02:00
2026-08-08 17:35:05 +02:00
2026-07-18 01:26:08 +02:00
2026-08-18 11:21:36 +02:00
2026-08-06 18:33:13 +02:00
2026-06-28 21:57:35 -06:00
2026-08-21 20:07:37 +08:00
2026-07-25 00:37:05 +02:00
2026-08-07 14:58:22 +02:00
2026-07-13 11:43:00 +03:00
2026-08-10 12:57:34 +01:00
2026-07-19 12:35:58 +05:30
2026-03-20 20:32:38 +01:00
2026-08-01 01:29:20 +02:00
2026-07-03 20:16:39 +02:00
2026-08-20 10:23:48 +02:00
2026-07-17 22:32:53 +02:00
2026-08-22 03:50:42 +08:00
2026-03-24 23:48:23 +01:00
2026-06-24 20:33:52 +05:30
2026-08-13 00:21:13 +02:00
2026-03-24 23:48:23 +01:00
2026-08-17 00:16:16 +02:00
2026-06-10 12:11:02 +02:00
2026-07-21 15:32:15 +02:00
2026-08-09 13:06:42 +02:00
2026-04-06 14:34:07 +02:00
2026-08-08 17:35:05 +02:00
2026-08-28 16:41:38 +02:00
2026-07-23 00:53:41 +02:00
2026-08-08 17:35:05 +02:00
2026-06-05 21:53:25 +02:00
2026-08-14 00:21:31 +02:00
2026-08-14 04:40:07 +02:00
2026-08-14 12:48:40 +02:00
2026-08-24 07:25:34 +09:00
2026-08-20 16:43:38 +02:00
2026-08-28 10:11:56 +02:00
2026-08-17 22:07:11 +03:00
2026-06-06 19:48:48 +02:00
2026-08-17 22:07:11 +03:00
2026-08-06 18:00:08 +02:00
2026-03-24 23:48:23 +01:00
2026-04-15 23:56:03 +02:00