Test 04 - Compilation après modification du code source

Ce test vérifie le comportement de bake comparé à make lorsque l'exécutable cible existe déjà mais que le code source a été modifié depuis la dernière compilation.

Sommaire

Structure du test

test-04-edited/
├── 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 (modifié)
├── make/
│   ├── Makefile      # Fichier de règles pour make
│   ├── main          # Exécutable déjà compilé
│   └── main.c        # Fichier source C (modifié)
└── run_test04.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ù le code source a été modifié :

  1. Vérifier que les deux outils détectent correctement que la cible main existe déjà
  2. Vérifier que les deux outils détectent que le fichier source main.c a été modifié depuis la dernière compilation
  3. Vérifier que les deux outils reconstruisent l'exécutable main pour prendre en compte les modifications
  4. Comparer les messages de sortie des deux outils

Comment exécuter le test

Test automatique

  1. Rendez le script de test exécutable :

    chmod +x run_test04.sh
    
  2. Lancez le script de test :

    ./run_test04.sh
    
  3. 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

  1. Modifiez les fichiers source dans les deux répertoires :

    echo "// Modification pour test" >> make/main.c
    echo "// Modification pour test" >> bake/main.c
    
  2. Pour Make :

    cd make
    make
    
  3. Pour Bake :

    cd bake
    java -cp bakefile.jar fr.monlouyan.bakefile.Main
    
  4. 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 détecter que le fichier source main.c a été modifié depuis la dernière compilation
  • Les deux outils devraient reconstruire l'exécutable main pour prendre en compte les modifications
  • Les datestamps des exécutables devraient être mis à jour

Ce test vérifie la fonctionnalité essentielle d'un système de build qui consiste à reconstruire les cibles lorsque leurs dépendances ont été modifiées, assurant ainsi que l'exécutable reflète toujours l'état actuel du code source.