Test 23 - Gestion des timestamps identiques
Ce test vérifie le comportement de bake
comparé à make
lorsque le fichier source et la cible ont des timestamps strictement identiques.
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-23-identical-timestamps/
├── README.md # Ce fichier
├── bake/
│ ├── Bakefile # Fichier de règles pour bake
│ ├── bakefile.jar # Exécutable de bake (JAR)
│ ├── input.txt # Fichier source
│ ├── output.txt # Fichier cible (avec timestamp identique)
└── make/
├── Makefile # Fichier de règles pour make
├── input.txt # Fichier source
└── output.txt # Fichier cible (avec timestamp identique)
Contenu des fichiers de règles
Les fichiers Makefile
et Bakefile
contiennent les mêmes règles simples :
all: output.txt
output.txt: input.txt
cat input.txt > output.txt
input.txt:
echo "Test" > input.txt
Objectif du test
Ce test vérifie que bake
se comporte comme make
face à un cas particulier : quand le fichier source input.txt
et la cible output.txt
ont exactement le même timestamp. Ce scénario peut se produire lors de synchronisations de fichiers rapides ou d'opérations automatisées qui modifient simultanément les fichiers source et cible.
Scénario de test
Le test suit les étapes suivantes :
- Créer le fichier source
input.txt
- Générer la cible
output.txt
à partir du fichier source - Aligner les timestamps des deux fichiers pour qu'ils soient identiques
- Exécuter
make
etbake
pour observer s'ils considèrent la cible comme à jour
Comment exécuter le test
Test manuel
-
Pour Make :
cd make make # Aligner les timestamps des fichiers touch -r input.txt output.txt make
-
Pour Bake :
cd bake java -cp bakefile.jar fr.monlouyan.bakefile.Main # Aligner les timestamps des fichiers touch -r input.txt output.txt java -cp bakefile.jar fr.monlouyan.bakefile.Main
-
Comparez visuellement les deux résultats.
Résultats attendus
make
etbake
devraient considéreroutput.txt
comme à jour et ne pas le reconstruire.- Aucun message de recompilation ne devrait apparaître après la synchronisation des timestamps.
- Si
bake
oumake
reconstruisentoutput.txt
, cela indique une différence dans leur gestion des timestamps identiques.
Explications techniques
En fonctionnement normal, make
et bake
vérifient la date de modification des fichiers pour déterminer s'il faut recompiler une cible. Lorsque la cible et sa dépendance ont le même timestamp, la cible est considérée à jour, et aucune action n'est entreprise. Ce test vérifie que bake
suit bien cette logique.