test: add packageManager version format and sequential save integrity tests

This commit is contained in:
Affaan Mustafa
2026-02-13 05:04:58 -08:00
parent 4f7b50fb78
commit 71e86cc93f
2 changed files with 49 additions and 0 deletions

View File

@@ -1164,6 +1164,38 @@ function runTests() {
}
})) passed++; else failed++;
// ── Round 48: detectFromPackageJson format edge cases ──
console.log('\nRound 48: detectFromPackageJson (version format edge cases):');
if (test('returns null for packageManager with non-@ separator', () => {
const testDir = createTestDir();
try {
fs.writeFileSync(path.join(testDir, 'package.json'), JSON.stringify({
name: 'test',
packageManager: 'pnpm+8.6.0'
}));
const result = pm.detectFromPackageJson(testDir);
// split('@') on 'pnpm+8.6.0' returns ['pnpm+8.6.0'], which doesn't match PACKAGE_MANAGERS
assert.strictEqual(result, null, 'Non-@ format should not match any package manager');
} finally {
cleanupTestDir(testDir);
}
})) passed++; else failed++;
if (test('extracts package manager from caret version like yarn@^4.0.0', () => {
const testDir = createTestDir();
try {
fs.writeFileSync(path.join(testDir, 'package.json'), JSON.stringify({
name: 'test',
packageManager: 'yarn@^4.0.0'
}));
const result = pm.detectFromPackageJson(testDir);
assert.strictEqual(result, 'yarn', 'Caret version should still extract PM name');
} finally {
cleanupTestDir(testDir);
}
})) passed++; else failed++;
// Summary
console.log('\n=== Test Results ===');
console.log(`Passed: ${passed}`);