75 lines
2.3 KiB
Markdown
Raw Normal View History

2025-03-03 13:57:20 +01:00
# 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
2025-03-10 13:21:31 +01:00
└──make/
├── Makefile # Fichier de règles pour make
└── main.c # Fichier source C
2025-03-03 13:57:20 +01:00
```
## 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.