Skip to content

Commit bb41660

Browse files
committed
ci: la matriz probaba el tooling, no el paquete
El CI corría la suite en Node 20/22/24, pero @poppinss/ts-exec —el ejecutor de tests— declara engines: node >=24. En 20 y 22 moría con ERR_UNKNOWN_FILE_EXTENSION antes del primer test, así que la matriz nunca pudo pasar: no probaba el paquete, probaba el ejecutor. Y siempre en rojo. Se separan las dos preguntas que estaban mezcladas: test ¿funciona el paquete? → Node 24, donde el tooling puede correr compat ¿es cargable lo que se publica en todo el rango de engines? → 20/22/24: tsc compila en cualquier versión y node --check verifica que el JavaScript emitido parsea ahí, que es el riesgo real (un target demasiado moderno para el suelo declarado) Verificado en local con Node 20.17: la suite falla como en CI, el build pasa y los 9 ficheros emitidos superan node --check.
1 parent 05e9f08 commit bb41660

1 file changed

Lines changed: 33 additions & 8 deletions

File tree

.github/workflows/ci.yml

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,51 @@ on:
66
pull_request:
77
workflow_dispatch:
88

9+
# Dos trabajos porque son dos preguntas distintas, y la matriz original las
10+
# confundía: corría la SUITE en Node 20/22/24, pero el ejecutor de tests
11+
# (@poppinss/ts-exec) declara `engines: node >=24`, así que en 20 y 22 moría
12+
# con ERR_UNKNOWN_FILE_EXTENSION antes del primer test. La matriz no probaba
13+
# el paquete: probaba el tooling, y siempre en rojo.
914
jobs:
15+
# ¿Funciona el paquete? Se ejecuta donde el tooling puede ejecutarse.
1016
test:
17+
runs-on: ubuntu-latest
18+
steps:
19+
- uses: actions/checkout@v4
20+
- uses: actions/setup-node@v4
21+
with:
22+
node-version: 24.x
23+
cache: npm
24+
- run: npm ci
25+
- run: npm run typecheck
26+
# La suite corre sobre SQLite en memoria: sin servicios, sin migraciones
27+
# y sin depender del proyecto consumidor.
28+
- run: npm test
29+
30+
# ¿Es cargable lo que se publica en todo el rango que declara `engines`?
31+
# `tsc` compila en cualquier versión y `node --check` verifica que el
32+
# JavaScript emitido parsea en esa versión — que es el riesgo real (un
33+
# target demasiado moderno para el suelo declarado).
34+
compat:
1135
runs-on: ubuntu-latest
1236
strategy:
1337
fail-fast: false
1438
matrix:
1539
node: ['20.x', '22.x', '24.x']
16-
1740
steps:
1841
- uses: actions/checkout@v4
19-
2042
- uses: actions/setup-node@v4
2143
with:
2244
node-version: ${{ matrix.node }}
2345
cache: npm
24-
2546
- run: npm ci
26-
27-
# La suite corre sobre SQLite en memoria: sin servicios, sin migraciones
28-
# y sin depender del proyecto consumidor.
29-
- run: npm run typecheck
30-
- run: npm test
3147
- run: npm run build
48+
- name: El build es cargable en Node ${{ matrix.node }}
49+
run: |
50+
count=0
51+
while IFS= read -r file; do
52+
node --check "$file"
53+
count=$((count + 1))
54+
done < <(find build -name '*.js')
55+
echo "$count ficheros emitidos verificados"
56+
test "$count" -gt 0

0 commit comments

Comments
 (0)