Test 03 - Gestion des dépendances circulaires

Ce test vérifie le comportement de bake comparé à make lorsqu'il existe des dépendances circulaires entre les fichiers du projet.

Sommaire

Structure du test

test-03-circular/
├── README.md         # Ce fichier
├── bake/             
│   ├── Bakefile      # Fichier de règles pour bake
│   ├── bakefile.jar  # Exécutable de bake (JAR)
│   ├── a.c           # Fichier source C
│   ├── a.h           # Fichier d'en-tête C
│   ├── b.c           # Fichier source C
│   ├── b.h           # Fichier d'en-tête C
│   ├── c.c           # Fichier source C
│   └── c.h           # Fichier d'en-tête C
├── make/
│   ├── Makefile      # Fichier de règles pour make
│   ├── a.c           # Fichier source C
│   ├── a.h           # Fichier d'en-tête C
│   ├── b.c           # Fichier source C
│   ├── b.h           # Fichier d'en-tête C
│   ├── c.c           # Fichier source C
│   └── c.h           # Fichier d'en-tête C
└── run_test03.sh     # Programme de test automatique

Contenu des fichiers de règles

Les fichiers Makefile et Bakefile contiennent les mêmes règles :

main: a b c
	gcc a b c -o main

a: a.c a.h b.h
	gcc -Wall -Werror -Wextra -ansi -pedantic -c a.c -o a

b: b.c b.h c.h
	gcc -Wall -Werror -Wextra -ansi -pedantic -c b.c -o b

c: c.c c.h a.h
	gcc -Wall -Werror -Wextra -ansi -pedantic -c c.c -o c

Description des dépendances circulaires

Ce test comporte des dépendances circulaires entre les fichiers :

  • a dépend de b.h
  • b dépend de c.h
  • c dépend de a.h

Ce qui forme une boucle : a → b → c → a

Objectif du test

Ce test vérifie que bake se comporte comme make face à des dépendances circulaires :

  1. Vérifier que les deux outils détectent correctement les dépendances entre les fichiers
  2. Vérifier que les deux outils construisent correctement les cibles dans un ordre permettant de résoudre les dépendances circulaires
  3. Vérifier que tous les fichiers objets et l'exécutable final sont correctement générés
  4. Comparer les messages de sortie et les résultats des deux outils

Comment exécuter le test

Test automatique

  1. Rendez le script de test exécutable :

    chmod +x run_test03.sh
    
  2. Lancez le script de test :

    ./run_test03.sh
    
  3. Consultez les résultats affichés dans le terminal et dans le fichier de log généré dans le répertoire logs/.

Test manuel

  1. Pour Make :

    cd make
    make
    
  2. Pour Bake :

    cd bake
    java -cp bakefile.jar fr.monlouyan.bakefile.Main
    
  3. Comparez les deux résultats.

Résultats attendus

  • Les deux outils devraient détecter les dépendances entre les fichiers
  • Les deux outils devraient générer correctement tous les fichiers objets (a, b, c) malgré les dépendances circulaires
  • Les deux outils devraient générer l'exécutable final main
  • Les messages de sortie devraient être similaires, indiquant l'ordre dans lequel les cibles sont construites

Ce test vérifie la capacité de bake à gérer les dépendances circulaires.