import { describe, expect, it } from "vitest" ;
import type { OpenClawConfig } from "../config/config.js" ;
import {
isDiagnosticFlagEnabled,
matchesDiagnosticFlag,
resolveDiagnosticFlags,
} from "./diagnostic-flags.js" ;
describe("resolveDiagnosticFlags" , () => {
it("normalizes and dedupes config and env flags" , () => {
const cfg = {
diagnostics: { flags: [" Telegram.Http " , "cache.*" , "CACHE.*" ] },
} as OpenClawConfig;
const env = {
OPENCLAW_DIAGNOSTICS: " foo, Cache.* telegram.http " ,
} as NodeJS.ProcessEnv;
expect(resolveDiagnosticFlags(cfg, env)).toEqual(["telegram.http" , "cache.*" , "foo" ]);
});
it("treats false-like env values as no extra flags" , () => {
const cfg = {
diagnostics: { flags: ["telegram.http" ] },
} as OpenClawConfig;
for (const raw of ["0" , "false" , "off" , "none" , " " ]) {
expect(
resolveDiagnosticFlags(cfg, {
OPENCLAW_DIAGNOSTICS: raw,
} as NodeJS.ProcessEnv),
).toEqual(["telegram.http" ]);
}
});
});
describe("matchesDiagnosticFlag" , () => {
it("matches exact, namespace, prefix, and wildcard rules" , () => {
expect(matchesDiagnosticFlag("telegram.http" , ["telegram.http" ])).toBe(true );
expect(matchesDiagnosticFlag("cache" , ["cache.*" ])).toBe(true );
expect(matchesDiagnosticFlag("cache.hit" , ["cache.*" ])).toBe(true );
expect(matchesDiagnosticFlag("tool.exec.fast" , ["tool.exec*" ])).toBe(true );
expect(matchesDiagnosticFlag("anything" , ["all" ])).toBe(true );
expect(matchesDiagnosticFlag("anything" , ["*" ])).toBe(true );
});
it("rejects blank and non-matching flags" , () => {
expect(matchesDiagnosticFlag(" " , ["*" ])).toBe(false );
expect(matchesDiagnosticFlag("cache.hit" , ["cache.miss" , "tool.*" ])).toBe(false );
});
});
describe("isDiagnosticFlagEnabled" , () => {
it("resolves config and env together before matching" , () => {
const cfg = {
diagnostics: { flags: ["gateway.*" ] },
} as OpenClawConfig;
const env = {
OPENCLAW_DIAGNOSTICS: "telegram.http" ,
} as NodeJS.ProcessEnv;
expect(isDiagnosticFlagEnabled("gateway.ws" , cfg, env)).toBe(true );
expect(isDiagnosticFlagEnabled("telegram.http" , cfg, env)).toBe(true );
expect(isDiagnosticFlagEnabled("slack.http" , cfg, env)).toBe(false );
});
});
Messung V0.5 in Prozent C=100 H=91 G=95
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-06-09)
¤
*© Formatika GbR, Deutschland