# Test 18 - Gestion des caractères spéciaux dans les chemins

Ce test vérifie si `bake` et `make` gèrent correctement les chemins contenant divers types de caractères,
comme `~` pour le répertoire personnel, `/tmp/`, des chemins avec des barres obliques `/`, des tirets `-`, et des underscores `_`.

## 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 manuel](#test-manuel)
- [Résultats attendus](#résultats-attendus)

## Structure du test

```
test-18-path-characters/
├── README.md         # Ce fichier
├── bake/             
│   ├── Bakefile      # Fichier de règles pour bake
│   ├── bakefile.jar  # Exécutable de bake (JAR)
└── make/
    └── Makefile      # Fichier de règles pour make
```

## Contenu des fichiers de règles

Les fichiers `Makefile` et `Bakefile` contiennent les règles suivantes :

```makefile
all: ~/temp/test.txt /tmp/test.txt ./path/with/slashes/test.txt path-with-dashes.txt path_with_underscores.txt

~/temp/test.txt:
	mkdir -p ~/temp
	echo "Content in home directory" > ~/temp/test.txt

/tmp/test.txt:
	echo "Content in tmp directory" > /tmp/test.txt

./path/with/slashes/test.txt:
	mkdir -p ./path/with/slashes
	echo "Content in path with slashes" > ./path/with/slashes/test.txt

path-with-dashes.txt:
	echo "Content in file with dashes" > path-with-dashes.txt

path_with_underscores.txt:
	echo "Content in file with underscores" > path_with_underscores.txt

clean:
	rm -rf ~/temp/test.txt /tmp/test.txt ./path/with/slashes path-with-dashes.txt path_with_underscores.txt
```

## Objectif du test

Ce test vérifie que `bake` et `make` :
1. Interprètent correctement les chemins contenant des caractères spéciaux comme `~`, `/`, `-`, et `_`.
2. Créent les fichiers aux emplacements indiqués.
3. Nettoient correctement les fichiers avec la cible `clean`.
4. Comparent les messages de sortie pour s'assurer que `bake` et `make` gèrent les chemins de manière identique.

## Comment exécuter le test

### Test manuel

1. Générez les fichiers avec Make : 
   ```bash
   cd make
   make
   ```
   Tous les fichiers doivent être créés aux emplacements spécifiés.

2. Vérifiez que les fichiers existent :
   ```bash
   ls ~/temp/test.txt /tmp/test.txt ./path/with/slashes/test.txt path-with-dashes.txt path_with_underscores.txt
   ```

3. Faites la même procédure avec Bake : 
   ```bash
   cd bake
   java -cp bakefile.jar fr.monlouyan.bakefile.Main
   ```

4. Exécutez le nettoyage :
   ```bash
   make clean
   ```
   Tous les fichiers doivent être supprimés.

5. Comparez les résultats et les messages affichés.

## Résultats attendus

- `bake` et `make` doivent interpréter correctement les chemins et créer les fichiers sans erreur.
- Tous les fichiers doivent être créés aux bons emplacements.
- La cible `clean` doit supprimer correctement tous les fichiers.
