95 lines
2.7 KiB
Markdown
95 lines
2.7 KiB
Markdown
|
# 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.
|