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