Server : Apache System : Linux webd348.cluster026.gra.hosting.ovh.net 5.15.148-ovh-vps-grsec-zfs-classid #1 SMP Thu Feb 8 09:41:04 UTC 2024 x86_64 User : hednacluml ( 122243) PHP Version : 8.3.9 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl Directory : /home/hednacluml/jobs/plugins-dist/textwheel/tests/ |
<?php /***************************************************************************\ * SPIP, Système de publication pour l'internet * * * * Copyright © avec tendresse depuis 2001 * * Arnaud Martin, Antoine Pitrou, Philippe Rivière, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribué sous licence GNU/GPL. * \***************************************************************************/ namespace Spip\Core\Tests; use PHPUnit\Framework\TestCase; class TextwheelNettoyerraccourcistypoTest extends TestCase { protected static $lang = 'en'; protected static $filtrer_javascript; protected static $class_spip_plus; protected static $class_spip; protected static $notes; public static function setUpBeforeClass(): void{ static::$filtrer_javascript = $GLOBALS['filtrer_javascript']; include_spip('inc/texte'); changer_langue(static::$lang); static::$class_spip_plus = ($GLOBALS['class_spip_plus'] ?? null); static::$class_spip = ($GLOBALS['class_spip'] ?? null); $GLOBALS['class_spip_plus'] = ''; $GLOBALS['class_spip'] = ''; static::$notes = charger_fonction("notes", "inc"); (static::$notes)('', 'reset_all'); } /** * @dataProvider providerEssais */ public function testCouper($source, $expected) { $this->assertEquals($expected['couper'], couper($source)); } /** * @dataProvider providerEssais */ public function testNettoyer($source, $expected) { $this->assertEquals($expected['nettoyer'], nettoyer_raccourcis_typo($source)); } /** * Provider pour propre() sur du texte * @return array */ public function providerEssais() { $essais = []; $essais['italique1'] = [ 'Un mot {italique}', [ 'couper' => 'Un mot italique', 'nettoyer' => 'Un mot italique', ] ]; $essais['italique2'] = [ '{Un texte italique}', [ 'couper' => 'Un texte italique', 'nettoyer' => 'Un texte italique', ] ]; $essais['gras1'] = [ 'Un mot {{gras}}', [ 'couper' => 'Un mot gras', 'nettoyer' => 'Un mot gras', ] ]; $essais['gras2'] = [ '{{Un texte gras}}', [ 'couper' => 'Un texte gras', 'nettoyer' => 'Un texte gras', ] ]; $essais['intertitre1'] = [ '{{{Un intertitre}}}', [ 'couper' => 'Un intertitre', 'nettoyer' => 'Un intertitre', ] ]; $essais['intertitre2'] = [ "Ligne\n\n{{{Un intertitre}}}\n\nLigne", [ 'couper' => "Ligne\n\nUn intertitre\n\nLigne", 'nettoyer' => "Ligne\n\nUn intertitre\n\nLigne", ] ]; $essais['liens1'] = [ 'Un lien [interne->article1]', [ 'couper' => 'Un lien interne', 'nettoyer' => 'Un lien interne', ] ]; $essais['liens2'] = [ 'Un lien [externe->http://example.org]', [ 'couper' => 'Un lien externe', 'nettoyer' => 'Un lien externe', ] ]; /** * Les listes sont mises à plat * 1 saut de ligne \n entre chaque, couper les réassemble en espace. * * @note * Avant SPIP 3.2, 1 saut de paragraphe \n\n entre chaque (couper le laissait). */ $essais['liste1'] = [ 'texte' => "Une liste -* un -* deux -* trois ", [ 'couper' => "Une liste un deux trois", 'nettoyer' => "Une liste\nun\ndeux\ntrois", ] ]; $essais['liste2'] = [ 'texte' => "Une liste avec ligne -* un -* deux -* trois ", [ 'couper' => "Une liste avec ligne un deux trois", 'nettoyer' => "Une liste avec ligne\nun\ndeux\ntrois", ] ]; /** * Les tableaux sont totalement supprimés. * Enfin presque : remplacés par \n\n * Le texte étant trimmé, \n en fins sont enlevés. * * @note * Avant SPIP 3.2, les tableaux n’étaient pas toujours correctement supprimés */ $essais['tableau sans sauts de ligne avant / après'] = [ "| {{colonneA}} | {{colonneB}} | | ligneA1 | ligneB1 | | ligneA2 | ligneB2 |", [ 'couper' => "", 'nettoyer' => "", ] ]; $essais['tableau sans ligne vide avant'] = [ "Un tableau sans ligne vide avant | {{colonneA}} | {{colonneB}} | | ligneA1 | ligneB1 | | ligneA2 | ligneB2 | ", [ 'couper' => "Un tableau sans ligne vide avant", 'nettoyer' => "Un tableau sans ligne vide avant", ] ]; $essais['tableau avec ligne vide avant'] = [ "Un tableau avec ligne vide avant | {{colonneA}} | {{colonneB}} | | ligneA1 | ligneB1 | | ligneA2 | ligneB2 | ", [ 'couper' => "Un tableau avec ligne vide avant", 'nettoyer' => "Un tableau avec ligne vide avant", ] ]; $essais['tableau avec ligne avant / après'] = [ "Un tableau avec ligne avant / après | {{colonneA}} | {{colonneB}} | | ligneA1 | ligneB1 | | ligneA2 | ligneB2 | Après ", [ 'couper' => "Un tableau avec ligne avant / après\n\nAprès", 'nettoyer' => "Un tableau avec ligne avant / après\n\nAprès", ] ]; /** * Les notes sont supprimées. * * @note * Avant 3.2 la regexp pouvait tuer pcre sur des textes longs * ayant des notes mal fermées. */ $essais['note1'] = [ 'Une note bien fermée [[note 1]]', [ 'couper' => 'Une note bien fermée', 'nettoyer' => 'Une note bien fermée', ] ]; $essais['note2'] = [ 'Une note mal fermée [[note 1]', [ 'couper' => 'Une note mal fermée [[note 1]', 'nettoyer' => 'Une note mal fermée [[note 1]', ] ]; $essais['note3'] = [ 'Un lien dans une note [[note [lien->article1]]]', [ 'couper' => 'Un lien dans une note', 'nettoyer' => 'Un lien dans une note', ] ]; $essais['note4'] = [ 'Lien et note ratée [[note [lien->article1]] ]', [ 'couper' => 'Lien et note ratée [[note lien] ]', 'nettoyer' => 'Lien et note ratée [[note lien] ]', ] ]; return $essais; } }