fix(test): guard kitchen sink rpc cli args · openclaw/openclaw@49b0487
vincentkoc
·
2026-06-20
·
via Recent Commits to openclaw:main
| Original file line number | Diff line number | Diff line change |
|---|
@@ -85,6 +85,15 @@ export function shouldPrintHelp(argv) {
|
85 | 85 | return argv.some((arg) => arg === "--help" || arg === "-h"); |
86 | 86 | } |
87 | 87 | |
| 88 | +export function validateCliArgs(argv) { |
| 89 | +for (const arg of argv) { |
| 90 | +if (arg === "--help" || arg === "-h") { |
| 91 | +continue; |
| 92 | +} |
| 93 | +throw new Error(`Unknown argument: ${arg}`); |
| 94 | +} |
| 95 | +} |
| 96 | + |
88 | 97 | export function readPositiveInt(raw, fallback, label = "value") { |
89 | 98 | const text = String(raw || "").trim(); |
90 | 99 | if (!text) { |
@@ -2597,9 +2606,16 @@ export async function main() {
|
2597 | 2606 | } |
2598 | 2607 | |
2599 | 2608 | if (process.argv[1] && path.resolve(process.argv[1]) === fileURLToPath(import.meta.url)) { |
2600 | | -if (shouldPrintHelp(process.argv.slice(2))) { |
| 2609 | +const argv = process.argv.slice(2); |
| 2610 | +if (shouldPrintHelp(argv)) { |
2601 | 2611 | process.stdout.write(usage()); |
2602 | 2612 | } else { |
| 2613 | +try { |
| 2614 | +validateCliArgs(argv); |
| 2615 | +} catch (error) { |
| 2616 | +console.error(error instanceof Error ? error.message : String(error)); |
| 2617 | +process.exit(1); |
| 2618 | +} |
2603 | 2619 | await main(); |
2604 | 2620 | } |
2605 | 2621 | } |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -55,6 +55,7 @@ import {
|
55 | 55 | tailFile, |
56 | 56 | unwrapRpcPayload, |
57 | 57 | usesBuiltOpenClawEntry, |
| 58 | +validateCliArgs, |
58 | 59 | waitForGatewayReady, |
59 | 60 | } from "../../scripts/e2e/kitchen-sink-rpc-walk.mjs"; |
60 | 61 | import { cleanupTempDirs, makeTempDir } from "../helpers/temp-dir.js"; |
@@ -116,6 +117,23 @@ describe("kitchen-sink RPC isolated state", () => {
|
116 | 117 | expect(shouldPrintHelp([])).toBe(false); |
117 | 118 | }); |
118 | 119 | |
| 120 | +it("rejects unknown CLI args before creating temp state", async () => { |
| 121 | +expect(() => validateCliArgs(["--wat"])).toThrow("Unknown argument: --wat"); |
| 122 | + |
| 123 | +const error = await runCommand(process.execPath, [ |
| 124 | +"scripts/e2e/kitchen-sink-rpc-walk.mjs", |
| 125 | +"--wat", |
| 126 | +]).then( |
| 127 | +() => undefined, |
| 128 | +(caught: unknown) => caught as Error & { stderr?: string; stdout?: string }, |
| 129 | +); |
| 130 | + |
| 131 | +expect(error).toBeDefined(); |
| 132 | +expect(error?.stdout).toBe(""); |
| 133 | +expect(error?.stderr?.trim()).toBe("Unknown argument: --wat"); |
| 134 | +expect(error?.stderr).not.toContain("temp root preserved"); |
| 135 | +}); |
| 136 | + |
119 | 137 | it("rejects loose numeric env values before they bypass runtime guardrails", () => { |
120 | 138 | expect(readPositiveInt(undefined, 60_000)).toBe(60_000); |
121 | 139 | expect(readPositiveInt("", 60_000)).toBe(60_000); |
|
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。