# Test 25 - Gestion des commandes multi-lignes Ce test vérifie le comportement de `bake` comparé à `make` lors de l'exécution de règles comportant plusieurs lignes de commandes bash à exécuter séquentiellement. ## 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) - [Scénario de test](#scénario-de-test) - [Comment exécuter le test](#comment-exécuter-le-test) - [Test manuel](#test-manuel) - [Résultats attendus](#résultats-attendus) ## Structure du test ``` test-23-multilines/ ├── 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 les mêmes règles avec des commandes multi-lignes : ```makefile MultiLine: echo "Première ligne" > test.txt echo "Deuxième ligne" >> test.txt echo "Troisième ligne" >> test.txt cat test.txt rm test.txt ``` ## Objectif du test Ce test vérifie que `bake` exécute correctement une séquence de commandes bash indépendantes, placées sur des lignes distinctes dans la règle. Comme `make`, `bake` doit exécuter chaque ligne séquentiellement et s'arrêter à la première erreur (comportement de bash). ## Scénario de test Le test suit les étapes suivantes : 1. Exécuter la règle `MultiLine` qui crée un fichier texte avec plusieurs lignes, affiche son contenu puis le supprime 2. Vérifier que toutes les étapes sont exécutées correctement dans l'ordre spécifié ## Comment exécuter le test ### 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. ## Résultats attendus - Chaque commande des règles doit être exécutée séquentiellement - Les sorties de chaque commande doivent apparaître dans la console dans l'ordre d'exécution - Pour la règle `MultiLine` : - Le fichier test.txt doit être créé avec trois lignes - Le contenu du fichier doit être affiché - Le fichier doit être supprimé - `bake` doit se comporter exactement comme `make` en termes d'ordre d'exécution des commandes