ECC/tests/hooks
djpjronline-netizen 837acaf20b
fix(hooks,lib): fix hook detection and parsing edge cases (#2405)
* fix(hooks,lib): fix hook detection and parsing edge cases

- auto-tmux-dev: dev\b -> dev(?![\w-]) so one-shot dev-build/dev-docs scripts
  are not detached into tmux; align command shapes (yarn run dev, bun dev) with
  pre-bash-dev-server-block.js DEV_PATTERN.
- pre-bash-commit-quality: skip obvious non-secret placeholders (env refs,
  ${...}, <...>, whitelisted tokens) in the api-key rule without suppressing
  real high-entropy secrets; make -m message extraction quote- and
  escaped-quote-aware so `-m "fix: \"x\""` / apostrophes are not truncated.
- pre-compact: annotate the CURRENT worktree's session (match **Worktree:** /
  legacy **Project:**) instead of the newest *-session.tmp across all projects,
  layered onto the LLM-summary flow from #2388; a present-but-blank Worktree
  header is treated as non-legacy (no foreign project fallback).
- shell-substitution: stop double-appending a trailing backslash in an
  unterminated backtick span.
- utils readStdinJson: on overflow, settle and resolve {} immediately (clear
  timer + listeners) instead of waiting for end/timeout and parsing a partial
  prefix; surface the overflow on stderr.

Regression tests added/extended (new tests/hooks/pre-compact.test.js).

Addresses review feedback on #2405. The earlier block-no-verify change was
dropped: its message-value skip on merge/cherry-pick/am/rebase would let
`git rebase -m --no-verify` bypass the hook (rebase's -m is the boolean
--merge), a false-negative worse than the contrived false-positive it fixed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(ci): align hook fixtures and drain oversized stdin

---------

Co-authored-by: djpjronline-netizen <276112803+djpjronline-netizen@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: haelyra <49814733+haelyra@users.noreply.github.com>
2026-07-28 21:32:42 -04:00
..
auto-tmux-dev.test.js fix(hooks,lib): fix hook detection and parsing edge cases (#2405) 2026-07-28 21:32:42 -04:00
bash-hook-dispatcher.test.js fix(hooks): stop pre/post Bash dispatcher from echoing the input event (#2240) 2026-06-15 13:48:46 -04:00
block-no-verify.test.js fix: close block-no-verify bypass holes 2026-05-12 22:28:12 -04:00
check-hook-enabled.test.js feat: add C++ language support and hook tests (#539) 2026-03-16 14:31:49 -07:00
config-protection.test.js fix(config-protection): match protected filenames case-insensitively (#2543) 2026-07-22 12:17:04 -04:00
continuous-learning-observe-runner.test.js refactor(hooks): consolidate PostToolUse hooks into sync/async dispatchers (#2494) 2026-07-19 15:47:10 -04:00
continuous-learning-shebang-consistency.test.js chore(continuous-learning-v2): standardize shell shebangs to env bash (#2401) 2026-07-03 20:40:44 -07:00
cost-tracker.test.js fix(hooks): dedupe transcript usage by message.id in cost-tracker (~2.5-3x inflation) (#2483) 2026-07-27 11:14:47 -07:00
cursor-block-no-verify.test.js fix(.cursor/hooks): route block-no-verify through local hook to fix message-body false positives (#2107) (#2177) 2026-06-07 13:01:36 +08:00
design-quality-check.test.js feat: add web frontend rules and design quality hook 2026-04-02 17:33:17 -07:00
detect-project-nongit.test.js fix(continuous-learning-v2): honor non-git CLAUDE_PROJECT_DIR (#2488) 2026-07-26 00:04:35 -07:00
detect-project-worktree.test.js fix(learning): add project registry maintenance 2026-05-19 12:51:18 -04:00
doc-file-warning.test.js fix(hooks): guard doc-file-warning stdin listeners behind require.main (#2358) 2026-06-29 15:54:55 -07:00
ecc-context-monitor.test.js fix: add context monitor cost warning opt-out 2026-05-17 01:53:57 -04:00
ecc-metrics-bridge.test.js fix(hooks): stop false loop warnings and repeated identical context warnings (#2121) 2026-06-07 13:26:30 +08:00
ecc-statusline.test.js chore: update statusline ANSI color palette 2026-05-15 23:18:01 -04:00
evaluate-session.test.js fix: remove unused execFileSync import (no-unused-vars ESLint) 2026-02-18 07:15:53 +05:30
gateguard-fact-force.test.js feat(gateguard): add GATEGUARD_EXEMPT_GLOBS path exemptions (#2432) 2026-07-03 20:41:11 -07:00
governance-capture.test.js fix: resolve blocker PR validation regressions 2026-03-25 01:34:29 -04:00
hook-flags.test.js feat: add C++ language support and hook tests (#539) 2026-03-16 14:31:49 -07:00
hooks.test.js fix(hooks,lib): fix hook detection and parsing edge cases (#2405) 2026-07-28 21:32:42 -04:00
insaits-security-monitor.test.js test: skip insaits monitor subprocesses without python 2026-05-18 00:47:05 -04:00
insaits-security-wrapper.test.js test: harden InsAIts wrapper fake Python shim 2026-05-12 01:13:01 -04:00
mcp-health-check.test.js fix(hooks): quote args when probing Windows .cmd MCP servers via shell (#2343) 2026-06-29 15:54:52 -07:00
migrate-homunculus-home-escape.test.js fix(clv2): escape $HOME before pgrep -f in migrate-homunculus.sh (#2339) 2026-06-25 16:47:32 -07:00
observe-entrypoint-allowlist.test.js fix(continuous-learning-v2): accept claude-vscode as valid entrypoint (#2134) 2026-06-07 13:01:24 +08:00
observe-signal-counter-race.test.js fix: resolve open-issue cluster (#2295, #2298, #2303–#2306, #2340) + createdTime fallback bug (#2408) 2026-07-03 21:10:45 -07:00
observe-signal-timeout.test.js fix: resolve open-issue cluster (#2295, #2298, #2303–#2306, #2340) + createdTime fallback bug (#2408) 2026-07-03 21:10:45 -07:00
observe-subdirectory-detection.test.js fix(learning): add project registry maintenance 2026-05-19 12:51:18 -04:00
observer-loop-archive.test.js fix(clv2): archive observations only after successful analysis in observer-loop (#2386) 2026-06-29 18:43:37 -07:00
observer-loop-mktemp.test.js fix: resolve open-issue cluster (#2295, #2298, #2303–#2306, #2340) + createdTime fallback bug (#2408) 2026-07-03 21:10:45 -07:00
observer-memory.test.js fix: resolve open-issue cluster (#2295, #2298, #2303–#2306, #2340) + createdTime fallback bug (#2408) 2026-07-03 21:10:45 -07:00
plan-canvas-sessions-hook.test.js feat: Plan Canvas, a browser review canvas for plans (#2467) 2026-07-08 17:12:48 -04:00
plugin-hook-bootstrap.test.js fix(windows): prefer PowerShell over bash to prevent zombie process accumulation (#2346) 2026-06-29 15:54:58 -07:00
post-bash-hooks.test.js feat: add C++ language support and hook tests (#539) 2026-03-16 14:31:49 -07:00
posttooluse-dispatcher.test.js refactor(hooks): consolidate PostToolUse hooks into sync/async dispatchers (#2494) 2026-07-19 15:47:10 -04:00
pre-bash-commit-quality.test.js fix(hooks,lib): fix hook detection and parsing edge cases (#2405) 2026-07-28 21:32:42 -04:00
pre-bash-dev-server-block.test.js fix(dev-server-block): stop blocking dev-<suffix> scripts (#2179) 2026-06-07 13:25:39 +08:00
pre-bash-reminders.test.js fix: surface warn-only PreToolUse hooks (#2084) 2026-05-28 07:45:46 -04:00
pre-bash-tmux-reminder.test.js fix(hooks): remove stray '?' that made every 'yarn <anything>' fire tmux reminder (#2517) 2026-07-20 16:21:03 -04:00
pre-compact.test.js fix(hooks,lib): fix hook detection and parsing edge cases (#2405) 2026-07-28 21:32:42 -04:00
quality-gate.test.js feat: add C++ language support and hook tests (#539) 2026-03-16 14:31:49 -07:00
run-with-flags-truncation.test.js fix: stability batch — hook stdin truncation, Codex exa TOML, Stop hook JSON, GateGuard repetition (#2227) 2026-06-11 00:31:33 -04:00
session-activity-tracker.test.js test: cover session activity tracker edge paths 2026-04-29 18:15:51 -04:00
session-end.test.js fix(session-end): preserve $-sequences in user messages when rewriting summary (#2180) 2026-06-07 13:25:36 +08:00
stop-format-typecheck.test.js perf(hooks): batch format+typecheck at Stop instead of per Edit (#746) 2026-03-31 14:12:12 -07:00
stop-hooks-stdout.test.js fix(hooks): preserve Stop output through lifecycle wrappers (#2493) 2026-07-26 00:01:57 -07:00
suggest-compact.test.js fix: context-size /compact trigger, Codex marketplace plugin path, live README badges (#2237) 2026-06-11 16:21:53 -04:00
test_insaits_security_monitor.py test: cover hook bootstrap and InsAIts monitor 2026-04-29 17:45:22 -04:00