import assert from 'node:assert/strict'; import net from 'node:net'; import test from 'node:test'; import { checkLocalRedis } from './run-test-api.mjs'; function listenOnLoopback() { const server = net.createServer(); return new Promise((resolve, reject) => { server.once('error', reject); server.listen(0, '127.0.0.1', () => resolve(server)); }); } function closeServer(server) { return new Promise((resolve, reject) => { server.close((error) => (error ? reject(error) : resolve())); }); } test('Redis 不可达时给出外部服务提示并拒绝启动', async () => { const server = await listenOnLoopback(); const address = server.address(); assert.ok(address && typeof address !== 'string'); await closeServer(server); await assert.rejects( checkLocalRedis({ host: '127.0.0.1', port: address.port, timeoutMs: 100 }), /本机 Redis.*127\.0\.0\.1:6379.*启动后重试/, ); }); test('Redis TCP 可达时预检通过', async (context) => { const server = await listenOnLoopback(); context.after(() => closeServer(server)); const address = server.address(); assert.ok(address && typeof address !== 'string'); await assert.doesNotReject(() => checkLocalRedis({ host: '127.0.0.1', port: address.port, timeoutMs: 100 }), ); });