9.5 KiB
Tests de Bake
Cette suite de tests compare le comportement de bake
à celui de make
pour vérifier le bon fonctionnement de l'outil.
Table des tests
N° | Nom du test | Description |
---|---|---|
01 | Compilation depuis zéro | Vérifie la compilation d'un programme à partir de rien |
02 | Fichier déjà existant | Teste le comportement quand l'exécutable est déjà présent |
03 | Dépendances circulaires | Teste la détection des dépendances circulaires |
04 | Fichier modifié | Vérifie la recompilation après modification d'un fichier source |
05 | Variables | Teste l'utilisation des variables dans les règles |
06 | Variables en cascade | Teste la propagation des variables dans les règles |
07 | Dépendances | Teste la résolution des dépendances |
08 | Espaces vs tabulations | Vérifie la gestion des indentations |
09 | Gestion des commentaires | Teste la reconnaissance et l'ignorance des commentaires |
10 | Cibles PHONY | Teste les cibles qui ne produisent pas de fichiers |
11 | Erreur dans le code | Teste le comportement face à des erreurs dans le code source |
12 | Fichier inexistant | Teste le comportement quand un fichier requis n'existe pas |
13 | Dépendance inexistante | Teste le comportement avec une dépendance manquante |
14 | Suppression et reconstruction | Teste la reconstruction après suppression d'un fichier source |
15 | Construction dans un sous-répertoire | Teste la gestion des chemins relatifs |
16 | Variables inhabituelles | Teste l'utilisation de variables complexes |
17 | Règle sans commande | Teste les règles qui ne spécifient pas de commande |
18 | Caractères spéciaux dans les chemins | Teste la gestion des chemins contenant des caractères spéciaux |
19 | Cibles multiples | Teste la définition de plusieurs cibles dans une seule règle |
20 | Dépendances circulaires (cas 2) | Autre scénario de dépendances circulaires |
21 | Génération de fichiers | Teste la génération dynamique de fichiers |
22 | Timestamps dans le futur | Teste la gestion des fichiers avec une date de modification dans le futur |
23 | Timestamps identiques | Teste le comportement quand plusieurs fichiers ont la même date de modification |
24 | 50 cibles | Teste la gestion d'un grand nombre de cibles |
25 | Commandes multi-lignes | Teste l'exécution de commandes sur plusieurs lignes |
26 | Règles imbriquées | Vérifie la gestion des règles générées dynamiquement |
27 | Conditions if |
Teste l'utilisation des conditions dans les fichiers de règles |
28 | Mode silencieux | Vérifie l'exécution des commandes silencieuses (@ ) |
29 | Variables inexistantes | Teste le comportement lorsqu'une variable non définie est utilisée |
30 | Chaînage de commandes | Vérifie l'utilisation des opérateurs && , ` |
31 | Redirections I/O | Vérifie la gestion des redirections (> , >> , < ) et pipes (` |
32 | Gestion de exit |
Teste le comportement des commandes exit pour arrêter l'exécution |
Détails des nouveaux tests
Détails des tests
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
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
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
Teste le comportement lorsqu'un fichier source est modifié. bake
devrait détecter la modification et recompiler l'exécutable.
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
Teste la propagation des variables à travers plusieurs niveaux de règles et de dépendances.
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
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
Vérifie que bake
gère correctement les commentaires dans les fichiers de règles.
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
Vérifie le comportement de bake
face à des erreurs dans le code source pendant la compilation.
Test 12: File Don't Exist
Teste la réaction de bake
lorsqu'un fichier requis n'existe pas.
Test 13: Dependancy Don't Exist
Vérifie le comportement de bake
lorsqu'une dépendance spécifiée n'existe pas.
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
Vérifie la gestion des chemins relatifs et la compilation de fichiers dans des sous-répertoires.
Test 16: Strange Variables
Teste l'utilisation de variables avec des noms ou des valeurs inhabituels ou complexes.
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
Teste la gestion des chemins contenant des caractères spéciaux ou des espaces.
Test 19: Multiple Targets
Vérifie la définition et l'exécution de règles avec plusieurs cibles.
Test 20: Circular 2
Un scénario alternatif pour tester la détection et la gestion des dépendances circulaires.
Test 21: Generate
Teste la génération dynamique de fichiers durant le processus de build.
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
Teste le comportement lorsque plusieurs fichiers impliqués dans la compilation ont exactement la même date de modification.
Test 24: 50target
Vérifie la performance et la stabilité de bake
avec un grand nombre de cibles (50).
Test 25: Multilines
Teste l'exécution de commandes réparties sur plusieurs lignes dans une règle.
Test 26: Règles imbriquées
Vérifie comment bake
et make
gèrent des règles générées dynamiquement.
Test 27: Conditions if
Teste l'utilisation de conditions ifeq
, ifneq
pour ajuster les variables de compilation.
Test 28: Mode silencieux
Vérifie comment bake
et make
gèrent le préfixe @
pour masquer l'affichage des commandes.
Test 29: Variables inexistantes
Teste le comportement lorsqu'une variable non définie est utilisée dans une commande touch $(VAR_INEXISTANTE)
.
Test 30: Chaînage de commandes
Vérifie l'utilisation des opérateurs &&
, ||
et ;
pour chaîner plusieurs commandes dans une règle.
Test 31: Redirections I/O
Teste la gestion des redirections d'entrée et de sortie (>
, >>
, <
) ainsi que des pipes (|
) dans bake
et make
.
Test 32: Gestion de exit
Vérifie comment bake
et make
gèrent les commandes exit
qui arrêtent l'exécution.