Apprends à tester tes exercices Unison sur Exercism.
L'Unison Codebase Manager (UCM) est l'outil qui exécute le langage de programmation Unison et te permet de naviguer dans le code Unison que tu as écrit et enregistré.
💡 Rappel : le code Unison n'est pas enregistré sous forme de contenu textuel dans un fichier. C'est pourquoi on a besoin d'un outil qui permet de modifier et d'exécuter des programmes Unison.
Écrire du code Unison est aussi simple que d'ouvrir le terminal de ton choix et de lancer la commande ucm dans le répertoire où tu écriras ton code Unison. Tu peux ensuite utiliser ton éditeur de texte préféré pour créer ou ouvrir un fichier avec un suffixe .u, comme scratch.u ou hello.u. L'essentiel de ton workflow consistera à naviguer entre l'instance ucm qui tourne en ligne de commande et ton fichier .u. L'UCM surveille automatiquement les changements de ton fichier avec suffixe .u dès que tu l'enregistres.
Au lieu d'une structure de répertoires, les bases de code Unison s'organisent en « espaces de noms ». Tu exploreras l'espace de noms de la bibliothèque standard, appelé base, à la recherche de fonctions et de types de données utiles, et tu créeras les tiens au fur et à mesure que tu écriras du code Unison. Dans l'UCM, on navigue dans la base de code avec les commandes ls et view : la première sert à lister le contenu d'un espace de noms, la seconde à consulter le code source.
Tu peux naviguer dans ta base de code et la consulter via la CLI de l'UCM, mais tu voudras peut-être aussi en voir une jolie représentation graphique. Pour cela, il te suffit de lancer la commande ui dans la CLI de l'UCM. Une fenêtre de navigateur s'ouvrira avec une vue du code de ta base de code. L'interface locale de la base de code est aussi un excellent moyen d'explorer les fonctions de notre bibliothèque standard, appelée base, qui peuvent t'être utiles pour venir à bout des exercices. Pour en savoir plus sur l'interface locale de la base de code, c'est ici.
Tu peux t'entraîner au workflow de programmation d'Unison avec la visite guidée du langage Unison.
Crée un nouveau projet avec la commande project.create et donne-lui un nom (par exemple project.create hello-world)
Pendant que l'UCM surveille le répertoire de l'exercice, fais tes modifications dans le fichier <myFileName>.u
Enregistre le fichier <myFileName>.u
Si le fichier passe la vérification des types, lance les commandes UCM add ou update
<myFileName>.u jusqu'à ce qu'il compileLance la commande load <myFileName>.test.u dans la CLI de l'UCM pour mettre les tests dans la portée et les exécuter
Si tu travailles sur un exercice Exercism en ligne de commande, tu implémenteras très probablement ta solution dans le répertoire portant le nom de l'exercice en question. Par exemple, si l'exercice est hello-world, tu dois ouvrir ucm en ligne de commande après avoir fait cd dans ~/exercism/unison/hello-world, puis créer un projet dans ucm (par exemple project.create hello-world). Fais tes modifications d'implémentation dans le fichier hello.u et, quand ton implémentation te satisfait, saisis la commande add ou update dans la CLI du gestionnaire de base de code Unison (UCM) pour ajouter ton travail depuis le fichier dans la base de code.
Le fichier qui contient les tests de chaque exercice porte le suffixe .test.u. Tu utiliseras la commande load dans l'UCM pour mettre les tests dans la portée et les exécuter. La commande load prend un chemin de fichier comme argument. Voici à quoi cela peut ressembler pour l'exercice hello world et le projet hello-world :
hello-world/main> load hello.test.u
Tu devrais voir un message de l'UCM à propos des termes qui ont été mis dans la portée et, surtout, le résultat de l'exécution du 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
Imaginons que tes tests n'aient pas réussi la première fois. Reviens modifier ton fichier myExercise.u et, après l'avoir enregistré, tu peux lancer 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
On peut ensuite recharger nos tests pour voir si quelque chose a changé !
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.
Pour afficher la liste des commandes disponibles pour interagir avec ta base de code, lance help dans la CLI de l'Unison Codebase Manager. La liste des commandes UCM est aussi décrite sur notre site web. Voici quelques commandes qui peuvent t'être utiles :
add : ajoute à la base de code les nouvelles définitions du fichier .u.update : fonctionne comme add, sauf que si une définition du fichier porte le même nom qu'une définition existante, ce nom est mis à jour pour pointer vers la nouvelle définition.
todo en vue d'une réécriture ultérieure.load : analyse, vérifie les types et évalue le fichier de travail avec suffixe .u fourni. Une fois les types vérifiés et le fichier évalué, tu peux ajouter les termes à ta base de code.ls : liste le contenu d'un espace de nomsview : affiche le code source d'une définition Unison donnéeui : ouvre l'interface locale de la base de codeexit : ferme l'UCM