Update test script name from obisuperkmer to obik-super and adjust all command references accordingly. - Changed TEST_NAME from 'obisuperkmer' to 'obik-super' - Changed CMD from 'obisuperkmer' to 'obik' - Updated MCMD to 'OBIk-super' - Modified command calls to use '$CMD super' instead of direct command names - Updated help test to use '$CMD super -h' - Updated all test cases to use the new command format
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 :
- seq1 : Répétition du motif ACGT (séquence régulière)
- seq2 : Alternance de blocs homopolymères (AAAA, CCCC, GGGG, TTTT)
- 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_valueminimizer_seqparent_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
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
obisuperkmerdoit ê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 :
- En-tête : Définition du nom du test et de la commande
- Variables : Configuration des chemins et compteurs
- Fonction cleanup() : Affiche les résultats et nettoie le répertoire temporaire
- Fonction log() : Affiche les messages horodatés
- Tests : Série de tests avec incrémentation des compteurs
- 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 :
((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