75 lines
1.9 KiB
Markdown
75 lines
1.9 KiB
Markdown
# Test 28 - Gestion des commandes silencieuses et suppression forcée
|
|
|
|
Ce test vérifie comment `bake` et `make` gèrent les commandes silencieuses (`@`) et la suppression forcée (`-`).
|
|
|
|
## 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-28-silent/
|
|
├── README.md
|
|
├── bake/
|
|
│ ├── Bakefile
|
|
│ ├── bakefile.jar
|
|
├── make/
|
|
│ ├── Makefile
|
|
```
|
|
|
|
## Contenu des fichiers de règles
|
|
|
|
Les fichiers `Makefile` et `Bakefile` contiennent :
|
|
|
|
```makefile
|
|
all: main
|
|
|
|
main:
|
|
echo "Compilation de main..."
|
|
touch main
|
|
|
|
clean:
|
|
- rm main
|
|
@echo "Fichiers nettoyés."
|
|
```
|
|
|
|
## Objectif du test
|
|
|
|
Ce test vérifie que `bake` et `make` :
|
|
1. Exécutent les commandes de compilation normalement.
|
|
2. Gèrent correctement le `-` devant `rm` pour ignorer les erreurs si le fichier n'existe pas.
|
|
3. Masquent l'affichage de la commande `echo "Fichiers nettoyés."` grâce à `@`.
|
|
|
|
## Scénario de test
|
|
|
|
1. Exécuter `make` et `bake` pour compiler `main`.
|
|
2. Exécuter la cible `clean` et observer la suppression.
|
|
3. Exécuter `make clean` et `bake clean` quand `main` n'existe pas pour vérifier que l'erreur est ignorée.
|
|
|
|
## Comment exécuter le test
|
|
|
|
### Test manuel
|
|
|
|
```bash
|
|
cd make
|
|
make
|
|
make clean
|
|
make clean # Tester la suppression sans le fichier
|
|
|
|
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 clean
|
|
```
|
|
|
|
## Résultats attendus
|
|
|
|
- `bake` et `make` doivent exécuter `clean` sans erreur même si `main` n'existe pas.
|
|
- La suppression doit être silencieuse (grâce au `@`).
|