# 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](#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 automatique](#test-automatique) - [Test manuel](#test-manuel) - [Résultats attendus](#résultats-attendus) ## 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 : ```makefile 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.