test-04 mise en place jsute on doit corriger les md
This commit is contained in:
parent
3d11baa80e
commit
1883303804
105
tests/Java/test-04-edited/README.md
Normal file
105
tests/Java/test-04-edited/README.md
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
# Test 2 : Compilation où le résultat existe déjà
|
||||||
|
|
||||||
|
## 📌 Description
|
||||||
|
Ce test vérifie que si l’exécutable `Main.class` est déjà présent et que `Main.java`
|
||||||
|
n'a pas été modifié, alors `bake` ne doit **pas recompiler** inutilement.
|
||||||
|
|
||||||
|
Cela permet d’optimiser la compilation en évitant de perdre du temps et des ressources
|
||||||
|
à recompiler des fichiers inchangés, comme `make` en C.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📂 **Fichiers utilisés**
|
||||||
|
- **`Main.java`** : Fichier source contenant le programme principal.
|
||||||
|
- **`Bakefile`** : Contient les règles de compilation.
|
||||||
|
- **`Main.class`** : Fichier compilé qui doit exister avant le test.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ **Résultat attendu**
|
||||||
|
1️⃣ **Première exécution de `bake`**
|
||||||
|
- Si `Main.class` **n’existe pas**, `bake` doit **compiler** `Main.java`.
|
||||||
|
- **Commande exécutée :**
|
||||||
|
```sh
|
||||||
|
javac Main.java
|
||||||
|
```
|
||||||
|
- `Main.class` est généré.
|
||||||
|
|
||||||
|
2️⃣ **Seconde exécution de `bake` sans modification**
|
||||||
|
- Si `Main.class` est **déjà à jour**, `bake` **ne doit rien faire**.
|
||||||
|
- **Aucune commande `javac` ne doit être exécutée**.
|
||||||
|
|
||||||
|
3️⃣ **Modification de `Main.java` et recompilation**
|
||||||
|
- Si `Main.java` est **modifié**, `bake` doit **détecter le changement** et
|
||||||
|
recompiler uniquement `Main.java`.
|
||||||
|
- **Commande exécutée :**
|
||||||
|
```sh
|
||||||
|
javac Main.java
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔬 **Procédure de test**
|
||||||
|
### **1️⃣ Étape 1 : Compilation initiale**
|
||||||
|
1. Supprimer `Main.class` s’il existe déjà :
|
||||||
|
```sh
|
||||||
|
rm -f Main.class
|
||||||
|
```
|
||||||
|
2. Exécuter `bake` :
|
||||||
|
```sh
|
||||||
|
bake
|
||||||
|
```
|
||||||
|
3. **Attendu** :
|
||||||
|
- `bake` doit exécuter `javac Main.java` et créer `Main.class`.
|
||||||
|
|
||||||
|
### **2️⃣ Étape 2 : Vérification sans modification**
|
||||||
|
1. Exécuter `bake` une seconde fois :
|
||||||
|
```sh
|
||||||
|
bake
|
||||||
|
```
|
||||||
|
2. **Attendu** :
|
||||||
|
- **Aucune recompilation** ne doit avoir lieu.
|
||||||
|
- `bake` **ne doit afficher aucun message de compilation**.
|
||||||
|
|
||||||
|
### **3️⃣ Étape 3 : Modifier `Main.java`**
|
||||||
|
1. Modifier `Main.java`, par exemple en ajoutant une ligne :
|
||||||
|
```java
|
||||||
|
System.out.println("Nouvelle ligne ajoutée !");
|
||||||
|
```
|
||||||
|
2. Exécuter `bake` :
|
||||||
|
```sh
|
||||||
|
bake
|
||||||
|
```
|
||||||
|
3. **Attendu** :
|
||||||
|
- `bake` détecte la modification et exécute `javac Main.java`.
|
||||||
|
- `Main.class` est mis à jour.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🛠 **Fichier `Bakefile` utilisé**
|
||||||
|
```make
|
||||||
|
# Bakefile
|
||||||
|
|
||||||
|
Main.class: Main.java
|
||||||
|
javac Main.java
|
||||||
|
|
||||||
|
all: Main.class
|
||||||
|
```
|
||||||
|
➡ Ce `Bakefile` garantit que `bake` **ne recompile `Main.java` que si nécessaire**.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 **Validation du test**
|
||||||
|
| Situation | Comportement attendu |
|
||||||
|
|-----------|----------------------|
|
||||||
|
| **Première compilation (`bake`)** | `javac Main.java` est exécuté ✅ |
|
||||||
|
| **Seconde exécution sans modification (`bake`)** | **Aucune recompilation** ✅ |
|
||||||
|
| **Modification de `Main.java`** | `javac Main.java` est exécuté à nouveau ✅ |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📌 **Conclusion**
|
||||||
|
- Si `bake` **ne recompile pas sans raison** et ne recompile `Main.java` **que si modifié**, alors **le test est réussi !** ✅
|
||||||
|
- Cela assure une **optimisation de la compilation** et empêche le gaspillage de ressources.
|
||||||
|
|
||||||
|
🚀 **Lance le test et vérifie que `bake` fonctionne correctement !**
|
4
tests/Java/test-04-edited/bake/Bakefile
Normal file
4
tests/Java/test-04-edited/bake/Bakefile
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
Main.class: Main.java
|
||||||
|
javac Main.java
|
||||||
|
|
||||||
|
all: Main.class
|
6
tests/Java/test-04-edited/bake/Main.java
Normal file
6
tests/Java/test-04-edited/bake/Main.java
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
public class Main {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
System.out.println("Ceci est un programme de test du Bakefile !");
|
||||||
|
System.out.println("On essaye de voir si le programme recompile après une modification....");
|
||||||
|
}
|
||||||
|
}
|
6
tests/Java/test-04-edited/make/Main.java
Normal file
6
tests/Java/test-04-edited/make/Main.java
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
public class Main {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
System.out.println("Ceci est un programme de test du Bakefile !");
|
||||||
|
System.out.println("On essaye de voir si le programme recompile après une modification....");
|
||||||
|
}
|
||||||
|
}
|
4
tests/Java/test-04-edited/make/Makefile
Normal file
4
tests/Java/test-04-edited/make/Makefile
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
Main.class: Main.java
|
||||||
|
javac Main.java
|
||||||
|
|
||||||
|
all: Main.class
|
Loading…
x
Reference in New Issue
Block a user