Test 10 - Gestion des cibles .PHONY

Ce test vérifie que bake et make gèrent correctement les cibles .PHONY, qui ne correspondent pas à des fichiers mais à des commandes spécifiques comme clean.

Sommaire

Structure du test

test-10-phony/
├── README.md         # Ce fichier
├── bake/             
│   ├── Bakefile      # Fichier de règles pour bake
│   ├── bakefile.jar  # Exécutable de bake (JAR)
│   ├── main.c        # Fichier source principal
│   ├── module.c      # Fichier source du module
│   ├── module.h      # Fichier d'en-tête
├── make/
│   ├── Makefile      # Fichier de règles pour make
│   ├── main.c        # Fichier source principal
│   ├── module.c      # Fichier source du module
│   ├── module.h      # Fichier d'en-tête
└── run_test10.sh     # Programme de test automatique

Contenu des fichiers de règles

Les fichiers Makefile et Bakefile contiennent les règles suivantes, incluant une cible .PHONY pour clean :

.PHONY: clean

all: program

program: main.o module.o
	gcc -o program main.o module.o

main.o: main.c
	gcc -c main.c -o main.o

module.o: module.c
	gcc -c module.c -o module.o

clean:
	rm -f program main.o module.o
	echo "Clean executed!"

Objectif du test

Ce test vérifie que bake et make gèrent correctement les cibles .PHONY :

  1. La cible clean doit toujours s'exécuter même si les fichiers à supprimer n'existent pas.
  2. La compilation doit fonctionner normalement et générer l'exécutable program.
  3. Comparer les messages de sortie pour s'assurer que bake et make gèrent .PHONY de la même manière.

Comment exécuter le test

Test automatique

  1. Rendez le script de test exécutable :

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

    ./run_test10.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. Compilez avec Make :

    cd make
    make
    
  2. Exécutez la cible clean :

    make clean
    

    Vous devez voir Clean executed! affiché.

  3. Faites la même procédure avec Bake :

    cd bake
    java -cp bakefile.jar fr.monlouyan.bakefile.Main clean
    
  4. Comparez les résultats et les messages affichés.

Résultats attendus

  • make clean et bake clean doivent exécuter la commande de nettoyage sans erreur.
  • Clean executed! doit s'afficher après l'exécution de la cible clean.
  • make all et bake all doivent compiler correctement le programme.
  • Si bake ne gère pas correctement .PHONY, la cible clean pourrait ne pas s'exécuter ou ne pas fonctionner correctement.