mirror of
https://github.com/affaan-m/everything-claude-code.git
synced 2026-03-30 13:43:26 +08:00
test: add 3 tests for untested code paths (Round 69, 812 total)
- getGitModifiedFiles: all-invalid patterns skip filtering (compiled.length === 0) - getSessionById: returns null when sessions directory doesn't exist - getPackageManager: global-config success path returns source 'global-config'
This commit is contained in:
@@ -1230,6 +1230,45 @@ function runTests() {
|
||||
}
|
||||
})) passed++; else failed++;
|
||||
|
||||
// ── Round 69: getPackageManager global-config success path ──
|
||||
console.log('\nRound 69: getPackageManager (global-config success):');
|
||||
|
||||
if (test('getPackageManager returns source global-config when valid global config exists', () => {
|
||||
const tmpDir = createTestDir();
|
||||
const projDir = path.join(tmpDir, 'proj');
|
||||
fs.mkdirSync(projDir, { recursive: true });
|
||||
const origHome = process.env.HOME;
|
||||
const origUserProfile = process.env.USERPROFILE;
|
||||
const origPM = process.env.CLAUDE_PACKAGE_MANAGER;
|
||||
try {
|
||||
// Create valid global config with pnpm preference
|
||||
const claudeDir = path.join(tmpDir, '.claude');
|
||||
fs.mkdirSync(claudeDir, { recursive: true });
|
||||
fs.writeFileSync(path.join(claudeDir, 'package-manager.json'),
|
||||
JSON.stringify({ packageManager: 'pnpm', setAt: '2026-01-01T00:00:00Z' }), 'utf8');
|
||||
process.env.HOME = tmpDir;
|
||||
process.env.USERPROFILE = tmpDir;
|
||||
delete process.env.CLAUDE_PACKAGE_MANAGER;
|
||||
// Re-require to pick up new HOME
|
||||
delete require.cache[require.resolve('../../scripts/lib/package-manager')];
|
||||
delete require.cache[require.resolve('../../scripts/lib/utils')];
|
||||
const freshPM = require('../../scripts/lib/package-manager');
|
||||
// Empty project dir: no lock file, no package.json, no project config
|
||||
const result = freshPM.getPackageManager({ projectDir: projDir });
|
||||
assert.strictEqual(result.name, 'pnpm', 'Should detect pnpm from global config');
|
||||
assert.strictEqual(result.source, 'global-config', 'Source should be global-config');
|
||||
assert.ok(result.config, 'Should include config object');
|
||||
assert.strictEqual(result.config.lockFile, 'pnpm-lock.yaml', 'Config should match pnpm');
|
||||
} finally {
|
||||
process.env.HOME = origHome;
|
||||
process.env.USERPROFILE = origUserProfile;
|
||||
if (origPM !== undefined) process.env.CLAUDE_PACKAGE_MANAGER = origPM;
|
||||
delete require.cache[require.resolve('../../scripts/lib/package-manager')];
|
||||
delete require.cache[require.resolve('../../scripts/lib/utils')];
|
||||
cleanupTestDir(tmpDir);
|
||||
}
|
||||
})) passed++; else failed++;
|
||||
|
||||
// Summary
|
||||
console.log('\n=== Test Results ===');
|
||||
console.log(`Passed: ${passed}`);
|
||||
|
||||
@@ -1181,6 +1181,32 @@ src/main.ts
|
||||
}
|
||||
})) passed++; else failed++;
|
||||
|
||||
// ── Round 69: getSessionById returns null when sessions dir missing ──
|
||||
console.log('\nRound 69: getSessionById (missing sessions directory):');
|
||||
|
||||
if (test('getSessionById returns null when sessions directory does not exist', () => {
|
||||
const tmpDir = createTempSessionDir();
|
||||
const origHome = process.env.HOME;
|
||||
const origUserProfile = process.env.USERPROFILE;
|
||||
try {
|
||||
// Point HOME to a dir with no .claude/sessions/
|
||||
process.env.HOME = tmpDir;
|
||||
process.env.USERPROFILE = tmpDir;
|
||||
// Re-require to pick up new HOME
|
||||
delete require.cache[require.resolve('../../scripts/lib/session-manager')];
|
||||
delete require.cache[require.resolve('../../scripts/lib/utils')];
|
||||
const freshSM = require('../../scripts/lib/session-manager');
|
||||
const result = freshSM.getSessionById('anything');
|
||||
assert.strictEqual(result, null, 'Should return null when sessions dir does not exist');
|
||||
} finally {
|
||||
process.env.HOME = origHome;
|
||||
process.env.USERPROFILE = origUserProfile;
|
||||
delete require.cache[require.resolve('../../scripts/lib/session-manager')];
|
||||
delete require.cache[require.resolve('../../scripts/lib/utils')];
|
||||
cleanup(tmpDir);
|
||||
}
|
||||
})) passed++; else failed++;
|
||||
|
||||
// Summary
|
||||
console.log(`\nResults: Passed: ${passed}, Failed: ${failed}`);
|
||||
process.exit(failed > 0 ? 1 : 0);
|
||||
|
||||
@@ -1048,6 +1048,20 @@ function runTests() {
|
||||
}
|
||||
})) passed++; else failed++;
|
||||
|
||||
// ── Round 69: getGitModifiedFiles with ALL invalid patterns ──
|
||||
console.log('\ngetGitModifiedFiles all-invalid patterns (Round 69):');
|
||||
|
||||
if (test('getGitModifiedFiles with all-invalid patterns skips filtering (returns all files)', () => {
|
||||
// When every pattern is invalid regex, compiled.length === 0 at line 386,
|
||||
// so the filtering is skipped entirely and all modified files are returned.
|
||||
// This differs from the mixed-valid test where at least one pattern compiles.
|
||||
const allInvalid = utils.getGitModifiedFiles(['(unclosed', '[bad', '**invalid']);
|
||||
const unfiltered = utils.getGitModifiedFiles();
|
||||
// Both should return the same list — all-invalid patterns = no filtering
|
||||
assert.deepStrictEqual(allInvalid, unfiltered,
|
||||
'All-invalid patterns should return same result as no patterns (no filtering)');
|
||||
})) passed++; else failed++;
|
||||
|
||||
// Summary
|
||||
console.log('\n=== Test Results ===');
|
||||
console.log(`Passed: ${passed}`);
|
||||
|
||||
Reference in New Issue
Block a user