Files
ForgeFlow/tests/tool-invocation.test.mjs
T
2026-07-24 20:29:23 +02:00

42 lines
1.4 KiB
JavaScript

import test from 'node:test';
import assert from 'node:assert/strict';
import toolInvocation from '../src/shared/tool-invocation.cjs';
const { npmProbeCandidates } = toolInvocation;
test('uses npm CLI through Node when doctor is launched by npm on Windows', () => {
const candidates = npmProbeCandidates({
platform: 'win32',
execPath: 'C:\\Program Files\\nodejs\\node.exe',
env: {
npm_execpath: 'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js',
npm_node_execpath: 'C:\\Program Files\\nodejs\\node.exe',
ComSpec: 'C:\\Windows\\System32\\cmd.exe'
}
});
assert.deepEqual(candidates[0], {
file: 'C:\\Program Files\\nodejs\\node.exe',
args: ['C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js', '--version'],
source: 'npm_execpath'
});
});
test('falls back to cmd.exe for npm command shims on Windows', () => {
const candidates = npmProbeCandidates({
platform: 'win32',
execPath: 'C:\\Program Files\\nodejs\\node.exe',
env: { ComSpec: 'C:\\Windows\\System32\\cmd.exe' }
});
assert.deepEqual(candidates, [{
file: 'C:\\Windows\\System32\\cmd.exe',
args: ['/d', '/s', '/c', 'npm --version'],
source: 'windows-command-shim'
}]);
});
test('uses npm directly on non-Windows systems', () => {
assert.deepEqual(npmProbeCandidates({ platform: 'linux', env: {}, execPath: '/usr/bin/node' }), [
{ file: 'npm', args: ['--version'], source: 'path' }
]);
});