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:
Affaan Mustafa
2026-02-13 07:35:20 -08:00
parent 5031a84d6e
commit 567664091d
3 changed files with 79 additions and 0 deletions

View File

@@ -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}`);

View File

@@ -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);

View File

@@ -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}`);