testsAndMisc/meta/shell-coverage-allowlist.txt
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

105 lines
6.3 KiB
Plaintext

# Shell libraries that predate the coverage ratchet.
#
# Each line is a file exempt from check_shell_coverage.sh. The exemption
# is static: editing one of these files is fine and does not require
# tests. An entry goes away when its lib/ directory gains a
# tests/run_all.sh, at which point every file in that directory is
# enforced.
#
# This list only ever shrinks. Never add a path to it by hand -- a new
# library must ship with its tests.
#
# Regenerate (only ever to REMOVE now-covered entries):
# bash meta/scripts/check_shell_coverage.sh --seed
linux_configuration/.githooks/lib/common.sh
linux_configuration/scripts/meta/lib/shell_check_discover.sh
linux_configuration/scripts/meta/lib/shell_check_install.sh
linux_configuration/scripts/meta/lib/shell_check_lint.sh
linux_configuration/scripts/mtk_root/lib/dump_partitions.sh
linux_configuration/scripts/mtk_root/lib/dump_verify.sh
linux_configuration/scripts/mtk_root/lib/mtk_udev.sh
linux_configuration/scripts/mtk_root/lib/recon_report.sh
linux_configuration/scripts/periodic_background/digital_wellbeing/pacman/lib/install_files.sh
linux_configuration/scripts/periodic_background/digital_wellbeing/pacman/lib/integrity.sh
linux_configuration/scripts/periodic_background/digital_wellbeing/pacman/lib/managed_copy.sh
linux_configuration/scripts/periodic_background/digital_wellbeing/pacman/lib/protect_and_extras.sh
linux_configuration/scripts/periodic_background/digital_wellbeing/virtualbox/lib/vbox_disk_inject.sh
linux_configuration/scripts/periodic_background/system-maintenance/bin/lib/catchup_timer.sh
linux_configuration/scripts/periodic_background/system-maintenance/bin/lib/distro_detect.sh
linux_configuration/scripts/periodic_background/system-maintenance/bin/lib/nvidia_pmon.sh
linux_configuration/scripts/periodic_background/system-maintenance/bin/lib/packages.sh
linux_configuration/scripts/periodic_background/system-maintenance/bin/lib/system_services.sh
linux_configuration/scripts/single_use/features/lib/aw_autostart.sh
linux_configuration/scripts/single_use/features/lib/aw_install.sh
linux_configuration/scripts/single_use/features/lib/aw_service.sh
linux_configuration/scripts/single_use/features/lib/dns_dhcp.sh
linux_configuration/scripts/single_use/features/lib/dns_firewall.sh
linux_configuration/scripts/single_use/features/lib/dns_units.sh
linux_configuration/scripts/single_use/features/lib/dwm_config.sh
linux_configuration/scripts/single_use/features/lib/gitea_network.sh
linux_configuration/scripts/single_use/features/lib/kcd2_autorebuild.sh
linux_configuration/scripts/single_use/features/lib/kcd2_expose.sh
linux_configuration/scripts/single_use/features/lib/kcd2_serve.sh
linux_configuration/scripts/single_use/features/lib/local_llm_model.sh
linux_configuration/scripts/single_use/features/lib/mobile_service.sh
linux_configuration/scripts/single_use/features/lib/nc_discover.sh
linux_configuration/scripts/single_use/features/lib/nc_flash.sh
linux_configuration/scripts/single_use/features/lib/nc_image.sh
linux_configuration/scripts/single_use/features/lib/nc_packages.sh
linux_configuration/scripts/single_use/features/lib/nc_php.sh
linux_configuration/scripts/single_use/features/lib/nc_remote_flash.sh
linux_configuration/scripts/single_use/features/lib/nc_remote.sh
linux_configuration/scripts/single_use/features/lib/nc_services.sh
linux_configuration/scripts/single_use/features/lib/pi_flash_exec.sh
linux_configuration/scripts/single_use/features/lib/pi_flash_image.sh
linux_configuration/scripts/single_use/features/lib/pi_flash_remote.sh
linux_configuration/scripts/single_use/features/lib/rpi_nc_ca.sh
linux_configuration/scripts/single_use/features/lib/rpi_nc_deps.sh
linux_configuration/scripts/single_use/features/lib/rpi_nc_fixes.sh
linux_configuration/scripts/single_use/features/lib/rpi_nc_install.sh
linux_configuration/scripts/single_use/features/lib/rpi_nc_ssl_remote.sh
linux_configuration/scripts/single_use/features/lib/rpi_nc_ssl.sh
linux_configuration/scripts/single_use/features/lib/rpi_nc_system.sh
linux_configuration/scripts/single_use/features/lib/searxng_expose.sh
linux_configuration/scripts/single_use/features/lib/searxng_limiter.sh
linux_configuration/scripts/single_use/features/lib/searxng_settings.sh
linux_configuration/scripts/single_use/features/lib/searxng_stack.sh
linux_configuration/scripts/single_use/features/lib/searxng_start.sh
linux_configuration/scripts/single_use/features/lib/searxng_status.sh
linux_configuration/scripts/single_use/features/lib/syncyomi_expose.sh
linux_configuration/scripts/single_use/features/lib/syncyomi_stack.sh
linux_configuration/scripts/single_use/features/lib/unreal_mcp_repo.sh
linux_configuration/scripts/single_use/features/lib/website_build.sh
linux_configuration/scripts/single_use/features/lib/wg_firewall.sh
linux_configuration/scripts/single_use/features/lib/wg_keys.sh
linux_configuration/scripts/single_use/features/lib/wg_sshd.sh
linux_configuration/scripts/single_use/fixes/lib/arch_cpu.sh
linux_configuration/scripts/single_use/fixes/lib/arch_hardware.sh
linux_configuration/scripts/single_use/fixes/lib/arch_sysctl.sh
linux_configuration/scripts/single_use/fixes/lib/bt_adapter.sh
linux_configuration/scripts/single_use/fixes/lib/hosts_guard_migrate.sh
linux_configuration/scripts/single_use/fixes/lib/hosts_guard_rollback.sh
linux_configuration/scripts/single_use/fixes/lib/nvidia_config.sh
linux_configuration/scripts/single_use/fixes/lib/pacman_hook_stall_setup.sh
linux_configuration/scripts/single_use/fixes/lib/thorium_repairs.sh
linux_configuration/scripts/single_use/fixes/lib/ubuntu_perf_fixes.sh
linux_configuration/scripts/single_use/fresh-install/lib/packages.sh
linux_configuration/scripts/single_use/lib/joplin_server.sh
linux_configuration/scripts/single_use/misc/testsAndMisc-bash/lib/clean_audio_filters.sh
linux_configuration/scripts/single_use/misc/testsAndMisc-bash/lib/transcribe_deps.sh
linux_configuration/scripts/single_use/misc/testsAndMisc-bash/lib/transcribe_pkgmgr.sh
meta/lib/lint_full_tools.sh
meta/lib/lint_output.sh
meta/scripts/lib/disk_cleanup_common.sh
meta/scripts/lib/trace_prefix.sh
meta/scripts/lib/trace_stubs.sh
phone_focus_mode/lib/adb_common.sh
phone_focus_mode/lib/adb_locking.sh
phone_focus_mode/lib/adb_trusted.sh
phone_focus_mode/lib/backup_capture.sh
phone_focus_mode/lib/backup.sh
phone_focus_mode/lib/monitor_checks_health.sh
phone_focus_mode/lib/monitor_checks_policy.sh
phone_focus_mode/lib/monitor.sh
phone_focus_mode/lib/restore.sh