mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-22 15:31:07 +00:00
fix(config): tighten json and json5 parsing paths (#51153)
This commit is contained in:
@@ -442,6 +442,15 @@ describe("config cli", () => {
|
||||
expect(mockReadConfigFileSnapshot).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("rejects JSON5-only object syntax when strict parsing is enabled", async () => {
|
||||
await expect(
|
||||
runConfigCommand(["config", "set", "gateway.auth", "{mode:'token'}", "--strict-json"]),
|
||||
).rejects.toThrow("__exit__:1");
|
||||
|
||||
expect(mockWriteConfigFile).not.toHaveBeenCalled();
|
||||
expect(mockReadConfigFileSnapshot).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("accepts --strict-json with batch mode and applies batch payload", async () => {
|
||||
const resolved: OpenClawConfig = { gateway: { port: 18789 } };
|
||||
setSnapshot(resolved, resolved);
|
||||
@@ -470,6 +479,8 @@ describe("config cli", () => {
|
||||
expect(helpText).toContain("--strict-json");
|
||||
expect(helpText).toContain("--json");
|
||||
expect(helpText).toContain("Legacy alias for --strict-json");
|
||||
expect(helpText).toContain("Value (JSON/JSON5 or raw string)");
|
||||
expect(helpText).toContain("Strict JSON parsing (error instead of");
|
||||
expect(helpText).toContain("--ref-provider");
|
||||
expect(helpText).toContain("--provider-source");
|
||||
expect(helpText).toContain("--batch-json");
|
||||
|
||||
@@ -159,9 +159,9 @@ function parseValue(raw: string, opts: ConfigSetParseOpts): unknown {
|
||||
const trimmed = raw.trim();
|
||||
if (opts.strictJson) {
|
||||
try {
|
||||
return JSON5.parse(trimmed);
|
||||
return JSON.parse(trimmed);
|
||||
} catch (err) {
|
||||
throw new Error(`Failed to parse JSON5 value: ${String(err)}`, { cause: err });
|
||||
throw new Error(`Failed to parse JSON value: ${String(err)}`, { cause: err });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1280,8 +1280,8 @@ export function registerConfigCli(program: Command) {
|
||||
.command("set")
|
||||
.description(CONFIG_SET_DESCRIPTION)
|
||||
.argument("[path]", "Config path (dot or bracket notation)")
|
||||
.argument("[value]", "Value (JSON5 or raw string)")
|
||||
.option("--strict-json", "Strict JSON5 parsing (error instead of raw string fallback)", false)
|
||||
.argument("[value]", "Value (JSON/JSON5 or raw string)")
|
||||
.option("--strict-json", "Strict JSON parsing (error instead of raw string fallback)", false)
|
||||
.option("--json", "Legacy alias for --strict-json", false)
|
||||
.option(
|
||||
"--dry-run",
|
||||
|
||||
Reference in New Issue
Block a user