README.md
mon_menu/tests/README.md
# Lanceur de tests
Petit système de test pour **Mon Super Menu**.
Le dossier `tests/` contient les fichiers permettant de tester
individuellement les modules Lua du projet.
---
## Organisation
```text
tests/
├── lancer_tests.lua
├── test_titre.lua
├── test_menu.lua
└── README.md
```
### `lancer_tests.lua`
Lance le fichier de test indiqué en argument.
### `test_*.lua`
Contient le test d'un module particulier.
Exemple :
```text
test_titre.lua
```
teste :
```text
src/affichage/titre.lua
```
---
## Utilisation
Se placer dans le dossier `tests/` :
```bash
cd ~/LUA/mon_menu/tests
```
Puis lancer un test :
```bash
lua lancer_tests.lua test_titre.lua
```
Pour un autre test :
```bash
lua lancer_tests.lua test_menu.lua
```
---
## Fonctionnement
Le nom du test est transmis au programme Lua comme premier argument.
Exemple :
```bash
lua lancer_tests.lua test_titre.lua
```
Dans `lancer_tests.lua` :
```lua
local fichier_test = arg[1]
```
`arg[1]` contient alors :
```text
test_titre.lua
```
Le lanceur utilise ensuite `os.execute()` pour exécuter le fichier
de test demandé.
---
## Modules Lua
Les tests utilisent les modules présents dans `src/`.
Exemple :
```lua
local titre = require("affichage.titre")
```
Le lanceur configure `LUA_PATH` afin que Lua puisse trouver les modules
dans le dossier `src/`.
```text
tests/
│
├── lancer_tests.lua
│
└── test_titre.lua
│
│ require("affichage.titre")
↓
../src/
│
└── affichage/
└── titre.lua
```
---
## Ajouter un nouveau test
Créer simplement un nouveau fichier :
```text
test_menu.lua
```
Puis lancer :
```bash
lua lancer_tests.lua test_menu.lua
```
Aucune modification de `lancer_tests.lua` n'est nécessaire.
---
## Erreurs courantes
### Aucun test indiqué
```bash
lua lancer_tests.lua
```
Le lanceur indique comment l'utiliser.
### Mauvais nom de fichier
```bash
lua lancer_tests.lua test_truc.lua
```
Si `test_truc.lua` n'existe pas, Lua ne pourra pas l'exécuter.
### Module introuvable
Vérifier le nom utilisé avec `require()`.
Correct :
```lua
local titre = require("affichage.titre")
```
Incorrect :
```lua
local titre = require("titre")
```
Le module doit correspondre à son emplacement dans `src/`.
---
## Principe
```text
Créer un module
↓
Créer son test
↓
Lancer le test
↓
Corriger
↓
Relancer
↓
Valider
```
Le lanceur reste volontairement simple.
L'objectif est de comprendre comment Lua charge les modules,
comment fonctionnent les arguments `arg` et comment `os.execute()`
permet de lancer un autre programme.