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

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 :

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