Files
obitools4/obitests/obitools/obisuperkmer/README.md
Eric Coissac 7a979ba77f Add obisuperkmer command implementation and tests
This commit adds the implementation of the obisuperkmer command, including:

- The main command in cmd/obitools/obisuperkmer/
- The package implementation in pkg/obitools/obisuperkmer/
- Automated tests in obitests/obitools/obisuperkmer/
- Documentation for the implementation and tests

The obisuperkmer command extracts super k-mers from DNA sequences, following the standard OBITools architecture. It includes proper CLI option handling, validation of parameters, and integration with the OBITools pipeline system.

Tests cover basic functionality, parameter validation, output format, metadata preservation, and file I/O operations.
2026-02-07 13:54:02 +01:00

4.1 KiB

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

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 :

((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