feat: mergeConfig 保留 metadata 字段
This commit is contained in:
@@ -94,6 +94,10 @@ function mergeConfig(userConfig: Partial<RuneConfig>): RuneConfig {
|
||||
}
|
||||
}
|
||||
|
||||
if (userConfig.metadata) {
|
||||
result.metadata = userConfig.metadata;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@@ -170,3 +170,38 @@ describe("validateConfig", () => {
|
||||
expect(() => validateConfig(config)).not.toThrow();
|
||||
});
|
||||
});
|
||||
|
||||
describe("mergeConfig 保留 metadata", () => {
|
||||
it("保留用户配置中的 metadata", async () => {
|
||||
const tmpDir = join(import.meta.dir, "__tmp_config_meta_test__");
|
||||
await mkdir(tmpDir, { recursive: true });
|
||||
try {
|
||||
const configPath = join(tmpDir, ".rune", "config.yaml");
|
||||
await mkdir(join(tmpDir, ".rune"), { recursive: true });
|
||||
await writeFile(
|
||||
configPath,
|
||||
`metadata:\n command: "bunx @lanyuanxiaoyao/rune"\nstages:\n discuss:\n prompt: "自定义讨论"\n`,
|
||||
);
|
||||
const config = await loadConfig(tmpDir);
|
||||
expect(config.metadata).toBeDefined();
|
||||
expect(config.metadata!.command).toBe("bunx @lanyuanxiaoyao/rune");
|
||||
expect(config.stages.discuss!.prompt).toBe("自定义讨论");
|
||||
} finally {
|
||||
await rm(tmpDir, { recursive: true, force: true });
|
||||
}
|
||||
});
|
||||
|
||||
it("无 metadata 时不设置该字段", async () => {
|
||||
const tmpDir = join(import.meta.dir, "__tmp_config_nometa_test__");
|
||||
await mkdir(tmpDir, { recursive: true });
|
||||
try {
|
||||
const configPath = join(tmpDir, ".rune", "config.yaml");
|
||||
await mkdir(join(tmpDir, ".rune"), { recursive: true });
|
||||
await writeFile(configPath, `stages:\n discuss:\n prompt: "测试"\n`);
|
||||
const config = await loadConfig(tmpDir);
|
||||
expect(config.metadata).toBeUndefined();
|
||||
} finally {
|
||||
await rm(tmpDir, { recursive: true, force: true });
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user