Test 26 - Règle imbriquée dans une autre règle

Ce test vérifie comment bake et make gèrent les règles imbriquées (c'est-à-dire lorsqu'une règle dépend d'une autre qui est également une règle).

Sommaire

Structure du test

test-26-rule-in-rule/
├── README.md         # Ce fichier
├── bake/             
│   ├── Bakefile      # Fichier de règles pour bake
│   ├── bakefile.jar  # Exécutable de bake (JAR)
│   ├── Main.java     # Fichier source
│   ├── Main.class    # Fichier compilé
├── make/
│   ├── Makefile      # Fichier de règles pour make
│   ├── Main.java     # Fichier source
│   ├── Main.class    # Fichier compilé

Contenu des fichiers de règles

Les fichiers Makefile et Bakefile contiennent la règle suivante :

Main.class: Main.java
	javac Main.java -Xlint:unchecked

Objectif du test

Ce test a pour but de vérifier que bake et make :

  1. Gèrent correctement les dépendances entre règles.
  2. Recompilent Main.class seulement si Main.java a été modifié.
  3. Ne recompileront pas Main.class si Main.java na pas été modifié.

Scénario de test

  1. Compiler Main.java pour générer Main.class.
  2. Exécuter make et bake sans modifications pour voir si une recompilation est déclenchée.
  3. Modifier Main.java et relancer make et bake pour voir si une recompilation est bien déclenchée.

Comment exécuter le test

Test manuel

  1. Compiler avec Make :

    cd make
    make
    

    Le fichier Main.class doit être généré.

  2. Compiler avec Bake :

    cd bake
    java -cp bakefile.jar fr.monlouyan.bakefile.Main
    
  3. Vérifier si Main.class est bien généré.

  4. Modifier Main.java et relancer la compilation :

    echo "// Modification" >> Main.java
    make
    
  5. Vérifier si make et bake détectent la modification et recompilent Main.class.

Résultats attendus

  • bake et make doivent compiler Main.java en Main.class si Main.class n'existe pas ou si Main.java a été modifié.
  • Si Main.java na pas été modifié, make et bake ne doivent pas recompiler Main.class.