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
- Contenu des fichiers de règles
- Objectif du test
- Scénario de test
- Comment exécuter le test
- Résultats attendus
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
:
- Gèrent correctement les dépendances entre règles.
- Recompilent
Main.class
seulement siMain.java
a été modifié. - Ne recompileront pas
Main.class
siMain.java
n’a pas été modifié.
Scénario de test
- Compiler
Main.java
pour générerMain.class
. - Exécuter
make
etbake
sans modifications pour voir si une recompilation est déclenchée. - Modifier
Main.java
et relancermake
etbake
pour voir si une recompilation est bien déclenchée.
Comment exécuter le test
Test manuel
-
Compiler avec Make :
cd make make
Le fichier
Main.class
doit être généré. -
Compiler avec Bake :
cd bake java -cp bakefile.jar fr.monlouyan.bakefile.Main
-
Vérifier si
Main.class
est bien généré. -
Modifier
Main.java
et relancer la compilation :echo "// Modification" >> Main.java make
-
Vérifier si
make
etbake
détectent la modification et recompilentMain.class
.
Résultats attendus
bake
etmake
doivent compilerMain.java
enMain.class
siMain.class
n'existe pas ou siMain.java
a été modifié.- Si
Main.java
n’a pas été modifié,make
etbake
ne doivent pas recompilerMain.class
.