# Test 06 - Gestion des variables en cascade

Ce test vérifie la prise en charge des variables en cascade dans `bake` et `make`, en analysant leur propagation correcte dans les commandes de compilation.

## 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)
- [Comment exécuter le test](#comment-exécuter-le-test)
  - [Test manuel](#test-manuel)
- [Résultats attendus](#résultats-attendus)

## Structure du test

```
test-06-cascade/
├── README.md         # Ce fichier
├── bake/             
│   ├── Bakefile      # Fichier de règles pour bake
│   ├── bakefile.jar  # Exécutable de bake (JAR)
│   ├── main.c        # Fichier source C
└──make/
    ├── Makefile      # Fichier de règles pour make
    └── main.c        # Fichier source C
```

## Contenu des fichiers de règles

Les fichiers `Makefile` et `Bakefile` utilisent des variables imbriquées pour tester la substitution en cascade :

```makefile
FLAGS = -ansi -pedantic
FLAGSS = $(FLAGS)
FLAGSSS = $(FLAGSS)
FLAGSSSS = $(FLAGSSS)
FLAGSSSSS = $(FLAGSSSS)
FLAGSSSSSS = $(FLAGSSSSS)
FLAGSSSSSSS = $(FLAGSSSSSS)

main: main.c
	gcc $(FLAGSSSSSSS) -o main main.c
```

## Objectif du test

Ce test vérifie que `bake` et `make` gèrent correctement les variables définies en cascade :
1. Vérifier que chaque variable est correctement remplacée par sa valeur résolue.
2. Vérifier que la compilation se déroule sans erreur et produit l'exécutable `main`.
3. Comparer les messages de sortie pour observer la propagation des variables.

## Comment exécuter le test

### Test manuel

1. Compilez avec Make : 
   ```bash
   cd make
   make
   ```

2. Compilez avec Bake : 
   ```bash
   cd bake
   java -cp bakefile.jar fr.monlouyan.bakefile.Main
   ```

3. Comparez les résultats et les messages affichés.

## Résultats attendus

- Les deux outils devraient correctement remplacer les variables en cascade.
- La compilation devrait aboutir et produire un exécutable `main`.
- Les messages de sortie devraient indiquer clairement l'expansion des variables imbriquées.
- Si `bake` ne gère pas correctement la propagation des variables, la compilation pourrait échouer ou utiliser des valeurs incorrectes.
