Skip to content

Pruebas

Jose Luiz Rodrigues edited this page Sep 10, 2026 · 1 revision

Pruebas

149 asertos, con el runner nativo de Node. Sin framework, sin dependencias de prueba.

npm test           # node --test, todos los test/*.test.js
node --check extension.js

La razón de que esto sea posible sin arrancar VS Code es el corte descrito en Arquitectura: la lógica vive en lib/ y en scripts/, y ninguno de los dos importa vscode.

Qué cobra cada archivo

archivo qué protege
blocks.test.js definición contra referencia, claves estructurales, denylist de archivos
context.test.js el contexto JSON bajo el cursor, incluido el bug que originó el módulo
comfort.test.js el preset y su deshacer
tokens.test.js las reglas de nombre de las custom properties
schema.test.js el JSON Schema generado
theme.test.js la spec del tema de color, entera
icons.test.js el file icon theme y el product icon theme
stroke-outline.test.js el conversor de trazo a contorno, rasterizando

Los tres que valen la pena mirar

theme.test.js — la spec es el documento

La spec del tema está escrita en el encabezado de este archivo, y cada criterio de aceptación es un aserto. El JSON es sólo el artefacto. Si cambias la paleta o una regla, lo que se actualiza primero es la spec del test.

Existe porque estas reglas fallan de forma silenciosa, sólo «visual»: un color fuera de la paleta, el acento colándose en texto, un párrafo de Markdown coloreado. Un generador de paletas sólo se paga con muchos temas; con uno, se paga el aserto.

Lo que comprueba está listado en El tema Puelche.

icons.test.js — el fallo silencioso otra vez

Casi todo fallo de un icon theme es mudo: VS Code no avisa cuando un iconPath no resuelve, cuando una clave de fileExtensions viene con punto, o cuando el glifo simplemente no existe dentro del .woff. Sólo aparece el icono por defecto.

Además de eso, aquí viven dos reglas de diseño, no de generación:

  • La tabla de familias. Una color por familia. Una asignación suelta en data/icons.json falla la prueba.
  • El contraste mínimo. El peor caso del conjunto, dim a 3.25:1 entre placa y marca, está clavado como aserto.

Más el lint de los glifos de producto: sólo M L Q A Z en mayúscula, sólo <path>, sin transform, sin subcaminos de área cero, coordenadas dentro de 0..16, y el techo de elementos vía PRIM_COUNT.

Las pruebas del tema de producto se saltan con gracia si el .woff todavía no existe.

stroke-outline.test.js — mirar píxeles

Probar la cadena del atributo d no demuestra casi nada: un sweep-flag cambiado, un hueco rebobinado al revés o un cap girado hacia dentro producen un d perfectamente bien formado y un dibujo equivocado. Como la fuente rellena con winding nonzero, el error clásico — «el centro del anillo se volvió un disco sólido» — sólo aparece después de rasterizar.

Así que eso es lo que hace: cada caso se convierte en un SVG de 16x16 renderizado a 64x64 con sharp, una unidad de rejilla igual a cuatro píxeles, y los asertos miran el píxel.

Si sharp no está instalado, esas pruebas se saltan.

Cuándo hay que tocar un test

  • Cambias una regla de nombre de tokens → tokens.test.js.
  • Cambias la paleta o una regla del tema → la spec en el encabezado de theme.test.js.
  • Añades un icono a una familia nueva → la tabla de familias en icons.test.js.
  • Cambias el número de elementos de una marca → la cuenta explícita en decl().

Clone this wiki locally