Files
SAE32_2024/tests/Java/test-04-edited/README.md

3.1 KiB
Raw Blame History

Test 2 : Compilation où le résultat existe déjà

📌 Description

Ce test vérifie que si lexé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 doptimiser 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 nexiste pas, bake doit compiler Main.java.
  • Commande exécutée :
    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 :
    javac Main.java
    

🔬 Procédure de test

1 Étape 1 : Compilation initiale

  1. Supprimer Main.class sil existe déjà :
    rm -f Main.class
    
  2. Exécuter bake :
    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 :
    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 :
    System.out.println("Nouvelle ligne ajoutée !");
    
  2. Exécuter bake :
    bake
    
  3. Attendu :
    • bake détecte la modification et exécute javac Main.java.
    • Main.class est mis à jour.

🛠 Fichier Bakefile utilisé

# 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 !