95 lines
2.7 KiB
Markdown
Raw Normal View History

2025-03-10 13:21:31 +01:00
# Test 19 - Gestion des cibles multiples
Ce test vérifie si `bake` et `make` gèrent correctement les règles ayant plusieurs cibles et leurs dépendances.
## 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-19-multiple-targets/
├── 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
# Règle avec plusieurs cibles et sans dépendance
target1 target2 target3:
echo "Première règle avec 3 cibles séparées par des espaces"
touch target1 target2 target3
# Règle avec plusieurs cibles et avec dépendances
file1 file2: target1 target2
echo "Deuxième règle avec 2 cibles et 2 dépendances"
echo "Contenu 1" > file1
echo "Contenu 2" > file2
# Règle avec une seule cible et plusieurs dépendances
final: file1 file2 target3
echo "Règle finale qui dépend de tout le reste"
cat file1 file2 > final
# Règle pour nettoyer
clean:
rm -f target1 target2 target3 file1 file2 final
```
## Objectif du test
Ce test vérifie que `bake` et `make` :
1. Interprètent correctement les règles ayant plusieurs cibles.
2. Créent toutes les cibles indiquées par une même règle.
3. Exécutent les dépendances dans l'ordre correct.
4. Produisent un fichier final `final` contenant les résultats de `file1` et `file2`.
5. Suppriment correctement tous les fichiers avec la cible `clean`.
## Comment exécuter le test
### Test manuel
1. Exécutez la compilation avec Make :
```bash
cd make
make
```
Tous les fichiers doivent être créés correctement.
2. Vérifiez que `final` contient bien les contenus de `file1` et `file2` :
```bash
cat final
```
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 règles avec plusieurs cibles.
- Tous les fichiers doivent être créés aux bons emplacements.
- La cible `clean` doit supprimer correctement tous les fichiers.