100 lines
3.1 KiB
Markdown
Raw Normal View History

# 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.