Ajout README.md tests : 5,6,7,8

This commit is contained in:
Yanis HAMOUDI 2025-03-03 13:57:20 +01:00
parent 2923396891
commit cbcfd60ab1
4 changed files with 387 additions and 3 deletions
tests/C
test-05-variables
test-06-variables-on-cascade
test-07-dependency
test-08-space-vs-tabulation

@ -1 +1,88 @@
# Test 5 : Utilisation de variables
# Test 05 - Utilisation de variables
Ce test vérifie la prise en charge des variables dans `bake` et `make`, en comparant leur comportement lors de la compilation d'un programme simple.
## 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 automatique](#test-automatique)
- [Test manuel](#test-manuel)
- [Résultats attendus](#résultats-attendus)
## Structure du test
```
test-05-variables/
├── 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
└── run_test05.sh # Programme de test automatique
```
## Contenu des fichiers de règles
Les fichiers `Makefile` et `Bakefile` utilisent des variables pour améliorer la lisibilité et la maintenance :
```makefile
FLAGS = -ansi -pedantic
COMPILATEUR = gcc
OPTIONS = -o
EXECUTABLE = main
SOURCE = main.c
main: main.c
$(COMPILATEUR) $(FLAGS) $(OPTIONS) $(EXECUTABLE) $(SOURCE)
```
## Objectif du test
Ce test vérifie que `bake` et `make` interprètent correctement les variables :
1. Vérifier que les variables définies dans le fichier de règles sont bien reconnues et substituées dans les commandes.
2. Vérifier que la compilation se déroule correctement en utilisant les variables.
3. Comparer les messages de sortie de `bake` et `make` pour s'assurer qu'ils prennent en compte les variables correctement.
## Comment exécuter le test
### Test automatique
1. Rendez le script de test exécutable :
```bash
chmod +x run_test05.sh
```
2. Lancez le script de test :
```bash
./run_test05.sh
```
3. Consultez les résultats affichés dans le terminal et dans le fichier de log généré dans le répertoire `logs/`.
### 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 reconnaître et substituer correctement les variables dans les commandes.
- La compilation devrait aboutir et produire un exécutable `main`.
- Les messages de sortie devraient indiquer clairement que les variables ont été utilisées dans la commande de compilation.
- Si les variables ne sont pas prises en compte correctement, `bake` pourrait échouer à compiler `main.c`.

@ -1 +1,90 @@
# Test 6 : Gestion des variables en cascade
# 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 automatique](#test-automatique)
- [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
└── run_test06.sh # Programme de test automatique
```
## 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 automatique
1. Rendez le script de test exécutable :
```bash
chmod +x run_test06.sh
```
2. Lancez le script de test :
```bash
./run_test06.sh
```
3. Consultez les résultats affichés dans le terminal et dans le fichier de log généré dans le répertoire `logs/`.
### 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.

@ -1 +1,120 @@
Dépendances multiples : Vérifier que si un fichier .c dépend de plusieurs fichiers .h, toute modification d'un .h entraîne la recompilation du .c.
# Test 07 - Dépendances multiples
Ce test vérifie que si un fichier `.c` dépend de plusieurs fichiers `.h`, toute modification d'un `.h` entraîne la recompilation du fichier `.c` concerné.
## 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 automatique](#test-automatique)
- [Test manuel](#test-manuel)
- [Résultats attendus](#résultats-attendus)
## Structure du test
```
test-07-dependances/
├── README.md # Ce fichier
├── bake/
│ ├── Bakefile # Fichier de règles pour bake
│ ├── bakefile.jar # Exécutable de bake (JAR)
│ ├── main.c # Fichier source principal
│ ├── module.c # Fichier source du module
│ ├── module.h # Fichier d'en-tête
├── make/
│ ├── Makefile # Fichier de règles pour make
│ ├── main.c # Fichier source principal
│ ├── module.c # Fichier source du module
│ ├── module.h # Fichier d'en-tête
└── run_test07.sh # Programme de test automatique
```
## Contenu des fichiers de règles
Les fichiers `Makefile` et `Bakefile` contiennent les règles suivantes :
```makefile
CC = gcc
CFLAGS = -Wall -Wextra -Werror
# Règle par défaut
all: program
# Compilation de l'exécutable
program: main.o module.o
$(CC) $(CFLAGS) -o program main.o module.o
# Compilation des fichiers .c en .o
main.o: main.c module.h
$(CC) $(CFLAGS) -c main.c -o main.o
module.o: module.c module.h
$(CC) $(CFLAGS) -c module.c -o module.o
# Nettoyage des fichiers objets et de l'exécutable
clean:
rm -f main.o module.o program
# Nettoyage complet
mrproper: clean
# Force la recompilation
rebuild: clean all
```
## Objectif du test
Ce test vérifie que `bake` et `make` prennent en compte correctement les dépendances multiples :
1. Modifier le fichier `module.h` doit entraîner la recompilation de `main.o` et `module.o`.
2. Exécuter `make` ou `bake` sans modification ne doit rien recompiler.
3. Comparer les messages de sortie pour s'assurer que `bake` et `make` gèrent les dépendances de manière similaire.
## Comment exécuter le test
### Test automatique
1. Rendez le script de test exécutable :
```bash
chmod +x run_test07.sh
```
2. Lancez le script de test :
```bash
./run_test07.sh
```
3. Consultez les résultats affichés dans le terminal et dans le fichier de log généré dans le répertoire `logs/`.
### Test manuel
1. Compilez avec Make :
```bash
cd make
make
```
2. Modifiez `module.h` :
```bash
echo "// Modification pour test" >> module.h
```
3. Recompilez avec Make :
```bash
make
```
4. Faites la même procédure avec Bake :
```bash
cd bake
java -cp bakefile.jar fr.monlouyan.bakefile.Main
```
5. Comparez les résultats et les messages affichés.
## Résultats attendus
- Les deux outils devraient détecter les modifications de `module.h` et recompiler `main.o` et `module.o`.
- Sans modification, `bake` et `make` ne doivent pas relancer la compilation.
- Les messages de sortie devraient indiquer clairement quelles parties du programme ont été recompilées.
- Si `bake` ne gère pas correctement les dépendances, il pourrait ne pas recompiler les fichiers nécessaires ou les recompiler inutilement.

@ -0,0 +1,89 @@
# Test 08 - Gestion des espaces et tabulations
Ce test vérifie que `bake` et `make` gèrent correctement les tabulations et les espaces dans les fichiers de règles.
Un mauvais usage des espaces au lieu des tabulations devrait provoquer une erreur.
## 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 automatique](#test-automatique)
- [Test manuel](#test-manuel)
- [Résultats attendus](#résultats-attendus)
## Structure du test
```
test-08-tabulations/
├── 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
└── run_test08.sh # Programme de test automatique
```
## Contenu des fichiers de règles
Les fichiers `Makefile` et `Bakefile` contiennent les règles suivantes :
```makefile
all:
echo "Cette ligne est correcte"
test_espaces:
echo "Cette ligne utilise une tabulation"
echo "Cette ligne utilise des espaces et doit provoquer une erreur"
```
## Objectif du test
Ce test vérifie que `bake` et `make` appliquent correctement la règle selon laquelle les commandes doivent être indentées avec des tabulations et non des espaces :
1. La cible `all` doit s'exécuter sans erreur.
2. La cible `test_espaces` doit provoquer une erreur à cause de l'utilisation d'espaces au lieu d'une tabulation.
3. Comparer les messages d'erreur de `bake` et `make`.
## Comment exécuter le test
### Test automatique
1. Rendez le script de test exécutable :
```bash
chmod +x run_test08.sh
```
2. Lancez le script de test :
```bash
./run_test08.sh
```
3. Consultez les résultats affichés dans le terminal et dans le fichier de log généré dans le répertoire `logs/`.
### Test manuel
1. Exécutez la règle correcte avec Make :
```bash
cd make
make all
```
2. Exécutez la règle incorrecte :
```bash
make test_espaces
```
Une erreur doit apparaître.
3. Faites la même procédure avec Bake :
```bash
cd bake
java -cp bakefile.jar fr.monlouyan.bakefile.Main all
java -cp bakefile.jar fr.monlouyan.bakefile.Main test_espaces
```
## Résultats attendus
- `make all` et `bake all` doivent s'exécuter sans erreur.
- `make test_espaces` et `bake test_espaces` doivent échouer en indiquant que la ligne est mal formatée.
- Les messages d'erreur doivent indiquer clairement l'origine du problème (espaces au lieu de tabulations).