mirror of
https://github.com/fsolla/teqo.git
synced 2026-11-13 15:13:07 +00:00
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.
46 lines
1.6 KiB
TypeScript
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'])
|
|
})
|
|
})
|