From abef5a4ad174745bd45d205f0b2c35519c6d737a Mon Sep 17 00:00:00 2001 From: Gabi Villalonga Simon Date: Wed, 10 Jul 2024 11:39:13 -0500 Subject: [PATCH] wrangler cloudchamber: fix --json flags when required fields for it to work are not passed --- .changeset/nervous-eyes-fetch.md | 5 ++ .../src/__tests__/cloudchamber/create.test.ts | 60 ++++++++++++------- packages/wrangler/src/cloudchamber/common.ts | 4 +- 3 files changed, 46 insertions(+), 23 deletions(-) create mode 100644 .changeset/nervous-eyes-fetch.md diff --git a/.changeset/nervous-eyes-fetch.md b/.changeset/nervous-eyes-fetch.md new file mode 100644 index 000000000000..36098409f2d4 --- /dev/null +++ b/.changeset/nervous-eyes-fetch.md @@ -0,0 +1,5 @@ +--- +"wrangler": patch +--- + +fix: wrangler cloudchamber json errors are properly formatted diff --git a/packages/wrangler/src/__tests__/cloudchamber/create.test.ts b/packages/wrangler/src/__tests__/cloudchamber/create.test.ts index 4d82a181c6b0..eda9c5261c37 100644 --- a/packages/wrangler/src/__tests__/cloudchamber/create.test.ts +++ b/packages/wrangler/src/__tests__/cloudchamber/create.test.ts @@ -52,6 +52,26 @@ describe("cloudchamber create", () => { `); }); + it("should fail with a nice message when parameters are missing", async () => { + setIsTTY(false); + setWranglerConfig({}); + await expect( + runWrangler("cloudchamber create --image hello:world") + ).rejects.toThrowErrorMatchingInlineSnapshot( + `[Error: location is required but it's not passed as an argument]` + ); + }); + + it("should fail with a nice message when parameters are missing (json)", async () => { + setIsTTY(false); + setWranglerConfig({}); + await runWrangler("cloudchamber create --image hello:world --json"); + expect(std.out).toMatchInlineSnapshot( + `"{\\"error\\":\\"location is required but it's not passed as an argument\\"}"` + ); + expect(std.err).toMatchInlineSnapshot(`""`); + }); + it("should create deployment (detects no interactivity)", async () => { setIsTTY(false); setWranglerConfig({}); @@ -86,26 +106,26 @@ describe("cloudchamber create", () => { // so testing the actual UI will be harder than expected // TODO: think better on how to test UI actions expect(std.out).toMatchInlineSnapshot(` - "{ - \\"id\\": \\"1\\", - \\"type\\": \\"default\\", - \\"created_at\\": \\"123\\", - \\"account_id\\": \\"123\\", - \\"vcpu\\": 4, - \\"memory\\": \\"400MB\\", - \\"version\\": 1, - \\"image\\": \\"hello\\", - \\"location\\": { - \\"name\\": \\"sfo06\\", - \\"enabled\\": true - }, - \\"network\\": { - \\"ipv4\\": \\"1.1.1.1\\" - }, - \\"placements_ref\\": \\"http://ref\\", - \\"node_group\\": \\"metal\\" - }" - `); + "{ + \\"id\\": \\"1\\", + \\"type\\": \\"default\\", + \\"created_at\\": \\"123\\", + \\"account_id\\": \\"123\\", + \\"vcpu\\": 4, + \\"memory\\": \\"400MB\\", + \\"version\\": 1, + \\"image\\": \\"hello\\", + \\"location\\": { + \\"name\\": \\"sfo06\\", + \\"enabled\\": true + }, + \\"network\\": { + \\"ipv4\\": \\"1.1.1.1\\" + }, + \\"placements_ref\\": \\"http://ref\\", + \\"node_group\\": \\"metal\\" + }" + `); }); it("should create deployment indicating ssh keys (detects no interactivity)", async () => { diff --git a/packages/wrangler/src/cloudchamber/common.ts b/packages/wrangler/src/cloudchamber/common.ts index 2f77a1d2e513..20759761b4f4 100644 --- a/packages/wrangler/src/cloudchamber/common.ts +++ b/packages/wrangler/src/cloudchamber/common.ts @@ -79,9 +79,7 @@ export function handleFailure< } if (err instanceof Error) { - logger.log( - `${{ error: err.message, name: err.name, stack: err.stack }}` - ); + logger.log(`${JSON.stringify({ error: err.message })}`); return; }