Tests
import json
# Tout valide
valide = json.dumps({'messages': [{'role': 'user', 'content': 'Q'}, {'role': 'assistant', 'content': 'R'}]})
assert valider_jsonl(valide) == [], 'Un JSONL valide ne doit pas avoir d erreurs'
# JSON invalide
assert len(valider_jsonl('pas du json')) > 0, 'JSON invalide doit etre detecte'
assert 'Ligne 1' in valider_jsonl('pas du json')[0], 'L erreur doit mentionner le numéro de ligne'
# Messages vides
assert len(valider_jsonl('{"messages": []}')) > 0, 'Messages vides doit etre detecte'
# Pas de clé messages
assert len(valider_jsonl('{"data": []}')) > 0, 'Absence de clé messages doit etre detecte'
# Pas d assistant
sans_assistant = json.dumps({'messages': [{'role': 'user', 'content': 'Q'}]})
assert len(valider_jsonl(sans_assistant)) > 0, 'Absence de message assistant doit etre detecte'
# Chaine vide
assert valider_jsonl('') == [], 'Chaine vide doit retourner liste vide'
# Plusieurs lignes dont une invalide
deux_lignes = valide + '\n' + 'invalide'
errs = valider_jsonl(deux_lignes)
assert len(errs) == 1, 'Seule la ligne invalide doit générer une erreur'
assert 'Ligne 2' in errs[0], 'L erreur doit etre a la ligne 2'