ajout README 9 à 17
This commit is contained in:
106
tests/C/test-10-phony/README.md
Normal file
106
tests/C/test-10-phony/README.md
Normal file
@@ -0,0 +1,106 @@
|
||||
# Test 10 - Gestion des cibles .PHONY
|
||||
|
||||
Ce test vérifie que `bake` et `make` gèrent correctement les cibles `.PHONY`, qui ne correspondent pas à des fichiers mais à des commandes spécifiques comme `clean`.
|
||||
|
||||
## 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-10-phony/
|
||||
├── 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_test10.sh # Programme de test automatique
|
||||
```
|
||||
|
||||
## Contenu des fichiers de règles
|
||||
|
||||
Les fichiers `Makefile` et `Bakefile` contiennent les règles suivantes, incluant une cible `.PHONY` pour `clean` :
|
||||
|
||||
```makefile
|
||||
.PHONY: clean
|
||||
|
||||
all: program
|
||||
|
||||
program: main.o module.o
|
||||
gcc -o program main.o module.o
|
||||
|
||||
main.o: main.c
|
||||
gcc -c main.c -o main.o
|
||||
|
||||
module.o: module.c
|
||||
gcc -c module.c -o module.o
|
||||
|
||||
clean:
|
||||
rm -f program main.o module.o
|
||||
echo "Clean executed!"
|
||||
```
|
||||
|
||||
## Objectif du test
|
||||
|
||||
Ce test vérifie que `bake` et `make` gèrent correctement les cibles `.PHONY` :
|
||||
1. La cible `clean` doit toujours s'exécuter même si les fichiers à supprimer n'existent pas.
|
||||
2. La compilation doit fonctionner normalement et générer l'exécutable `program`.
|
||||
3. Comparer les messages de sortie pour s'assurer que `bake` et `make` gèrent `.PHONY` de la même manière.
|
||||
|
||||
## Comment exécuter le test
|
||||
|
||||
### Test automatique
|
||||
|
||||
1. Rendez le script de test exécutable :
|
||||
```bash
|
||||
chmod +x run_test10.sh
|
||||
```
|
||||
|
||||
2. Lancez le script de test :
|
||||
```bash
|
||||
./run_test10.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. Exécutez la cible `clean` :
|
||||
```bash
|
||||
make clean
|
||||
```
|
||||
Vous devez voir `Clean executed!` affiché.
|
||||
|
||||
3. Faites la même procédure avec Bake :
|
||||
```bash
|
||||
cd bake
|
||||
java -cp bakefile.jar fr.monlouyan.bakefile.Main clean
|
||||
```
|
||||
|
||||
4. Comparez les résultats et les messages affichés.
|
||||
|
||||
## Résultats attendus
|
||||
|
||||
- `make clean` et `bake clean` doivent exécuter la commande de nettoyage sans erreur.
|
||||
- `Clean executed!` doit s'afficher après l'exécution de la cible `clean`.
|
||||
- `make all` et `bake all` doivent compiler correctement le programme.
|
||||
- Si `bake` ne gère pas correctement `.PHONY`, la cible `clean` pourrait ne pas s'exécuter ou ne pas fonctionner correctement.
|
Reference in New Issue
Block a user