feat: mergeConfig 保留 metadata 字段

This commit is contained in:
2026-06-09 20:08:10 +08:00
parent c9e2ff1c42
commit 909c29db25
2 changed files with 39 additions and 0 deletions

View File

@@ -94,6 +94,10 @@ function mergeConfig(userConfig: Partial<RuneConfig>): RuneConfig {
}
}
if (userConfig.metadata) {
result.metadata = userConfig.metadata;
}
return result;
}

View File

@@ -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 });
}
});
});