testsAndMisc/python_pkg
Krzysztof kuhy Rudnicki 28f2925c30 Instrument: multi-line array elements are not statements; clear arch_perf_fixes
Fourth flavour of defect (a) found this session, after multi-line quotes,
`} |` and the backslash-continued assignment. bash reports a multi-line array
assignment at its OPENING line and never emits the element lines or the
closing paren, so kcov instrumenting them inflates the denominator:

    +L3 items=('one' 'two')      # opened line 3, closed line 6
                                 # lines 4, 5, 6: never emitted

The rule is therefore symmetric with the existing multi-line-quote case: the
opening line is the statement, everything up to the closing paren is data.
_closes_array() finds that paren by recomputing quote state per candidate, so
an element like "a(b)" does not end the literal early.

Measured effect through fixes/lib/tests/run_all.sh:

  arch_perf_fixes.sh  93.48% -> 100.00%  (43/43)
  bt_audio.sh        100.00% -> 100.00%  (127/127)
  arch_perf_report.sh 100.00% -> 100.00% (59/59)
  arch_perf_probes.sh 100.00% -> 100.00% (93/93)
  ubuntu_perf_more.sh 100.00% -> 100.00% (32/32)
  bt_report.sh       100.00% -> 100.00%  (37/37)
  bt_pairing.sh      100.00% -> 100.00%  (65/65)

One gained, six held, none went DOWN. Acceptance test unchanged:
dot_resolver_install.sh 39/39 and rpi_nc_ca.sh 73/73. arch_perf_fixes.sh
therefore comes off the allowlist in the same commit, confirmed by the real
gate with no exemption.

The fail-open check, since over-detection INFLATES coverage: the old and new
predicates were diffed over every allowlisted lib plus the six cleared ones,
printing each newly excluded line WITH its text. All 91 across 10 libs are
array elements or closing parens -- common.sh's tool tables, packages.sh's
associative arrays, arch_sysctl.sh's sysctl maps, thorium_repairs.sh's four
path lists, ubuntu_perf_fixes.sh's sssd units, and so on. No statement caught.

Tests cover both directions, including three negatives: a single-line
`x=(a b)`, an element containing a parenthesis, and `x=$(echo hi)` which is a
command substitution rather than an array. Module stays at 100% branch
coverage.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-22 20:13:45 +02:00
..
android_ui Clear five python_pkg packages under the cap 2026-08-16 18:14:36 +02:00
app_icons Phase 2: enforce the 250-line cap and stop pushing red 2026-08-21 16:41:31 +02:00
archwiki_rag archwiki_rag: offline semantic search over the Arch Wiki 2026-08-10 15:33:18 +02:00
artgate artgate: add 64px icon spec for the diffusion route 2026-08-15 23:30:32 +02:00
billsplit_coverage Move billsplit Flutter app into the monorepo 2026-08-03 12:22:22 +02:00
brother_printer Clear the last three brother_printer test modules over the cap 2026-08-16 17:27:07 +02:00
code_tutor Clear the seven over-cap code_tutor test modules 2026-08-16 18:06:38 +02:00
focus_policy Clear five python_pkg packages under the cap 2026-08-16 18:14:36 +02:00
live_calc refactor: extract all inline Python from shell scripts into proper .py files 2026-06-06 10:31:48 +02:00
morning_routine Remove wake_alarm (extracted to kuhyx/wake-alarm) and fix the orchestrator 2026-06-22 12:47:06 +02:00
random_jpg Clear five python_pkg packages under the cap 2026-08-16 18:14:36 +02:00
shared Migrate wake_alarm to the shared gatelock backend 2026-06-22 07:33:49 +02:00
syncyomi_guard syncyomi_guard: refuse a collapsed payload as the new good copy 2026-08-10 15:33:18 +02:00
tests Instrument: multi-line array elements are not statements; clear arch_perf_fixes 2026-08-22 20:13:45 +02:00
token_audit Land the token_audit standing-cost checkup (116 tests, 100% branch coverage) 2026-08-22 14:33:03 +02:00
vscode_optimizer vscode_optimizer: detect Intel iGPUs as Intel, not AMD 2026-08-17 14:49:43 +02:00
wsg_grabber Clear the wsg_grabber test modules: python_pkg is now under the cap 2026-08-16 18:19:26 +02:00
__init__.py feat(screen_locker): harden table tennis verification, remove running option 2026-02-02 21:38:52 +01:00
.gitignore screen_locker: enhance workout logging and UI 2025-12-02 23:22:13 +01:00
conftest.py test: achieve 100% branch coverage across all python_pkg packages 2026-03-21 17:51:36 +01:00