1
0
Files
DiAL/tests/server/checker/runner/registry.test.ts
lanyuanxiaoyao a5cf6065c2 chore: 强化代码质量与风格检查体系
ESLint 升级到 recommended-type-checked + stylistic-type-checked,
引入 perfectionist 导入排序和 import 插件导入验证。

Prettier 显式声明全部格式化参数,消除跨环境差异。
TypeScript 启用 noUnusedLocals 和 noPropertyAccessFromIndexSignature。
完善 ignore 列表,排除 .agents/、bun.lock、data/ 等。
引入 husky + lint-staged(pre-commit)+ commitlint(commit-msg)。
更新 DEVELOPMENT.md 代码质量章节。
修复所有新增规则检测到的类型和风格违规。
2026-05-12 18:44:59 +08:00

43 lines
1.5 KiB
TypeScript

import { describe, expect, test } from "bun:test";
import type { Checker } from "../../../../src/server/checker/runner/types";
import type { CheckResult, ResolvedTarget } from "../../../../src/server/checker/types";
import { CheckerRegistry } from "../../../../src/server/checker/runner/registry";
function createChecker(type: string): Checker {
return {
execute: () => Promise.resolve<CheckResult>({} as unknown as CheckResult),
resolve: () => ({}) as unknown as ResolvedTarget,
serialize: () => ({ config: "", target: "" }),
type,
};
}
describe("CheckerRegistry", () => {
test("注册并获取 Checker", () => {
const registry = new CheckerRegistry();
const checker = createChecker("http");
registry.register(checker);
expect(registry.get("http")).toBe(checker);
});
test("获取未注册的 type 抛出错误", () => {
const registry = new CheckerRegistry();
expect(() => registry.get("unknown")).toThrow("不支持的 probe type");
});
test("重复注册同一 type 抛出错误", () => {
const registry = new CheckerRegistry();
registry.register(createChecker("http"));
expect(() => registry.register(createChecker("http"))).toThrow("已注册");
});
test("查询支持的 type 列表", () => {
const registry = new CheckerRegistry();
registry.register(createChecker("http"));
registry.register(createChecker("command"));
expect(registry.supportedTypes).toEqual(["http", "command"]);
});
});