Ajout du test n°25

This commit is contained in:
Moncef STITI 2025-03-07 21:46:30 +01:00
parent 75911d41d8
commit ca42e51636
3 changed files with 90 additions and 0 deletions
tests/C/test-25-multilines

@ -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

@ -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

@ -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