teqo/tests/unit/devPort.unit.spec.ts
Francisco Solla 5940c4c61e fix(OPS40): pnpm dev honra o PORT do .env.local — next dev -p via scripts/dev.mjs (Closes #682)
next dev resolve a porta antes de @next/env carregar env-files (commander
.env('PORT') no bin/next), então o PORT=3100+slot do provisionador de
worktree era ignorado e todo dev server subia em 3000. pnpm dev/devsafe
passam por scripts/dev.mjs: preflight do guard-dev-db inline, env com a
mesma precedência (real > .env.local > .env, override:false) e porta como
flag CLI -p (resolveDevPort/nextDevArgs em scripts/lib/cli.mjs,
unit-testados). Sem PORT → nenhum -p → default 3000 + allowRetry intactos.
2026-08-11 20:04:07 -03:00

46 lines
1.6 KiB
TypeScript

// @vitest-environment node
import { describe, expect, it } from 'vitest'
import { nextDevArgs, resolveDevPort } from '../../scripts/lib/cli.mjs'
describe('resolveDevPort (OPS40 — next dev ignores env-file PORT)', () => {
it('no PORT anywhere → null (caller omits -p, Next defaults to 3000)', () => {
expect(resolveDevPort({})).toBeNull()
expect(resolveDevPort({ DATABASE_URL: 'x' })).toBeNull()
})
it('an empty/whitespace PORT is treated as absent', () => {
expect(resolveDevPort({ PORT: '' })).toBeNull()
expect(resolveDevPort({ PORT: ' ' })).toBeNull()
})
it('reads the worktree PORT from the merged env (.env.local)', () => {
expect(resolveDevPort({ PORT: '3140' })).toBe(3140)
})
it('trims whitespace around the value', () => {
expect(resolveDevPort({ PORT: ' 3140 ' })).toBe(3140)
})
it('accepts the port range bounds', () => {
expect(resolveDevPort({ PORT: '1' })).toBe(1)
expect(resolveDevPort({ PORT: '65535' })).toBe(65535)
})
it('fails closed on a non-empty invalid PORT instead of falling back to 3000', () => {
for (const bad of ['abc', '0', '-1', '65536', '31.5', '12a']) {
expect(() => resolveDevPort({ PORT: bad })).toThrow(/PORT inválida/)
}
})
})
describe('nextDevArgs (port must go as a CLI flag — commander never sees env files)', () => {
it('passes -p when a port is resolved', () => {
expect(nextDevArgs(3140)).toEqual(['dev', '-p', '3140'])
})
it('omits -p when there is no port (Next default 3000 + allowRetry)', () => {
expect(nextDevArgs(null)).toEqual(['dev'])
})
})