mirror of
https://github.com/metabarcoding/obitools4.git
synced 2026-03-26 14:00:51 +00:00
149 lines
4.1 KiB
Markdown
149 lines
4.1 KiB
Markdown
|
|
# Tests pour obisuperkmer
|
||
|
|
|
||
|
|
## Description
|
||
|
|
|
||
|
|
Ce répertoire contient les tests automatisés pour la commande `obisuperkmer`.
|
||
|
|
|
||
|
|
## Fichiers
|
||
|
|
|
||
|
|
- `test.sh` : Script de test principal (exécutable)
|
||
|
|
- `test_sequences.fasta` : Jeu de données de test minimal (3 séquences courtes)
|
||
|
|
- `README.md` : Ce fichier
|
||
|
|
|
||
|
|
## Jeu de données de test
|
||
|
|
|
||
|
|
Le fichier `test_sequences.fasta` contient 3 séquences de 32 nucléotides chacune :
|
||
|
|
|
||
|
|
1. **seq1** : Répétition du motif ACGT (séquence régulière)
|
||
|
|
2. **seq2** : Alternance de blocs homopolymères (AAAA, CCCC, GGGG, TTTT)
|
||
|
|
3. **seq3** : Répétition du motif ATCG (différent de seq1)
|
||
|
|
|
||
|
|
Ces séquences sont volontairement courtes pour :
|
||
|
|
- Minimiser la taille du dépôt Git
|
||
|
|
- Accélérer l'exécution des tests en CI/CD
|
||
|
|
- Tester différents cas d'extraction de super k-mers
|
||
|
|
|
||
|
|
## Tests effectués
|
||
|
|
|
||
|
|
Le script `test.sh` effectue 12 tests :
|
||
|
|
|
||
|
|
### Test 1 : Affichage de l'aide
|
||
|
|
Vérifie que `obisuperkmer -h` s'exécute correctement.
|
||
|
|
|
||
|
|
### Test 2 : Extraction basique avec paramètres par défaut
|
||
|
|
Exécute `obisuperkmer` avec k=21, m=11 (valeurs par défaut).
|
||
|
|
|
||
|
|
### Test 3 : Vérification du fichier de sortie non vide
|
||
|
|
S'assure que la commande produit une sortie.
|
||
|
|
|
||
|
|
### Test 4 : Comptage des super k-mers extraits
|
||
|
|
Vérifie qu'au moins un super k-mer a été extrait.
|
||
|
|
|
||
|
|
### Test 5 : Présence des métadonnées requises
|
||
|
|
Vérifie que chaque super k-mer contient :
|
||
|
|
- `minimizer_value`
|
||
|
|
- `minimizer_seq`
|
||
|
|
- `parent_id`
|
||
|
|
|
||
|
|
### Test 6 : Extraction avec paramètres personnalisés
|
||
|
|
Teste avec k=15 et m=7.
|
||
|
|
|
||
|
|
### Test 7 : Vérification des paramètres dans les métadonnées
|
||
|
|
S'assure que les valeurs k=15 et m=7 sont présentes dans la sortie.
|
||
|
|
|
||
|
|
### Test 8 : Format de sortie FASTA explicite
|
||
|
|
Teste l'option `--fasta-output`.
|
||
|
|
|
||
|
|
### Test 9 : Vérification des IDs des super k-mers
|
||
|
|
S'assure que tous les IDs contiennent "superkmer".
|
||
|
|
|
||
|
|
### Test 10 : Préservation des IDs parents
|
||
|
|
Vérifie que seq1, seq2 et seq3 apparaissent dans la sortie.
|
||
|
|
|
||
|
|
### Test 11 : Option -o pour fichier de sortie
|
||
|
|
Teste la redirection vers un fichier avec `-o`.
|
||
|
|
|
||
|
|
### Test 12 : Vérification de la création du fichier avec -o
|
||
|
|
S'assure que le fichier de sortie a été créé.
|
||
|
|
|
||
|
|
### Test 13 : Cohérence des longueurs
|
||
|
|
Vérifie que la somme des longueurs des super k-mers est inférieure ou égale à la longueur totale des séquences d'entrée.
|
||
|
|
|
||
|
|
## Exécution des tests
|
||
|
|
|
||
|
|
### Localement
|
||
|
|
|
||
|
|
```bash
|
||
|
|
cd /chemin/vers/obitools4/obitests/obitools/obisuperkmer
|
||
|
|
./test.sh
|
||
|
|
```
|
||
|
|
|
||
|
|
### En CI/CD
|
||
|
|
|
||
|
|
Les tests sont automatiquement exécutés lors de chaque commit via le système CI/CD configuré pour le projet.
|
||
|
|
|
||
|
|
### Prérequis
|
||
|
|
|
||
|
|
- La commande `obisuperkmer` doit être compilée et disponible dans `../../build/`
|
||
|
|
- Les dépendances système : bash, grep, etc.
|
||
|
|
|
||
|
|
## Structure du script de test
|
||
|
|
|
||
|
|
Le script suit le pattern standard utilisé par tous les tests OBITools :
|
||
|
|
|
||
|
|
1. **En-tête** : Définition du nom du test et de la commande
|
||
|
|
2. **Variables** : Configuration des chemins et compteurs
|
||
|
|
3. **Fonction cleanup()** : Affiche les résultats et nettoie le répertoire temporaire
|
||
|
|
4. **Fonction log()** : Affiche les messages horodatés
|
||
|
|
5. **Tests** : Série de tests avec incrémentation des compteurs
|
||
|
|
6. **Appel cleanup()** : Nettoyage et sortie avec code de retour approprié
|
||
|
|
|
||
|
|
## Format de sortie
|
||
|
|
|
||
|
|
Chaque test affiche :
|
||
|
|
```
|
||
|
|
[obisuperkmer @ date] message
|
||
|
|
```
|
||
|
|
|
||
|
|
En fin d'exécution :
|
||
|
|
```
|
||
|
|
========================================
|
||
|
|
## Results of the obisuperkmer tests:
|
||
|
|
|
||
|
|
- 12 tests run
|
||
|
|
- 12 successfully completed
|
||
|
|
- 0 failed tests
|
||
|
|
|
||
|
|
Cleaning up the temporary directory...
|
||
|
|
|
||
|
|
========================================
|
||
|
|
```
|
||
|
|
|
||
|
|
## Codes de retour
|
||
|
|
|
||
|
|
- **0** : Tous les tests ont réussi
|
||
|
|
- **1** : Au moins un test a échoué
|
||
|
|
|
||
|
|
## Ajout de nouveaux tests
|
||
|
|
|
||
|
|
Pour ajouter un nouveau test, suivre le pattern :
|
||
|
|
|
||
|
|
```bash
|
||
|
|
((ntest++))
|
||
|
|
if commande_test arguments
|
||
|
|
then
|
||
|
|
log "Description: OK"
|
||
|
|
((success++))
|
||
|
|
else
|
||
|
|
log "Description: failed"
|
||
|
|
((failed++))
|
||
|
|
fi
|
||
|
|
```
|
||
|
|
|
||
|
|
## Notes
|
||
|
|
|
||
|
|
- Les fichiers temporaires sont créés dans `$TMPDIR` (créé par mktemp)
|
||
|
|
- Les fichiers de données sont dans `$TEST_DIR`
|
||
|
|
- La commande testée doit être dans `$OBITOOLS_DIR` (../../build/)
|
||
|
|
- Le répertoire temporaire est automatiquement nettoyé à la fin
|