..
2025-03-10 13:21:31 +01:00
2025-03-10 13:21:31 +01:00
2025-03-10 13:21:31 +01:00

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

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

Accéder au test

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

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

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

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

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

Teste la propagation des variables à travers plusieurs niveaux de règles et de dépendances.

Test 07: Dependency

Accéder au test

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

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

Vérifie que bake gère correctement les commentaires dans les fichiers de règles.

Test 10: Phony

Accéder au test

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

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

Teste la réaction de bake lorsqu'un fichier requis n'existe pas.

Test 13: Dependancy Don't Exist

Accéder au test

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

Teste la capacité de bake à gérer la suppression et la recréation de fichiers source.

Test 15: Subdir Build

Accéder au test

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

Teste l'utilisation de variables avec des noms ou des valeurs inhabituels ou complexes.

Test 17: Rule Without Command

Accéder au test

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

Teste la gestion des chemins contenant des caractères spéciaux ou des espaces.

Test 19: Multiple Targets

Accéder au test

Vérifie la définition et l'exécution de règles avec plusieurs cibles.

Test 20: Circular 2

Accéder au test

Un scénario alternatif pour tester la détection et la gestion des dépendances circulaires.

Test 21: Generate

Accéder au test

Teste la génération dynamique de fichiers durant le processus de build.

Test 22: Future Timestamp

Accéder au test

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

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

Vérifie la performance et la stabilité de bake avec un grand nombre de cibles (50).

Test 25: Multilines

Accéder au test

Teste l'exécution de commandes réparties sur plusieurs lignes dans une règle.

Test 26: Règles imbriquées

Test détaillé

Vérifie comment bake et make gèrent des règles générées dynamiquement.

Test 27: Conditions if

Test détaillé

Teste l'utilisation de conditions ifeq, ifneq pour ajuster les variables de compilation.

Test 28: Mode silencieux

Test détaillé

Vérifie comment bake et make gèrent le préfixe @ pour masquer l'affichage des commandes.

Test 29: Variables inexistantes

Test détaillé

Teste le comportement lorsqu'une variable non définie est utilisée dans une commande touch $(VAR_INEXISTANTE).

Test 30: Chaînage de commandes

Test détaillé

Vérifie l'utilisation des opérateurs &&, || et ; pour chaîner plusieurs commandes dans une règle.

Test 31: Redirections I/O

Test détaillé

Teste la gestion des redirections d'entrée et de sortie (>, >>, <) ainsi que des pipes (|) dans bake et make.

Test 32: Gestion de exit

Test détaillé

Vérifie comment bake et make gèrent les commandes exit qui arrêtent l'exécution.