# Test 24 - Chaîne de dépendances longues

Ce test vérifie la manière dont `bake` et `make` gèrent une longue série de dépendances en cascade, où chaque cible dépend de la précédente.

## 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-24-long-dependency-chain/
├── 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 une longue chaîne de dépendances comme suit :

```makefile
all: target50

target50: target49
	echo "Building target50"

target49: target48
	echo "Building target49"

...

target2: target1
	echo "Building target2"

target1:
	echo "Building target1"
```

## Objectif du test

Ce test vérifie que `bake` et `make` :
1. Résolvent correctement une longue chaîne de dépendances.
2. Exécutent les cibles dans le bon ordre, en commençant par `target1` jusqu'à `target50`.
3. Ne rencontrent pas de limitations de profondeur de résolution des dépendances.
4. Comparent les messages de sortie pour s'assurer que `bake` et `make` ont le même comportement.

## Scénario de test

1. Exécuter `make` et `bake` sans fichiers préexistants pour observer la construction de toutes les cibles.
2. Réexécuter `make` et `bake` pour voir s'ils détectent que toutes les cibles sont déjà construites et n'ont pas besoin d'être reconstituées.

## Comment exécuter le test

### Test manuel

1. Exécutez la compilation avec Make : 
   ```bash
   cd make
   make
   ```
   Toutes les cibles de `target1` à `target50` doivent être construites dans l'ordre.

2. Faites la même procédure avec Bake : 
   ```bash
   cd bake
   java -cp bakefile.jar fr.monlouyan.bakefile.Main
   ```

3. Réexécutez `make` et `bake` sans supprimer les fichiers pour voir s'ils détectent que tout est déjà construit.

4. Comparez les résultats et les messages affichés.

## Résultats attendus

- `bake` et `make` doivent exécuter les cibles dans le bon ordre.
- Une exécution répétée de `make` et `bake` ne doit rien reconstruire si rien n'a changé.
- Les messages de sortie doivent être identiques entre `bake` et `make`.
