diff --git a/tests/README.md b/tests/README.md index 8d5f9aa..e76654d 100644 --- a/tests/README.md +++ b/tests/README.md @@ -1,4 +1,160 @@ -# Tests +# Tests de Bake +Cette suite de tests compare le comportement de `bake` à celui de `make` pour vérifier le bon fonctionnement de l'outil. -AJOUTER DOC ICI \ No newline at end of file +## Table des tests + +| N° | Nom du test | Description | +|----|-------------|-------------| +| [01](#test-01-from-nothing) | Compilation depuis zéro | Vérifie la compilation d'un programme à partir de rien | +| [02](#test-02-already-exist) | Fichier déjà existant | Teste le comportement quand l'exécutable est déjà présent | +| [03](#test-03-circular) | Dépendances circulaires | Teste la détection des dépendances circulaires | +| [04](#test-04-edited) | Fichier modifié | Vérifie la recompilation après modification d'un fichier source | +| [05](#test-05-variables) | Variables | Teste l'utilisation des variables dans les règles | +| [06](#test-06-variables-on-cascade) | Variables en cascade | Teste la propagation des variables dans les règles | +| [07](#test-07-dependency) | Dépendances | Teste la résolution des dépendances | +| [08](#test-08-space-vs-tabulation) | Espaces vs tabulations | Vérifie la gestion des indentations | +| [09](#test-09-handling-comment) | Gestion des commentaires | Teste la reconnaissance et l'ignorance des commentaires | +| [10](#test-10-phony) | Cibles PHONY | Teste les cibles qui ne produisent pas de fichiers | +| [11](#test-11-error-in-code) | Erreur dans le code | Teste le comportement face à des erreurs dans le code source | +| [12](#test-12-file-dont-exist) | Fichier inexistant | Teste le comportement quand un fichier requis n'existe pas | +| [13](#test-13-dependancy-dont-exist) | Dépendance inexistante | Teste le comportement avec une dépendance manquante | +| [14](#test-14-remove-source-and-rebuild) | Suppression et reconstruction | Teste la reconstruction après suppression d'un fichier source | +| [15](#test-15-subdir-build) | Construction dans un sous-répertoire | Teste la gestion des chemins relatifs | +| [16](#test-16-strange-variables) | Variables inhabituelles | Teste l'utilisation de variables complexes | +| [17](#test-17-rule-without-command) | Règle sans commande | Teste les règles qui ne spécifient pas de commande | +| [18](#test-18-path-characters) | Caractères spéciaux dans les chemins | Teste la gestion des chemins contenant des caractères spéciaux | +| [19](#test-19-multiple-targets) | Cibles multiples | Teste la définition de plusieurs cibles dans une seule règle | +| [20](#test-20-circular-2) | Dépendances circulaires (cas 2) | Autre scénario de dépendances circulaires | +| [21](#test-21-generate) | Génération de fichiers | Teste la génération dynamique de fichiers | +| [22](#test-22-future-timestamp) | Timestamps dans le futur | Teste la gestion des fichiers avec une date de modification dans le futur | +| [23](#test-23-identical-timestamps) | Timestamps identiques | Teste le comportement quand plusieurs fichiers ont la même date de modification | +| [24](#test-24-50target) | 50 cibles | Teste la gestion d'un grand nombre de cibles | +| [25](#test-25-multilines) | Commandes multi-lignes | Teste l'exécution de commandes sur plusieurs lignes | + +## Détails des tests + +### Test 01: From Nothing +[Accéder au test](test-01-from-nothing/) + +Vérifie la compilation d'un programme C simple lorsqu'aucun fichier exécutable n'existe. Ce test confirme que `bake` peut correctement créer un exécutable à partir d'un fichier source. + +### Test 02: Already Exist +[Accéder au test](test-02-already-exist/) + +Teste le comportement lorsque l'exécutable existe déjà et est à jour. `bake` devrait reconnaître que la cible est déjà à jour et ne pas recompiler inutilement. + +### Test 03: Circular +[Accéder au test](test-03-circular/) + +Vérifie que `bake` peut détecter et gérer correctement les dépendances circulaires dans les règles, évitant les boucles infinies. + +### Test 04: Edited +[Accéder au test](test-04-edited/) + +Teste le comportement lorsqu'un fichier source est modifié. `bake` devrait détecter la modification et recompiler l'exécutable. + +### Test 05: Variables +[Accéder au test](test-05-variables/) + +Vérifie la prise en charge des variables dans les règles `bake`, comme le font les `Makefile` traditionnels. + +### Test 06: Variables on Cascade +[Accéder au test](test-06-variables-on-cascade/) + +Teste la propagation des variables à travers plusieurs niveaux de règles et de dépendances. + +### Test 07: Dependency +[Accéder au test](test-07-dependency/) + +Vérifie la résolution correcte des dépendances entre plusieurs fichiers source et en-têtes. + +### Test 08: Space vs Tabulation +[Accéder au test](test-08-space-vs-tabulation/) + +Teste la gestion des indentations avec des espaces par rapport aux tabulations, qui est une considération importante dans les Makefiles. + +### Test 09: Handling Comment +[Accéder au test](test-09-handling-comment/) + +Vérifie que `bake` gère correctement les commentaires dans les fichiers de règles. + +### Test 10: Phony +[Accéder au test](test-10-phony/) + +Teste les cibles PHONY qui ne correspondent pas à des fichiers réels mais exécutent des commandes (comme `clean` ou `all`). + +### Test 11: Error in Code +[Accéder au test](test-11-error-in-code/) + +Vérifie le comportement de `bake` face à des erreurs dans le code source pendant la compilation. + +### Test 12: File Don't Exist +[Accéder au test](test-12-file-dont-exist/) + +Teste la réaction de `bake` lorsqu'un fichier requis n'existe pas. + +### Test 13: Dependancy Don't Exist +[Accéder au test](test-13-dependancy-dont-exist/) + +Vérifie le comportement de `bake` lorsqu'une dépendance spécifiée n'existe pas. + +### Test 14: Remove Source and Rebuild +[Accéder au test](test-14-remove-source-and-rebuild/) + +Teste la capacité de `bake` à gérer la suppression et la recréation de fichiers source. + +### Test 15: Subdir Build +[Accéder au test](test-15-subdir-build/) + +Vérifie la gestion des chemins relatifs et la compilation de fichiers dans des sous-répertoires. + +### Test 16: Strange Variables +[Accéder au test](test-16-strange-variables/) + +Teste l'utilisation de variables avec des noms ou des valeurs inhabituels ou complexes. + +### Test 17: Rule Without Command +[Accéder au test](test-17-rule-without-command/) + +Vérifie le comportement de `bake` avec des règles qui ne spécifient aucune commande à exécuter. + +### Test 18: Path Characters +[Accéder au test](test-18-path-characters/) + +Teste la gestion des chemins contenant des caractères spéciaux ou des espaces. + +### Test 19: Multiple Targets +[Accéder au test](test-19-multiple-targets/) + +Vérifie la définition et l'exécution de règles avec plusieurs cibles. + +### Test 20: Circular 2 +[Accéder au test](test-20-circular-2/) + +Un scénario alternatif pour tester la détection et la gestion des dépendances circulaires. + +### Test 21: Generate +[Accéder au test](test-21-generate/) + +Teste la génération dynamique de fichiers durant le processus de build. + +### Test 22: Future Timestamp +[Accéder au test](test-22-future-timestamp/) + +Vérifie le comportement de `bake` lorsqu'un fichier source a une date de modification dans le futur. + +### Test 23: Identical Timestamps +[Accéder au test](test-23-identical-timestamps/) + +Teste le comportement lorsque plusieurs fichiers impliqués dans la compilation ont exactement la même date de modification. + +### Test 24: 50target +[Accéder au test](test-24-50target/) + +Vérifie la performance et la stabilité de `bake` avec un grand nombre de cibles (50). + +### Test 25: Multilines +[Accéder au test](test-25-multilines/) + +Teste l'exécution de commandes réparties sur plusieurs lignes dans une règle. \ No newline at end of file