Test 02 - Compilation avec exécutable existant
Ce test vérifie le comportement de bake
comparé à make
lorsque l'exécutable cible existe déjà et qu'aucune modification n'a été apportée au code source.
Sommaire
- Structure du test
- Contenu des fichiers de règles
- Objectif du test
- Comment exécuter le test
- Résultats attendus
Structure du test
test-02-existing-executable/
├── README.md # Ce fichier
├── bake/
│ ├── Bakefile # Fichier de règles pour bake
│ ├── bakefile.jar # Exécutable de bake (JAR)
│ ├── main # Exécutable déjà compilé
│ └── main.c # Fichier source C
├── make/
│ ├── Makefile # Fichier de règles pour make
│ ├── main # Exécutable déjà compilé
│ └── main.c # Fichier source C
└── run_test02.sh # Programme de test automatique
Contenu des fichiers de règles
Les fichiers Makefile
et Bakefile
contiennent les mêmes règles :
main: main.c
gcc -o main main.c
Objectif du test
Ce test vérifie que bake
se comporte comme make
dans le scénario où l'exécutable existe déjà :
- Vérifier que les deux outils détectent correctement que la cible
main
existe déjà - Vérifier que les deux outils analysent les dépendances pour déterminer si la reconstruction est nécessaire
- Vérifier que les deux outils évitent de reconstruire l'exécutable quand aucune modification n'a été apportée au code source
- Comparer les messages de sortie des deux outils
Comment exécuter le test
Test automatique
-
Rendez le script de test exécutable :
chmod +x run_test02.sh
-
Lancez le script de test :
./run_test02.sh
-
Consultez les résultats affichés dans le terminal et dans le fichier de log généré dans le répertoire
logs/
.
Test manuel
-
Pour Make :
cd make make
-
Pour Bake :
cd bake java -cp bakefile.jar fr.monlouyan.bakefile.Main
-
Comparez les deux résultats.
Résultats attendus
- Les deux outils devraient détecter que la cible
main
existe déjà - Les deux outils devraient vérifier les dates de modification des fichiers source et de l'exécutable
- Les deux outils devraient déterminer qu'aucune reconstruction n'est nécessaire (les fichiers source n'ayant pas été modifiés)
- Les messages de sortie devraient être similaires, indiquant qu'aucune action n'a été effectuée
- Les datestamps des exécutables ne devraient pas être modifiés
Ce test vérifie la fonctionnalité essentielle d'un système de build qui consiste à ne pas reconstruire des cibles qui sont déjà à jour, optimisant ainsi le temps de compilation.