Test 27 - Gestion des conditions IF

Ce test vérifie comment bake et make gèrent les conditions if dans les commandes de compilation, en particulier pour tester l'existence d'un fichier avant de l'écraser ou de le recréer.

Sommaire

Structure du test

test-27-conditions-if/
├── README.md         # Ce fichier
├── bake/             
│   ├── Bakefile      # Fichier de règles pour bake
│   ├── bakefile.jar  # Exécutable de bake (JAR)
└── make/
    └── Makefile      # Fichier de règles pour make 

Contenu des fichiers de règles

Les fichiers Makefile et Bakefile contiennent la logique conditionnelle suivante :

# Définition de la cible principale
all: fichier.txt
	@echo "La cible fichier.txt est à jour."

# Cible qui vérifie si le fichier existe
# Si le fichier existe, ne rien faire
# Sinon, le créer avec touch
fichier.txt:
	@if [ -f "fichier.txt" ]; then 		echo "Le fichier fichier.txt existe déjà, rien à faire."; 	else 		echo "Le fichier fichier.txt n'existe pas, création..."; 		touch fichier.txt; 		echo "Le fichier fichier.txt a été créé."; 	fi

# Cible pour nettoyer le fichier créé
.PHONY: clean
clean:
	@echo "Suppression de fichier.txt..."
	@rm -f fichier.txt

Objectif du test

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

  1. Vérifient correctement si fichier.txt existe avant de l'écraser.
  2. N'exécutent pas la création de fichier.txt si celui-ci existe déjà.
  3. Suppriment fichier.txt proprement avec la cible clean.

Scénario de test

  1. Exécuter make et bake une première fois pour voir la création du fichier.
  2. Exécuter make et bake une seconde fois pour voir si la condition empêche la recréation du fichier.
  3. Supprimer fichier.txt et relancer make et bake pour vérifier que le fichier est bien recréé.

Comment exécuter le test

Test manuel

  1. Exécuter make et bake :

    cd make
    make
    

    Le fichier fichier.txt doit être créé.

  2. Exécuter make et bake à nouveau :

    make
    

    Il ne doit pas y avoir de recréation du fichier.

  3. Supprimer fichier.txt et relancer make :

    make clean
    make
    

    Le fichier doit être recréé.

  4. Répéter les mêmes étapes avec bake :

    cd bake
    java -cp bakefile.jar fr.monlouyan.bakefile.Main
    java -cp bakefile.jar fr.monlouyan.bakefile.Main clean
    java -cp bakefile.jar fr.monlouyan.bakefile.Main
    
  5. Vérifier les résultats et comparer le comportement avec make.

Résultats attendus

  • bake et make doivent créer fichier.txt uniquement si celui-ci n'existe pas.
  • Un deuxième appel à make ou bake ne doit pas recréer fichier.txt s'il est déjà présent.
  • La cible clean doit supprimer le fichier proprement.