## ✅ Tests unitaires & couverture Ce projet dispose de tests automatisés pour valider les principales fonctionnalités : ### 📂 Fichiers de test | Fichier | Description | | ------------------------- | --------------------------------------------------------------------------------------------------------------------- | | `tests/test_handler.py` | Vérifie le bon fonctionnement de la fonction `predict()` en mode `zero-shot` et `few-shot`. | | `tests/test_interface.py` | Teste l'interface Gradio, les comportements inattendus (entrée vide, modèle invalide), et la création de l'interface. | --- ### 🧪 Lancer les tests ```bash python -m pytest --cov=app --cov-report=term-missing ``` Ce qui génère un rapport de couverture avec les lignes non couvertes : ``` Name Stmts Miss Cover Missing ------------------------------------------------ app/handler.py 16 0 100% app/interface.py 7 2 71% 17-18 ------------------------------------------------ TOTAL 23 2 91% ``` > 🌟 Les lignes 17-18 non couvertes correspondent à l’exécution directe de l’interface dans le fichier `main.py`. > Ces lignes ne sont volontairement **pas testées** car elles concernent le lancement interactif de l'application (`iface.launch()`), hors du périmètre des tests unitaires. --- ### 🚫 Hook `pre-push` automatique Pour garantir la stabilité du dépôt, un **hook Git `pre-push`** a été mis en place. 🧹 Il exécute automatiquement les tests avant chaque `git push`. #### Exemple `.git/hooks/pre-push` ```bash #!/bin/sh echo "🔍 Exécution des tests unitaires avant le push..." python -m pytest --cov=app --cov-report=term-missing if [ $? -ne 0 ]; then echo "❌ Push bloqué : les tests ont échoué." exit 1 fi ``` #### 🔧 Installation manuelle 1. Crée un fichier `.git/hooks/pre-push` si ce n’est pas déjà fait, 2. Colle le script ci-dessus, 3. Rends-le exécutable : ```bash chmod +x .git/hooks/pre-push ```