Test 22 - Gestion des timestamps dans le futur
Ce test vérifie le comportement de bake
comparé à make
lorsque le fichier source a un timestamp dans le futur par rapport à l'heure système actuelle.
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
- Explications techniques
Structure du test
test-22-future-timestamp/
├── README.md # Ce fichier
├── bake/
│ ├── Bakefile # Fichier de règles pour bake
│ ├── bakefile.jar # Exécutable de bake (JAR)
│ └── main.c # Fichier source C (avec timestamp dans le futur)
└── make/
├── Makefile # Fichier de règles pour make
└── main.c # Fichier source C (avec timestamp dans le futur)
Contenu des fichiers de règles
Les fichiers Makefile
et Bakefile
contiennent les mêmes règles simples :
main: main.c
gcc -o main main.c
Objectif du test
Ce test vérifie que bake
se comporte comme make
face à un cas particulier : quand un fichier source a une date de modification dans le futur (postérieure à la date système actuelle). Ce scénario peut se produire en pratique lors de changements de fuseau horaire, de synchronisations imparfaites entre systèmes de fichiers réseau, ou de manipulations manuelles des timestamps.
Scénario de test
Le test suit les étapes suivantes :
- Compiler initialement le programme pour créer l'exécutable
main
- Modifier le timestamp du fichier source
main.c
pour le placer dans le futur (+ 1 jour) - Exécuter à nouveau make/bake pour voir comment ils réagissent
- Vérifier si les exécutables sont reconstruits ou non
Comment exécuter le test
Test manuel
-
Pour Make :
cd make make # Modifier le timestamp du fichier source pour le mettre dans le futur touch -t $(date -d "+1 day" "+%Y%m%d%H%M.%S") main.c make
-
Pour Bake :
cd bake java -cp bakefile.jar fr.monlouyan.bakefile.Main # Modifier le timestamp du fichier source pour le mettre dans le futur touch -t $(date -d "+1 day" "+%Y%m%d%H%M.%S") main.c java -cp bakefile.jar fr.monlouyan.bakefile.Main
-
Comparez visuellement les deux résultats.
Résultats attendus
- Le comportement standard de Make est de reconstruire l'exécutable si le fichier source a un timestamp dans le futur
bake
devrait adopter le même comportement et reconstruire l'exécutable- Les messages de sortie devraient indiquer la reconstruction