Files
a-share-analysis/tools/runtime/verify-runtime.test.mjs
T

38 lines
1.3 KiB
JavaScript

import assert from 'node:assert/strict';
import test from 'node:test';
import { assertSupportedRuntime } from './verify-runtime.mjs';
test('接受完整 Node.js 22.x 并拒绝相邻主版本', () => {
for (const nodeVersion of ['22.0.0', '22.11.0', '22.99.123-beta.1+build.7']) {
assert.doesNotThrow(() => assertSupportedRuntime({ nodeVersion, pnpmVersion: '10.25.0' }));
}
for (const nodeVersion of ['21.7.3', '23.0.0']) {
assert.throws(
() => assertSupportedRuntime({ nodeVersion, pnpmVersion: '10.25.0' }),
new RegExp(`Node\\.js 必须为 22\\.x,实际 ${nodeVersion.replaceAll('.', '\\.')}`),
);
}
});
test('只接受 pnpm 10.x', () => {
for (const pnpmVersion of ['9.15.0', '11.0.0']) {
assert.throws(
() => assertSupportedRuntime({ nodeVersion: '22.11.0', pnpmVersion }),
new RegExp(`pnpm 必须为 10\\.x,实际 ${pnpmVersion.replaceAll('.', '\\.')}`),
);
}
});
test('拒绝无法解析的运行时版本', () => {
for (const runtime of [
{ nodeVersion: '', pnpmVersion: '10.25.0' },
{ nodeVersion: 'v22', pnpmVersion: '10.25.0' },
{ nodeVersion: '22.11.0', pnpmVersion: '' },
{ nodeVersion: '22.11.0', pnpmVersion: 'ten' },
]) {
assert.throws(() => assertSupportedRuntime(runtime), /版本格式无效/);
}
});