107 lines
2.9 KiB
Markdown
Raw Permalink Normal View History

# 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.