'Junior']; const STATUTS = ['recu' => 'Reçu']; require __DIR__ . '/../src/i18n.php'; require __DIR__ . '/../src/Recherche.php'; require __DIR__ . '/../src/markdown.php'; require __DIR__ . '/../src/aide.php'; $ok = 0; $ko = 0; function verifier(string $nom, bool $cond): void { global $ok, $ko; if ($cond) { $ok++; } else { $ko++; echo "ECHEC : $nom\n"; } } foreach (array_keys(DOCUMENTS_AIDE) as $guide) { $fr = aide($guide, 'fr'); $en = aide($guide, 'en'); verifier("$guide : existe en français et en anglais", $fr !== null && $en !== null && $fr['langue'] === 'fr' && $en['langue'] === 'en'); verifier("$guide : même nombre de chapitres dans les deux langues", count($fr['chapitres']) === count($en['chapitres']) && count($fr['chapitres']) >= 10); foreach (['fr' => $fr, 'en' => $en] as $langue => $a) { preg_match_all('/ id="([^"]+)"/', $a['html'], $ids); verifier("$guide ($langue) : ancres uniques et non vides", count($ids[1]) === count(array_unique($ids[1])) && !in_array('', $ids[1], true)); verifier("$guide ($langue) : chaque chapitre du sommaire a son ancre", !array_diff(array_column($a['chapitres'], 'id'), $ids[1])); verifier("$guide ($langue) : aucun balisage Markdown resté visible", !preg_match('/\*\*|^#|\|\s*---/m', strip_tags($a['html']))); } // Même structure : autant de sous-titres, de tableaux et de listes numérotées de part et d'autre foreach ([' 'sous-titres', '' => 'tableaux', '
    ' => 'listes numérotées', '
' => 'lignes de tableau'] as $balise => $nom) { verifier("$guide : autant de $nom en français qu'en anglais", substr_count($fr['html'], $balise) === substr_count($en['html'], $balise)); } } verifier('langue sans fichier : le français est servi', aide('guide', 'de')['langue'] === 'fr'); verifier('guide inconnu ou nom piégé : rien', aide('autre', 'fr') === null && aide('../config/config', 'fr') === null && aide('guide', '../x') === null); verifier('ancre lisible, sans accent', aide('guide', 'fr')['chapitres'][1]['id'] === 'se-connecter'); echo "$ok réussis, $ko échoués\n"; exit($ko > 0 ? 1 : 0);