import assert from 'node:assert/strict'; import test from 'node:test'; import { assertSupportedRuntime } from './verify-runtime.mjs'; test('只接受 Node 22 与 pnpm 10', () => { assert.doesNotThrow(() => assertSupportedRuntime({ nodeVersion: '22.11.0', pnpmVersion: '10.25.0' }), ); for (const nodeVersion of ['20.20.2', '24.0.0']) { assert.throws( () => assertSupportedRuntime({ nodeVersion, pnpmVersion: '10.25.0' }), new RegExp(`Node\\.js 必须为 22\\.x,实际 ${nodeVersion.replaceAll('.', '\\.')}`), ); } 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), /版本格式无效/); } });