Test 01 - Compilation à partir de rien

Ce test vérifie le comportement de base de bake comparé à make lorsqu'on lance une compilation à partir de rien (sans fichiers exécutable préexistants).

Sommaire

Structure du test

test-01-from-nothing/
├── README.md         # Ce fichier
├── bake/             
│   ├── Bakefile      # Fichier de règles pour bake
│   ├── bakefile.jar  # Exécutable de bake (JAR)
│   └── main.c        # Fichier source C
├── make/
│   ├── Makefile     # Fichier de règles pour make
│   └── main.c       # Fichier source C
└── run_test01.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

clean: 
	rm main

Objectif du test

Ce test vérifie que bake se comporte comme make dans le scénario le plus basique:

  1. Compiler main.c en un exécutable main quand celui-ci n'existe pas encore
  2. Vérifier que les sorties sont similaires (commandes exécutées, messages)
  3. Vérifier que le résultat final (l'exécutable main) est bien créé et fonctionnel

Comment exécuter le test

Test automatique

  1. Rendez le script de test exécutable :

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

    ./run_test01.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. Pour Make :

    cd make
    make
    
  2. Pour Bake :

    cd bake
    java -cp bakefile.jar fr.monlouyan.bakefile.Main
    
  3. Comparez les deux résultats.

Attention : N'oubliez pas de supprimer les exécutables générer avant de recommencer le test.

Résultats attendus

  • Les deux outils devraient détecter que la cible main doit être construite
  • Les deux outils devraient exécuter la commande gcc -o main main.c
  • Les deux outils devraient produire un exécutable main fonctionnel
  • Les messages de sortie devraient être similaires

Ce test vérifie la fonctionnalité de base de détection de dépendances et d'exécution de commandes dans un cas simple.