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.txt
existe avant de l'écraser. - N'exécutent pas la création de
fichier.txt
si celui-ci existe déjà. - Suppriment
fichier.txt
proprement avec la cibleclean
.
Scénario de test
- Exécuter
make
etbake
une première fois pour voir la création du fichier. - Exécuter
make
etbake
une seconde fois pour voir si la condition empêche la recréation du fichier. - Supprimer
fichier.txt
et relancermake
etbake
pour vérifier que le fichier est bien recréé.
Comment exécuter le test
Test manuel
-
Exécuter
make
etbake
:cd make make
Le fichier
fichier.txt
doit être créé. -
Exécuter
make
etbake
à nouveau :make
Il ne doit pas y avoir de recréation du fichier.
-
Supprimer
fichier.txt
et relancermake
:make clean make
Le 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
bake
etmake
doivent créerfichier.txt
uniquement si celui-ci n'existe pas.- Un deuxième appel à
make
oubake
ne doit pas recréerfichier.txt
s'il est déjà présent. - La cible
clean
doit supprimer le fichier proprement.