2025-03-16 12:15:34 +01:00
|
|
|
# Test 31 - Gestion des redirections I/O
|
|
|
|
|
|
|
|
Ce test vérifie comment `bake` et `make` gèrent les redirections d'entrée/sortie (`>`, `>>`, `<`, `|`).
|
|
|
|
|
|
|
|
## 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-31-redirection/
|
|
|
|
├── README.md
|
|
|
|
├── bake/
|
|
|
|
│ ├── Bakefile
|
|
|
|
│ ├── bakefile.jar
|
|
|
|
├── make/
|
|
|
|
│ ├── Makefile
|
|
|
|
```
|
|
|
|
|
|
|
|
## Contenu des fichiers de règles
|
|
|
|
|
|
|
|
```makefile
|
|
|
|
.PHONY: all test-output test-append test-input test-multiple test-pipe test-cleanup
|
|
|
|
|
|
|
|
all: test-output test-append test-input test-multiple test-pipe
|
|
|
|
@echo "Tous les tests de redirection I/O sont terminés"
|
|
|
|
|
|
|
|
# Test de redirection de sortie standard (>)
|
|
|
|
test-output:
|
|
|
|
@echo "Test de redirection de sortie >"
|
|
|
|
echo "Contenu écrit avec redirection >" > output.txt
|
|
|
|
@cat output.txt
|
|
|
|
@echo "-----------------------------"
|
|
|
|
|
|
|
|
# Test de redirection avec ajout (>>)
|
|
|
|
test-append:
|
|
|
|
@echo "Test de redirection avec ajout >>"
|
|
|
|
echo "Première ligne" > append.txt
|
|
|
|
echo "Deuxième ligne ajoutée" >> append.txt
|
|
|
|
@cat append.txt
|
|
|
|
@echo "-----------------------------"
|
|
|
|
|
|
|
|
# Test de redirection d'entrée (<)
|
|
|
|
test-input:
|
|
|
|
@echo "Test de redirection d'entrée <"
|
|
|
|
echo "Contenu à lire" > input.txt
|
|
|
|
cat < input.txt
|
|
|
|
@echo "-----------------------------"
|
|
|
|
|
|
|
|
# Test de redirections multiples
|
|
|
|
test-multiple:
|
|
|
|
@echo "Test de redirections multiples"
|
|
|
|
echo "Ligne 1" > multi.txt
|
|
|
|
echo "Ligne 2" >> multi.txt
|
|
|
|
cat < multi.txt > multi-output.txt
|
|
|
|
@cat multi-output.txt
|
|
|
|
@echo "-----------------------------"
|
|
|
|
|
|
|
|
# Test de pipe |
|
|
|
|
test-pipe:
|
|
|
|
@echo "Test de pipe |"
|
|
|
|
echo "LIGNE UN\nLIGNE DEUX\nLIGNE TROIS" | grep LIGNE | wc -l
|
|
|
|
@echo "-----------------------------"
|
|
|
|
|
|
|
|
# Nettoyage des fichiers créés
|
|
|
|
test-cleanup:
|
|
|
|
@echo "Nettoyage des fichiers de test"
|
|
|
|
rm -f output.txt append.txt input.txt multi.txt multi-output.txt
|
|
|
|
```
|
|
|
|
|
|
|
|
## Objectif du test
|
|
|
|
|
|
|
|
Ce test vérifie que `bake` et `make` :
|
|
|
|
1. Gèrent correctement la redirection de sortie standard `>` et `>>`.
|
|
|
|
2. Lisent des fichiers en redirigeant l'entrée `<`.
|
|
|
|
3. Traitent les redirections combinées (`<` et `>` en même temps).
|
|
|
|
4. Gèrent correctement les pipes `|` pour la manipulation de commandes.
|
|
|
|
|
|
|
|
## Scénario de test
|
|
|
|
|
|
|
|
1. Exécuter `make` et `bake` pour voir la gestion des redirections.
|
|
|
|
2. Vérifier le contenu des fichiers créés.
|
|
|
|
3. Supprimer les fichiers après le test.
|
|
|
|
|
|
|
|
## Test manuel
|
|
|
|
|
|
|
|
```bash
|
|
|
|
cd make
|
|
|
|
make all
|
|
|
|
make test-cleanup
|
|
|
|
|
|
|
|
cd bake
|
|
|
|
java -cp bakefile.jar fr.monlouyan.bakefile.Main all
|
|
|
|
java -cp bakefile.jar fr.monlouyan.bakefile.Main test-cleanup
|
|
|
|
```
|
|
|
|
|
|
|
|
## Résultats attendus
|
|
|
|
|
|
|
|
- Les fichiers créés doivent contenir les résultats attendus des redirections.
|
|
|
|
- Les pipes doivent fonctionner comme prévu.
|