Repository navigation
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.jsLa 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.
| 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 |
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.
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.jsonfalla la prueba. -
El contraste mínimo. El peor caso del conjunto,
dima 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.
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.
- 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().
Marketplace · Repositorio · Issues · MIT