# 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](#structure-du-test) - [Contenu des fichiers de règles](#contenu-des-fichiers-de-règles) - [Objectif du test](#objectif-du-test) - [Comment exécuter le test](#comment-exécuter-le-test) - [Test manuel](#test-manuel) - [Résultats attendus](#résultats-attendus) ## 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 : ```makefile # 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 : ```bash cd make make ``` Tous les fichiers doivent être créés correctement. 2. Vérifiez que `final` contient bien les contenus de `file1` et `file2` : ```bash cat final ``` 3. Faites la même procédure avec Bake : ```bash cd bake java -cp bakefile.jar fr.monlouyan.bakefile.Main ``` 4. Exécutez le nettoyage : ```bash 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.