diff --git a/tests/C/test-25-multilines/README.md b/tests/C/test-25-multilines/README.md new file mode 100644 index 0000000..70b49e6 --- /dev/null +++ b/tests/C/test-25-multilines/README.md @@ -0,0 +1,76 @@ +# 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 \ No newline at end of file diff --git a/tests/C/test-25-multilines/bake/Bakefile b/tests/C/test-25-multilines/bake/Bakefile new file mode 100644 index 0000000..b3471eb --- /dev/null +++ b/tests/C/test-25-multilines/bake/Bakefile @@ -0,0 +1,7 @@ +MultiLine: + touch test.txt + echo "Première ligne" > test.txt + echo "Deuxième ligne" >> test.txt + echo "Troisième ligne" >> test.txt + cat test.txt + rm test.txt \ No newline at end of file diff --git a/tests/C/test-25-multilines/make/Makefile b/tests/C/test-25-multilines/make/Makefile new file mode 100644 index 0000000..63a4f97 --- /dev/null +++ b/tests/C/test-25-multilines/make/Makefile @@ -0,0 +1,7 @@ +MultiLine: + touch test.txt + echo "Première ligne" > test.txt + echo "Deuxième ligne" >> test.txt + echo "Troisième ligne" >> test.txt + cat test.txt + rm test.txt \ No newline at end of file