Files
brain/tools/run-if-exists.test.mjs
T
Дмитрий 06441fd79b fix(hooks): gitleaks-full-history чисто пропускается без бинаря (шелл-агностичный guard, без exit-127)
Хрупкий guard `test -f ./bin/gitleaks.exe || exit 0` падал exit-127, когда команда test недоступна
в шелле git-хука → шаг pre-push падал вместо чистого пропуска. Новый tools/run-if-exists.mjs (node,
всегда доступен в контексте хука): бинарь отсутствует → skip exit 0; присутствует → запуск с
пробросом кода. lefthook gitleaks-full-history переведён на него. Разведка: bin/gitleaks.exe и
.gitleaks.toml в репо отсутствуют → реальный скан невозможен, наблюдался именно exit-127, не
настоящая находка; .gitleaksignore без бинаря/конфига/отпечатков не составить. gitleaks #1 и lychee
#14 — тот же паттерн, отдельный инфра-долг. Эпик роутер-реестр этап 3, item 6.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 10:02:47 +03:00

19 lines
785 B
JavaScript

// tools/run-if-exists.test.mjs
import { describe, it, expect } from 'vitest';
import { shouldRun } from './run-if-exists.mjs';
describe('shouldRun (D1) — шелл-агностичный guard', () => {
it('несуществующий путь → false (пропуск)', () => {
expect(shouldRun('bin/nope.exe', { existsSync: () => false })).toBe(false);
});
it('существующий путь → true (запуск)', () => {
expect(shouldRun('bin/gitleaks.exe', { existsSync: () => true })).toBe(true);
});
it('пустой путь → false', () => {
expect(shouldRun('', { existsSync: () => true })).toBe(false);
});
it('undefined путь → false', () => {
expect(shouldRun(undefined, { existsSync: () => true })).toBe(false);
});
});