kimi-code/packages/server-e2e/test/log.ts
haozhe.yang 9770f22c93 feat(server)!: rename daemon to server with service management
- rename workspace package `@moonshot-ai/daemon` to `@moonshot-ai/server`\n- rename `@moonshot-ai/daemon-e2e` to `@moonshot-ai/server-e2e`\n- replace `kimi daemon` and `kimi web` with `kimi server run`\n- keep `kimi web` as alias for `kimi server run --open`\n- add `kimi server install/uninstall/start/stop/restart/status`\n  for launchd (darwin), systemd (linux), and schtasks (win32)\n- update dev scripts, kimi-web stub, documentation, and service naming checks\n\nBREAKING CHANGE: the `kimi daemon` command and `@moonshot-ai/daemon`\npackage are removed; use `kimi server` and `@moonshot-ai/server`.
2026-06-11 16:44:41 +08:00

59 lines
1.4 KiB
TypeScript

import { onTestFailed, onTestFinished } from 'vitest';
import { recordReportEvent, setActiveReportCase } from '../src/report.js';
export function createCaseLogger(caseName: string): (label: string, value?: unknown) => void {
setActiveReportCase(caseName);
let failed = false;
onTestFailed((error) => {
failed = true;
recordReportEvent({
kind: 'test-result',
caseName,
state: 'failed',
error: errorForLog(error),
});
});
onTestFinished(() => {
if (failed) return;
recordReportEvent({
kind: 'test-result',
caseName,
state: 'passed',
});
});
return (label, value) => {
recordReportEvent({ kind: 'log', caseName, label, value });
const prefix = `[server-e2e] ${caseName} :: ${label}`;
if (value === undefined) {
writeLogLine(prefix);
return;
}
writeLogLine(`${prefix}\n${stringifyForLog(value)}`);
};
}
export function errorForLog(error: unknown): unknown {
if (error instanceof Error) {
return {
name: error.name,
message: error.message,
...objectFields(error),
};
}
return error;
}
function objectFields(value: object): Record<string, unknown> {
return Object.fromEntries(
Object.entries(value).filter(([, field]) => field !== undefined),
);
}
function stringifyForLog(value: unknown): string {
return JSON.stringify(value, null, 2);
}
function writeLogLine(line: string): void {
process.stdout.write(`${line}\n`);
}