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