Test 24 - Chaîne de dépendances longues
Ce test vérifie la manière dont bake
et make
gèrent une longue série de dépendances en cascade, où chaque cible dépend de la précédente.
Sommaire
- Structure du test
- Contenu des fichiers de règles
- Objectif du test
- Scénario de test
- Comment exécuter le test
- Résultats attendus
Structure du test
test-24-long-dependency-chain/
├── 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 une longue chaîne de dépendances comme suit :
all: target50
target50: target49
echo "Building target50"
target49: target48
echo "Building target49"
...
target2: target1
echo "Building target2"
target1:
echo "Building target1"
Objectif du test
Ce test vérifie que bake
et make
:
- Résolvent correctement une longue chaîne de dépendances.
- Exécutent les cibles dans le bon ordre, en commençant par
target1
jusqu'àtarget50
. - Ne rencontrent pas de limitations de profondeur de résolution des dépendances.
- Comparent les messages de sortie pour s'assurer que
bake
etmake
ont le même comportement.
Scénario de test
- Exécuter
make
etbake
sans fichiers préexistants pour observer la construction de toutes les cibles. - Réexécuter
make
etbake
pour voir s'ils détectent que toutes les cibles sont déjà construites et n'ont pas besoin d'être reconstituées.
Comment exécuter le test
Test manuel
-
Exécutez la compilation avec Make :
cd make make
Toutes les cibles de
target1
àtarget50
doivent être construites dans l'ordre. -
Faites la même procédure avec Bake :
cd bake java -cp bakefile.jar fr.monlouyan.bakefile.Main
-
Réexécutez
make
etbake
sans supprimer les fichiers pour voir s'ils détectent que tout est déjà construit. -
Comparez les résultats et les messages affichés.
Résultats attendus
bake
etmake
doivent exécuter les cibles dans le bon ordre.- Une exécution répétée de
make
etbake
ne doit rien reconstruire si rien n'a changé. - Les messages de sortie doivent être identiques entre
bake
etmake
.