mirror of
https://github.com/glittercowboy/get-shit-done
synced 2026-04-25 17:25:23 +02:00
* fix(install): remove bare ~/.claude reference in update.md (closes #2470) The installer's copyWithPathReplacement() replaces ~/\.claude\/ (with trailing slash) but not ~/\.claude (bare, no trailing slash). A comment on line 398 of update.md used the bare form, which scanForLeakedPaths() correctly flagged for every non-Claude runtime install. Replaced the example in the comment with a non-Claude runtime path so the file passes the scanner for all runtimes. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(test): align regex with installer's word-boundary semantics (CodeRabbit #2482) Replace negative lookahead (?!\/) with \b word boundary to match the installer's scanForLeakedPaths() pattern. The lookahead would incorrectly flag ~/.claude_suffix whereas \b correctly excludes it. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(test): revert \b regex — (?!\/) was intentionally scoped to bare refs The installer's scanForLeakedPaths uses \b but the test is specifically checking for bare ~/.claude without trailing slash that the replacer misses. ~/.claude/ (with slash) at line 359 of update.md is expected and handled. \b would flag it as a false positive. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(inventory): update workflow count to 81 (graduation.md added in #2490) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
37 lines
1.5 KiB
JavaScript
37 lines
1.5 KiB
JavaScript
'use strict';
|
|
|
|
/**
|
|
* Regression test for #2470.
|
|
*
|
|
* update.md is installed into every runtime directory including .gemini, .codex,
|
|
* .opencode, etc. The installer's scanForLeakedPaths() uses the regex
|
|
* /(?:~|\$HOME)\/\.claude\b/g to detect unresolved .claude path references after
|
|
* copyWithPathReplacement() runs. The replacer handles "~/.claude/" (trailing slash)
|
|
* but not "~/.claude" (bare, no trailing slash) — so any bare reference in
|
|
* update.md would slip through and trigger the installer warning for non-Claude runtimes.
|
|
*/
|
|
|
|
const { test, describe } = require('node:test');
|
|
const assert = require('node:assert/strict');
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
const UPDATE_MD = path.join(__dirname, '..', 'get-shit-done', 'workflows', 'update.md');
|
|
|
|
describe('update.md — no bare ~.claude path references (#2470)', () => {
|
|
const content = fs.readFileSync(UPDATE_MD, 'utf-8');
|
|
|
|
test('update.md does not contain bare ~/\\.claude (without trailing slash)', () => {
|
|
// This is the exact pattern from the installer's scanForLeakedPaths():
|
|
// /(?:~|\$HOME)\/\.claude\b/g
|
|
// The replacer handles ~/\.claude\/ (with trailing slash) but misses bare ~/\.claude
|
|
// so we must not have bare references in the source file.
|
|
const matches = content.match(/(?:~|\$HOME)\/\.claude(?!\/)/g);
|
|
assert.strictEqual(
|
|
matches,
|
|
null,
|
|
`update.md must not contain bare ~/\.claude (without trailing slash) — installer scanner flags these as unresolved path refs: ${JSON.stringify(matches)}`
|
|
);
|
|
});
|
|
});
|