README de tous les tests
This commit is contained in:
89
tests/test-23-identical-timestamps/README.md
Normal file
89
tests/test-23-identical-timestamps/README.md
Normal file
@@ -0,0 +1,89 @@
|
||||
# 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](#structure-du-test)
|
||||
- [Contenu des fichiers de règles](#contenu-des-fichiers-de-règles)
|
||||
- [Objectif du test](#objectif-du-test)
|
||||
- [Scénario de test](#scénario-de-test)
|
||||
- [Comment exécuter le test](#comment-exécuter-le-test)
|
||||
- [Test manuel](#test-manuel)
|
||||
- [Résultats attendus](#résultats-attendus)
|
||||
- [Explications techniques](#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 :
|
||||
|
||||
```makefile
|
||||
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 :
|
||||
1. Créer le fichier source `input.txt`
|
||||
2. Générer la cible `output.txt` à partir du fichier source
|
||||
3. Aligner les timestamps des deux fichiers pour qu'ils soient identiques
|
||||
4. Exécuter `make` et `bake` pour observer s'ils considèrent la cible comme à jour
|
||||
|
||||
## Comment exécuter le test
|
||||
|
||||
### Test manuel
|
||||
|
||||
1. Pour Make :
|
||||
```bash
|
||||
cd make
|
||||
make
|
||||
# Aligner les timestamps des fichiers
|
||||
touch -r input.txt output.txt
|
||||
make
|
||||
```
|
||||
|
||||
2. Pour Bake :
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
3. Comparez visuellement les deux résultats.
|
||||
|
||||
## Résultats attendus
|
||||
|
||||
- `make` et `bake` devraient considérer `output.txt` comme à jour et ne pas le reconstruire.
|
||||
- Aucun message de recompilation ne devrait apparaître après la synchronisation des timestamps.
|
||||
- Si `bake` ou `make` reconstruisent `output.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.
|
Reference in New Issue
Block a user