Skip to content

Commit ec7941b

Browse files
committed
fix(config): treat whitespace-only numeric env values as unset in envNumber
1 parent 0695003 commit ec7941b

4 files changed

Lines changed: 12 additions & 2 deletions

File tree

apps/sim/lib/billing/sandbox-pricing.test.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,9 @@ describe('sandbox pricing', () => {
7070

7171
setEnv({ COST_MULTIPLIER: '-2' })
7272
expect(createSandboxPricing('e2b').multiplier).toBe(1)
73+
74+
setEnv({ COST_MULTIPLIER: ' ' })
75+
expect(createSandboxPricing('e2b').multiplier).toBe(1)
7376
})
7477
})
7578
})

apps/sim/lib/core/config/env.test.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,11 @@ describe('envNumber', () => {
1212
expect(envNumber('5.5', 1, { min: 1, integer: true })).toBe(1)
1313
expect(envNumber(5.5, 1, { min: 1, integer: true })).toBe(1)
1414
})
15+
16+
it('treats whitespace-only values as unset instead of coercing them to 0', () => {
17+
expect(envNumber(' ', 1)).toBe(1)
18+
expect(envNumber('', 1)).toBe(1)
19+
expect(envNumber(' 1.1 ', 1)).toBe(1.1)
20+
expect(envNumber('0', 1)).toBe(0)
21+
})
1522
})

apps/sim/lib/core/config/env.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -813,7 +813,7 @@ export function envNumber(
813813
) {
814814
return value
815815
}
816-
if (value === undefined || value === null || value === '') return fallback
816+
if (value === undefined || value === null || String(value).trim() === '') return fallback
817817
const parsed = Number(value)
818818
return Number.isFinite(parsed) && parsed >= min && (!options.integer || Number.isInteger(parsed))
819819
? parsed

packages/testing/src/mocks/env.mock.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ export function envNumberImpl(
136136
) {
137137
return value
138138
}
139-
if (value === undefined || value === null || value === '') return fallback
139+
if (value === undefined || value === null || String(value).trim() === '') return fallback
140140
const parsed = Number(value)
141141
return Number.isFinite(parsed) && parsed >= min && (!options.integer || Number.isInteger(parsed))
142142
? parsed

0 commit comments

Comments
 (0)