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

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 :

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 :

    cd make
    make
    

    Toutes les cibles de target1 à target50 doivent être construites dans l'ordre.

  2. Faites la même procédure avec Bake :

    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.