Scopri come testare i tuoi esercizi YAMLScript su Exercism
Testare le soluzioni degli esercizi di Exercism scritte in YAMLScript è estremamente facile. Facili da eseguire e facili da capire.
Ti basta eseguire make test nella directory dell'esercizio.
La prima volta che esegui make test tutti i test falliranno, semplicemente perché
non hai ancora scritto alcun codice per risolverli.
Il normale processo di sviluppo di un esercizio consiste nel partire da make test per
poi concentrarti su un test alla volta, scrivendo il codice che lo faccia passare.
Quando tutti i test passano, hai finito!
Come bonus, eseguire make test farà anche in modo che la versione corretta
dell'interprete ys di YAMLScript (quella richiesta dall'esercizio attuale) sia
installata nel posto giusto (in /path/to/exercism/yamlscript/.local/).
Questo significa che non devi nemmeno installare ys in anticipo per iniziare!
Se stai lavorando a un esercizio chiamato the-great-exercise, allora exercism download --exercise=the-great-exercise --track=yamlscript creerà la
directory /path/to/exercism/yamlscript/the-great-exercise.
All'interno di questa directory, il file di test si chiamerà the-great-exercise-test.ys
e il file del programma della soluzione si chiamerà the-great-exercise.ys.
Ci sarà anche un file README.md con la descrizione dell'esercizio e un
file HELP.md con alcune informazioni utili in caso ti blocchi.
Ci saranno due file per make: Makefile e GNUmakefile.
Questo serve a fare (npi) in modo che tu usi GNU make per eseguire i test e
non qualche altro comando make che potrebbe essere installato sul tuo sistema.
Il GNUmakefile è quello vero e GNU make lo preferirà sempre a
Makefile.
Gli altri comandi make useranno il Makefile, che dovrebbe dare un errore con un messaggio
che ti dice di usare GNU make!
I test di YAMLScript sono scritti in YAMLScript, ovviamente! Dato che YAMLScript è YAML e YAML è dati, i test sono praticamente solo dati.
Ecco un esempio di un semplice file di test.
In realtà sono i primi 3 test dell'esercizio 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 prima riga è una riga shebang che dice al comando prove (eseguito dal
Makefile) di usare l'interprete ys di YAMLScript per eseguire i test invece di
perl, che è il valore predefinito per prove.
La seconda riga è un'istruzione use che carica la libreria di test ys::taptest
TAP di YAMLScript.
Nota: TAP è una semplice interfaccia testuale tra gli script di test e gli harness che li eseguono, e
proveè l'harness standard per eseguire i test TAP in Perl. Dato che Perl è così diffuso, usare TAP eprovefinisce per essere un'ottima scelta per le suite di test in molti linguaggi (YAMLScript incluso).
L'istruzione use carica il programma della soluzione acronym.ys, in modo che questo
file di test abbia qualcosa da testare.
Tutti i nostri test sono in una sequenza YAML sotto la chiave test.
L'ultima riga done: è obbligatoria e comunica all'harness di test che tutti i test
sono stati effettivamente eseguiti.
Il numero (che è opzionale) è il numero di test che ci aspettavamo di eseguire.
Ogni test (sotto la chiave test) è una mappatura con queste coppie chiave/valore:
name: - L'etichetta del test, che viene stampata da prove -v.code: - Il codice YAMLScript da eseguire.
Questo codice chiamerà qualche funzione nel programma della soluzione su cui stiamo lavorando.what: - Per i test che prevedono che si verifichi un errore, il valore è error.
Per i test normali, la coppia non è presente.want: - Il risultato atteso del test.
È un valore YAML e può essere una stringa, un numero, un booleano, una sequenza o una mappa.
Se what: è error, allora questo valore è il messaggio di errore atteso.SKIP: - Impostalo su true per saltare l'esecuzione di quel test.ONLY: - Impostalo su true per eseguire solo quel test.
Se hai più di un test ONLY:, ognuno di essi verrà eseguito.Questo dovrebbe essere tutto ciò che ti serve sapere per fare sviluppo guidato dai test in YAMLScript per gli esercizi di Exercism!
La libreria ys::taptest ha altre funzionalità che puoi usare per scrivere test più
complessi, ma i test di Exercism sono già stati scritti per te.
Per saperne di più sulla libreria ys::taptest, dai un'occhiata alla documentazione.