# Test 27 - Gestion des conditions IF Ce test vérifie comment `bake` et `make` gèrent les conditions `if` dans les commandes de compilation, en particulier pour tester l'existence d'un fichier avant de l'écraser ou de le recréer. ## 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) - [Scénario de test](#scénario-de-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-27-conditions-if/ ├── 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 la logique conditionnelle suivante : ```makefile # Définition de la cible principale all: fichier.txt @echo "La cible fichier.txt est à jour." # Cible qui vérifie si le fichier existe # Si le fichier existe, ne rien faire # Sinon, le créer avec touch fichier.txt: @if [ -f "fichier.txt" ]; then echo "Le fichier fichier.txt existe déjà, rien à faire."; else echo "Le fichier fichier.txt n'existe pas, création..."; touch fichier.txt; echo "Le fichier fichier.txt a été créé."; fi # Cible pour nettoyer le fichier créé .PHONY: clean clean: @echo "Suppression de fichier.txt..." @rm -f fichier.txt ``` ## Objectif du test Ce test a pour but de vérifier que `bake` et `make` : 1. Vérifient correctement si `fichier.txt` existe avant de l'écraser. 2. N'exécutent pas la création de `fichier.txt` si celui-ci existe déjà. 3. Suppriment `fichier.txt` proprement avec la cible `clean`. ## Scénario de test 1. Exécuter `make` et `bake` une première fois pour voir la création du fichier. 2. Exécuter `make` et `bake` une seconde fois pour voir si la condition empêche la recréation du fichier. 3. Supprimer `fichier.txt` et relancer `make` et `bake` pour vérifier que le fichier est bien recréé. ## Comment exécuter le test ### Test manuel 1. Exécuter `make` et `bake` : ```bash cd make make ``` Le fichier `fichier.txt` doit être créé. 2. Exécuter `make` et `bake` à nouveau : ```bash make ``` Il ne doit pas y avoir de recréation du fichier. 3. Supprimer `fichier.txt` et relancer `make` : ```bash make clean make ``` Le fichier doit être recréé. 4. Répéter les mêmes étapes avec `bake` : ```bash cd bake java -cp bakefile.jar fr.monlouyan.bakefile.Main java -cp bakefile.jar fr.monlouyan.bakefile.Main clean java -cp bakefile.jar fr.monlouyan.bakefile.Main ``` 5. Vérifier les résultats et comparer le comportement avec `make`. ## Résultats attendus - `bake` et `make` doivent créer `fichier.txt` uniquement si celui-ci n'existe pas. - Un deuxième appel à `make` ou `bake` ne doit pas recréer `fichier.txt` s'il est déjà présent. - La cible `clean` doit supprimer le fichier proprement.