File size: 2,174 Bytes
b5cc534
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
## ✅ 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
```