SAE32_2024/tests/test-19-multiple-targets

Test 19 - Gestion des cibles multiples

Ce test vérifie si bake et make gèrent correctement les règles ayant plusieurs cibles et leurs dépendances.

Sommaire

Structure du test

test-19-multiple-targets/
├── README.md         # Ce fichier
├── bake/             
│   ├── Bakefile      # Fichier de règles pour bake
│   ├── bakefile.jar  # Exécutable de bake (JAR)
└── make/
    └── Makefile      # Fichier de règles pour make

Contenu des fichiers de règles

Les fichiers Makefile et Bakefile contiennent les règles suivantes :

# Règle avec plusieurs cibles et sans dépendance
target1 target2 target3:
	echo "Première règle avec 3 cibles séparées par des espaces"
	touch target1 target2 target3

# Règle avec plusieurs cibles et avec dépendances
file1 file2: target1 target2
	echo "Deuxième règle avec 2 cibles et 2 dépendances"
	echo "Contenu 1" > file1
	echo "Contenu 2" > file2

# Règle avec une seule cible et plusieurs dépendances
final: file1 file2 target3
	echo "Règle finale qui dépend de tout le reste"
	cat file1 file2 > final

# Règle pour nettoyer
clean:
	rm -f target1 target2 target3 file1 file2 final

Objectif du test

Ce test vérifie que bake et make :

  1. Interprètent correctement les règles ayant plusieurs cibles.
  2. Créent toutes les cibles indiquées par une même règle.
  3. Exécutent les dépendances dans l'ordre correct.
  4. Produisent un fichier final final contenant les résultats de file1 et file2.
  5. Suppriment correctement tous les fichiers avec la cible clean.

Comment exécuter le test

Test manuel

  1. Exécutez la compilation avec Make :

    cd make
    make
    

    Tous les fichiers doivent être créés correctement.

  2. Vérifiez que final contient bien les contenus de file1 et file2 :

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

    cd bake
    java -cp bakefile.jar fr.monlouyan.bakefile.Main
    
  4. Exécutez le nettoyage :

    make clean
    

    Tous les fichiers doivent être supprimés.

  5. Comparez les résultats et les messages affichés.

Résultats attendus

  • bake et make doivent interpréter correctement les règles avec plusieurs cibles.
  • Tous les fichiers doivent être créés aux bons emplacements.
  • La cible clean doit supprimer correctement tous les fichiers.