Bonjour,
Je viens de pousser deux petites branches et j'aimerais votre avis.
https://gitlab.com/monnier/typer/-/compare/master...broken-tests-2021-04
La première ne devrait être controversée, il y avait des tests brisés dans eval_test.ml. Un trio utilisait une fonction pour l'évaluation qui effaçait les types dans le mauvais environnement. Un autre test (Let3) testait ce qui était en fait du code incorrect, une déclaration qui faisait référence à un type définie dans le même bloc de déclarations. Depuis 77981fd4dc8bc6af20e1db5148a9fb14f4adc07a, seules les définitions peuvent être récursives.
https://gitlab.com/monnier/typer/-/compare/broken-tests-2021-04...dunify-tes...
La deuxième ajoute des fichiers dune pour rouler les tests. J'ai dû faire un changement à la structure du projet. Avec le système actuel, chaque test est un exécutable indépendant qui est compilé à partir des fichiers ml que ocamlbuild trouve en suivant les dépendances. Dune par contre de supporte pas d'avoir un même fichier dans plusieurs targets. J'ai donc séparé l'essentiels des fichiers de Typer dans une bibliothèque et j'ai créé deux exécutables, typer_cli (un executable ne peut pas avoir le même nom qu'une bibliothèque) et debug_util qui, avec les tests, linkent vers cette bibliothèque.
Le principal avantage est que Dune s'occupe maintenant de coordonner nos tests. Ça nous permet de ne plus avoir à maintenir tests/utest_main.ml. Le principal défaut est qu'il faut s'habituer aux nouvelles commandes. J'ai mis à jour le Makefile pour que l'adaptation soit plus facile.
Qu'est-ce que vous en pensez? Simon