83 lines
2.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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](#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-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 :
```makefile
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 :
```bash
cd make
make
```
Le fichier `Main.class` doit être généré.
2. Compiler avec Bake :
```bash
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 :
```bash
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`.