Aprende a probar tus ejercicios de YAMLScript en Exercism
Probar soluciones de ejercicios de Exercism escritas en YAMLScript es sumamente fácil. Fáciles de ejecutar y fáciles de entender.
Solo ejecuta make test en el directorio del ejercicio.
La primera vez que ejecutes make test, todas las pruebas fallarán, simplemente porque
todavía no has escrito ningún código para resolverlas.
El proceso normal de desarrollo de un ejercicio es empezar con make test y luego
concentrarte en una prueba a la vez, escribiendo código para hacer que esa prueba pase.
¡Cuando todas las pruebas pasen, ya terminaste!
Como beneficio adicional, ejecutar make test también se asegurará de que la versión
correcta del intérprete ys de YAMLScript (la que requiere el ejercicio actual) esté
instalada en el lugar correcto (en /path/to/exercism/yamlscript/.local/).
¡Eso significa que ni siquiera tienes que instalar ys de antemano para empezar!
Si estás trabajando en un ejercicio llamado the-great-exercise, entonces exercism download --exercise=the-great-exercise --track=yamlscript creará el directorio
/path/to/exercism/yamlscript/the-great-exercise.
Dentro de este directorio, el archivo de prueba se llamará the-great-exercise-test.ys
y el archivo del programa de solución se llamará the-great-exercise.ys.
También habrá un archivo README.md con la descripción del ejercicio y un archivo
HELP.md con información útil en caso de que te quedes atascado.
Habrá dos archivos para make: Makefile y GNUmakefile.
Esto es para asegurarte (sin intención de hacer un juego de palabras) de que estás usando
GNU make para ejecutar las pruebas y no algún otro comando make que pueda estar
instalado en tu sistema.
El GNUmakefile es el de verdad, y GNU make siempre lo preferirá por encima de
Makefile.
Los otros comandos make usarán el Makefile, ¡que debería dar un error con un mensaje
que te diga que uses GNU make!
Las pruebas de YAMLScript están escritas en YAMLScript, ¡por supuesto! Dado que YAMLScript es YAML y YAML son datos, las pruebas son básicamente solo datos.
Aquí tienes un ejemplo de un archivo de prueba simple.
En realidad son las primeras 3 pruebas del ejercicio acronym. :-)
#!/usr/bin/env ys-0
use ys::taptest: :all
load: 'acronym.ys'
test::
- name: Basic
code: abbreviate('Portable Network Graphics')
want: PNG
- name: Lowercase words
code: abbreviate('Ruby on Rails')
want: ROR
- name: Punctuation
code: abbreviate('First In, First Out')
want: FIFO
done: 3
La primera línea es una línea shebang que le indica al comando prove (ejecutado por el
Makefile) que use el intérprete ys de YAMLScript para ejecutar las pruebas en lugar de
perl, que es el valor predeterminado de prove.
La segunda línea es una sentencia use que carga la biblioteca de pruebas ys::taptest
TAP de YAMLScript.
Nota: TAP es una interfaz simple basada en texto entre los scripts de prueba y los arneses de prueba, y
provees el arnés estándar para ejecutar pruebas TAP en Perl. Como Perl está en todas partes, usar TAP yprovetermina siendo una muy buena opción para las suites de pruebas de muchos lenguajes (incluido YAMLScript).
La sentencia use carga el programa de solución acronym.ys que este archivo de prueba
está probando.
Todas nuestras pruebas están en una secuencia YAML bajo la clave test.
La última línea, done:, es obligatoria y le indica al arnés de prueba que todas las
pruebas se ejecutaron realmente.
El número (que es opcional) es la cantidad de pruebas que esperábamos ejecutar.
Cada prueba (bajo la clave test) es un mapeo con estos pares clave/valor:
name: - La etiqueta de la prueba, que prove -v imprime.code: - El código YAMLScript que se va a ejecutar.
Este código llamará a alguna función del programa de solución en el que estamos trabajando.what: - En las pruebas que esperan que ocurra un error, el valor es error.
En las pruebas normales, el par no está presente.want: - El resultado esperado de la prueba.
Es un valor YAML y puede ser un string, un número, un boolean, una secuencia o un mapeo.
Si what: es error, entonces este valor es el mensaje de error esperado.SKIP: - Ponlo en true para omitir la ejecución de esa prueba.ONLY: - Ponlo en true para ejecutar solo esa prueba.
Si tienes más de una prueba ONLY:, cada una de ellas se ejecutará.¡Eso debería ser todo lo que necesitas saber para hacer desarrollo guiado por pruebas en YAMLScript para los ejercicios de Exercism!
La biblioteca ys::taptest tiene otras funcionalidades que puedes usar para escribir
pruebas más complejas, pero las pruebas de Exercism ya están escritas para ti.
Para aprender más sobre la biblioteca ys::taptest, consulta la documentación.