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
- Contenu des fichiers de règles
- Objectif du test
- Scénario de test
- Comment exécuter le test
- 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 :
# 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 :
- Vérifient correctement si
fichier.txtexiste avant de l'écraser. - N'exécutent pas la création de
fichier.txtsi celui-ci existe déjà. - Suppriment
fichier.txtproprement avec la cibleclean.
Scénario de test
- Exécuter
makeetbakeune première fois pour voir la création du fichier. - Exécuter
makeetbakeune seconde fois pour voir si la condition empêche la recréation du fichier. - Supprimer
fichier.txtet relancermakeetbakepour vérifier que le fichier est bien recréé.
Comment exécuter le test
Test manuel
-
Exécuter
makeetbake:cd make makeLe fichier
fichier.txtdoit être créé. -
Exécuter
makeetbakeà nouveau :makeIl ne doit pas y avoir de recréation du fichier.
-
Supprimer
fichier.txtet relancermake:make clean makeLe fichier doit être recréé.
-
Répéter les mêmes étapes avec
bake: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 -
Vérifier les résultats et comparer le comportement avec
make.
Résultats attendus
bakeetmakedoivent créerfichier.txtuniquement si celui-ci n'existe pas.- Un deuxième appel à
makeoubakene doit pas recréerfichier.txts'il est déjà présent. - La cible
cleandoit supprimer le fichier proprement.