This commit is contained in:
2026-07-21 13:25:03 +08:00 Unverified
parent ae528b20e9
commit 1b6e860013
5 changed files with 35 additions and 8 deletions
+14 -3
View File
@@ -2,6 +2,7 @@ import { spawn } from 'node:child_process';
import { pbkdf2Sync, randomBytes } from 'node:crypto';
import { readFile, rm } from 'node:fs/promises';
import { resolve } from 'node:path';
import { createServer as createNetServer } from 'node:net';
import assert from 'node:assert/strict';
import ExcelJS from 'exceljs';
import { createDatabase, relationalTables } from '../database.mjs';
@@ -13,7 +14,14 @@ import { buildCenterMaterialsWorkbook, buildWorkbook } from '../excel.mjs';
const root = resolve(process.cwd());
assert.equal(totpAtStep('GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ', 1), '287082', 'TOTP 实现应符合 RFC 6238 SHA-1 测试向量的 6 位结果');
const port = 4182;
const port = await new Promise((resolvePort, rejectPort) => {
const probe = createNetServer();
probe.once('error', rejectPort);
probe.listen(0, '127.0.0.1', () => {
const selectedPort = probe.address().port;
probe.close(error => error ? rejectPort(error) : resolvePort(selectedPort));
});
});
const baseUrl = `http://127.0.0.1:${port}`;
const testDb = resolve(root, 'data', 'test-db.sqlite');
const mysqlRuleSchemas = mysqlSchema.filter(statement => /CREATE TABLE IF NOT EXISTS (?:admission_number_rules|number_rules)\b/.test(statement));
@@ -961,8 +969,11 @@ try {
console.log('✓ 成绩录入、发布与考生查询');
console.log('✓ 成绩复议、班级审批、范围匹配与多人均分');
} finally {
server.kill('SIGTERM');
await new Promise(resolveWait => server.once('exit', resolveWait));
if (server.exitCode == null && server.signalCode == null) {
const serverExit = new Promise(resolveWait => server.once('exit', resolveWait));
server.kill('SIGTERM');
await serverExit;
}
await rm(testDb, { force: true });
await rm(`${testDb}-shm`, { force: true });
await rm(`${testDb}-wal`, { force: true });