| ... | @@ -42,7 +42,7 @@ describe("createDevRunnerEnv", () => { | ... | @@ -42,7 +42,7 @@ describe("createDevRunnerEnv", () => { |
| 42 | it("defaults state dir to ~/.t3/dev when not provided", () => { | 42 | it("defaults state dir to ~/.t3/dev when not provided", () => { |
| 43 | const env = createDevRunnerEnv({ | 43 | const env = createDevRunnerEnv({ |
| 44 | mode: "dev", | 44 | mode: "dev", |
| 45 | env: { T3CODE_STATE_DIR: "/tmp/prod-state" }, | 45 | env: {}, |
| 46 | offset: 0, | 46 | offset: 0, |
| 47 | envOverrides: {}, | 47 | envOverrides: {}, |
| 48 | }); | 48 | }); |
| ... | @@ -50,6 +50,17 @@ describe("createDevRunnerEnv", () => { | ... | @@ -50,6 +50,17 @@ describe("createDevRunnerEnv", () => { |
| 50 | expect(env.T3CODE_STATE_DIR).toBe(DEFAULT_DEV_STATE_DIR); | 50 | expect(env.T3CODE_STATE_DIR).toBe(DEFAULT_DEV_STATE_DIR); |
| 51 | }); | 51 | }); |
| 52 | | 52 | |
| | 53 | it("uses existing env state dir when --state-dir is not provided", () => { |
| | 54 | const env = createDevRunnerEnv({ |
| | 55 | mode: "dev:server", |
| | 56 | env: { T3CODE_STATE_DIR: "/tmp/existing-state" }, |
| | 57 | offset: 0, |
| | 58 | envOverrides: {}, |
| | 59 | }); |
| | 60 | |
| | 61 | expect(env.T3CODE_STATE_DIR).toBe("/tmp/existing-state"); |
| | 62 | }); |
| | 63 | |
| 53 | it("lets --state-dir override existing env state dir", () => { | 64 | it("lets --state-dir override existing env state dir", () => { |
| 54 | const env = createDevRunnerEnv({ | 65 | const env = createDevRunnerEnv({ |
| 55 | mode: "dev:server", | 66 | mode: "dev:server", |
| ... | @@ -61,6 +72,17 @@ describe("createDevRunnerEnv", () => { | ... | @@ -61,6 +72,17 @@ describe("createDevRunnerEnv", () => { |
| 61 | expect(env.T3CODE_STATE_DIR).toBe("/tmp/override-state"); | 72 | expect(env.T3CODE_STATE_DIR).toBe("/tmp/override-state"); |
| 62 | }); | 73 | }); |
| 63 | | 74 | |
| | 75 | it("treats whitespace-only --state-dir as missing and falls back to env/default", () => { |
| | 76 | const env = createDevRunnerEnv({ |
| | 77 | mode: "dev:server", |
| | 78 | env: { T3CODE_STATE_DIR: "/tmp/existing-state" }, |
| | 79 | offset: 0, |
| | 80 | envOverrides: { T3CODE_STATE_DIR: " " }, |
| | 81 | }); |
| | 82 | |
| | 83 | expect(env.T3CODE_STATE_DIR).toBe("/tmp/existing-state"); |
| | 84 | }); |
| | 85 | |
| 64 | it("recomputes websocket url when port is overridden", () => { | 86 | it("recomputes websocket url when port is overridden", () => { |
| 65 | const env = createDevRunnerEnv({ | 87 | const env = createDevRunnerEnv({ |
| 66 | mode: "dev", | 88 | mode: "dev", |
| ... | @@ -89,4 +111,15 @@ describe("createDevRunnerEnv", () => { | ... | @@ -89,4 +111,15 @@ describe("createDevRunnerEnv", () => { |
| 89 | expect(env.T3CODE_NO_BROWSER).toBe("1"); | 111 | expect(env.T3CODE_NO_BROWSER).toBe("1"); |
| 90 | expect(env.T3CODE_AUTH_TOKEN).toBe("cli-token"); | 112 | expect(env.T3CODE_AUTH_TOKEN).toBe("cli-token"); |
| 91 | }); | 113 | }); |
| | 114 | |
| | 115 | it("fails fast for invalid port overrides", () => { |
| | 116 | expect(() => |
| | 117 | createDevRunnerEnv({ |
| | 118 | mode: "dev", |
| | 119 | env: {}, |
| | 120 | offset: 0, |
| | 121 | envOverrides: { T3CODE_PORT: "not-a-port" }, |
| | 122 | }), |
| | 123 | ).toThrow("Invalid T3CODE_PORT override"); |
| | 124 | }); |
| 92 | }); | 125 | }); |