Scopri come testare gli esercizi di Unison su Exercism
L'Unison Codebase Manager (UCM) è lo strumento che esegue il linguaggio di programmazione Unison e ti permette di navigare nel codice Unison che hai scritto e salvato.
💡 Ricorda: il codice Unison non viene salvato come contenuto di un file di testo. Per questo motivo ci serve uno strumento che ci permetta di modificare ed eseguire programmi Unison.
Scrivere codice Unison è semplice: apri il terminale che preferisci ed esegui il comando ucm nella directory in cui scriverai il codice Unison. Poi puoi usare l'editor di testo che preferisci per creare o aprire un file con suffisso .u, come scratch.u o hello.u. Gran parte del lavoro consisterà nel passare dall'istanza della riga di comando di ucm in esecuzione al file .u. L'UCM rileva automaticamente le modifiche al file con suffisso .u quando lo salvi.
Invece di una struttura di directory, i codebase Unison sono organizzati tramite «namespace». Esplorerai il namespace della libreria standard, chiamato base, alla ricerca di funzioni e tipi di dati utili, e ne creerai di nuovi man mano che scrivi codice Unison. Nell'UCM, la navigazione nel codebase avviene con i comandi ls e view: servono rispettivamente a elencare il contenuto di un namespace e a visualizzare il codice sorgente.
Anche se puoi navigare e visualizzare il codebase tramite la CLI dell'UCM, potresti anche voler vedere una rappresentazione grafica del tuo lavoro. Puoi farlo eseguendo il comando ui nella CLI dell'UCM. Si aprirà una finestra del browser con una vista del codice nel codebase. L'interfaccia locale del codebase è anche un ottimo modo per esplorare le funzioni della libreria standard, chiamata base, che potrebbero tornare utili per completare gli esercizi. Scopri di più sull'interfaccia locale del codebase qui.
Puoi fare pratica con il flusso di lavoro di programmazione di Unison seguendo il tour del linguaggio Unison.
Crea un nuovo progetto con il comando project.create e assegnagli un nome (ad esempio project.create hello-world)
Con l'UCM che osserva la directory dell'esercizio, apporta le modifiche nel file <myFileName>.u
Salva il file <myFileName>.u
Se il file supera il controllo dei tipi, esegui i comandi UCM add o update
<myFileName>.u finché non compilaEsegui il comando load <myFileName>.test.u nella CLI dell'UCM per portare i test nello scope ed eseguirli
Se stai lavorando a un esercizio di Exercism dalla riga di comando, molto probabilmente implementerai la soluzione nella directory che porta il nome dell'esercizio. Ad esempio, se l'esercizio è hello-world, dopo aver fatto cd in ~/exercism/unison/hello-world dovresti aprire ucm dalla riga di comando e creare un progetto in ucm (ad esempio project.create hello-world). Apporta le modifiche all'implementazione nel file hello.u e, quando ne sei soddisfatto, digita il comando add o update nella CLI dell'Unison Codebase Manager (UCM) per aggiungere al codebase il lavoro svolto nel file.
Il file che contiene i test di ogni esercizio ha il suffisso .test.u. Ti conviene usare il comando load nell'UCM per portare i test nello scope ed eseguirli. Il comando load accetta un percorso di file come argomento. Ecco come potrebbe apparire per l'esercizio hello world e il progetto hello-world:
hello-world/main> load hello.test.u
Dovresti vedere un messaggio dell'UCM sui termini portati nello scope e, cosa più importante, il risultato dell'esecuzione dei test:
⍟ These new definitions are ok to `add`:
hello.test : Test.Test
tests : [Result]
Now evaluating any watch expressions (lines starting with
`>`)... Ctrl+C cancels.
6 | test> tests = runAll [hello.test]
🚫 FAILED
Diciamo che i test non sono passati la prima volta. Torna a modificare il file myExercise.u e, dopo averlo salvato, puoi usare update
I found and typechecked these definitions in ~/Exercism/unison/hello-world/hello.u. If you do an
`add` or `update`, here's how your codebase would change:
⍟ These names already exist. You can `update` them to your new definition:
hello : Text
hello-world/main> update
⍟ I've updated these names to your new definition:
hello : Text
Ora possiamo ricaricare i test per vedere se è cambiato qualcosa!
hello-world/main> load hello.test.u
Now evaluating any watch expressions (lines starting with `>`)... Ctrl+C cancels.
6 | test> tests = runAll [hello.test]
✅ Passed : Passed 1 tests.
Per vedere un elenco dei comandi disponibili per interagire con il codebase, esegui help nella CLI dell'Unison Codebase Manager. L'elenco dei comandi UCM è anche descritto sul nostro sito. Eccone alcuni che potrebbero esserti utili:
add: aggiunge al codebase le nuove definizioni del file .u.update: funziona come add, con la differenza che se una definizione nel file ha lo stesso nome di una definizione esistente, il nome viene aggiornato per puntare alla nuova definizione.
update propagherà automaticamente la modifica dove possibile, oppure creerà una voce todo per riorganizzare il codice in seguito.load: analizza, controlla i tipi e valuta il file provvisorio con suffisso .u indicato. Una volta completati il controllo dei tipi e la valutazione, puoi aggiungere i termini al codebase.ls: elenca il contenuto di un namespaceview: visualizza il codice sorgente di una data definizione Unisonui: apre l'interfaccia locale del codebaseexit: chiude l'UCM