Spaces:
Running
Running
File size: 2,462 Bytes
96bdf6c 704e84f 96bdf6c 704e84f 96bdf6c 704e84f 96bdf6c 704e84f 96bdf6c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | import { isSupportedNodeVersion, MIN_NODE_VERSION_RANGE } from './node-version.mjs';
import assert from 'node:assert/strict';
import { readFile } from 'node:fs/promises';
import { describe, it } from 'node:test';
describe('Node runtime version support', () => {
it('keeps the declared minimum version aligned with runtime checks', async () => {
const packageJson = JSON.parse(await readFile(new URL('../package.json', import.meta.url), 'utf8'));
const customerGuide = await readFile(new URL('../客户使用说明.md', import.meta.url), 'utf8');
const changelog = await readFile(new URL('../CHANGELOG.md', import.meta.url), 'utf8');
assert.equal(MIN_NODE_VERSION_RANGE, '>=22.15.0');
assert.equal(packageJson.engines.node, MIN_NODE_VERSION_RANGE);
assert.equal(isSupportedNodeVersion('v22.14.99'), false);
assert.equal(isSupportedNodeVersion('v22.15.0'), true);
assert.equal(isSupportedNodeVersion('v22.15.0-rc.1'), false);
assert.equal(isSupportedNodeVersion('v22.15.0-nightly.20260716'), false);
assert.equal(isSupportedNodeVersion('v22.15.0+build.1'), true);
assert.equal(isSupportedNodeVersion('v22.15.1'), true);
assert.equal(isSupportedNodeVersion('v23.0.0'), true);
assert.equal(isSupportedNodeVersion('v21.99.99'), false);
assert.equal(isSupportedNodeVersion('invalid'), false);
assert.equal(customerGuide.match(/Node\.js 22\.15\.0 或更高版本/g)?.length, 2);
assert.doesNotMatch(customerGuide, /Node\.js 22 或更高版本/);
assert.match(changelog, /Node\.js 最低版本统一为 `22\.15\.0`/);
assert.doesNotMatch(changelog, /Node\.js 最低版本统一为 `20\.10\.0`/);
});
it('keeps every platform launcher on the shared minimum version check', async () => {
const launchers = await Promise.all(
['start-linux.sh', 'start-macos.sh', 'start-windows.bat'].map(async (filename) => ({
filename,
source: await readFile(new URL(`../${filename}`, import.meta.url), 'utf8')
}))
);
for (const launcher of launchers) {
assert.match(launcher.source, /scripts[\\/]node-version\.mjs/, launcher.filename);
assert.match(launcher.source, /22\.15\.0/, launcher.filename);
assert.doesNotMatch(launcher.source, /NODE_MAJOR|split\(['"]\.['"]\)/, launcher.filename);
}
});
});
|