source: spip-zone/_plugins_/couteau_suisse/exec/test_couteau_suisse.php @ 72059

Last change on this file since 72059 was 72059, checked in by patfr@…, 7 years ago

Déménagement de l'icone du Couteau Suisse

File size: 11.7 KB
Line 
1 <?php
2#-----------------------------------------------------#
3#  Plugin  : Couteau Suisse - Licence : GPL           #
4#  Auteur  : Patrice Vanneufville, 2006               #
5#  Contact : patrice¡.!vanneufville¡@!laposte¡.!net   #
6#  Infos : http://www.spip-contrib.net/?article2166   #
7#-----------------------------------------------------#
8
9/*
10        Cette page test certaines fonctions presentes dans le plugin
11        Pour rajouter des tests, rdv tout en bas de cette page !
12*/
13
14include_spip('inc/texte');
15include_spip('inc/layer');
16include_spip("inc/presentation");
17
18function exec_test_couteau_suisse() {
19cs_log("DEDUT : exec_test_couteau_suisse()");
20        global $connect_statut, $connect_toutes_rubriques;
21
22        cs_minipres();
23
24        // initialisation generale forcee : recuperation de $outils;
25        cs_initialisation(true);
26
27        $commencer_page = charger_fonction('commencer_page', 'inc');
28        echo $commencer_page(_T('couteauprive:titre_tests'), "configuration", 'couteau_suisse');
29
30        echo '<br /><br /><br />', gros_titre(_T('couteauprive:titre_tests'), '', false), 
31                '<div style="width:98%; text-align:left; margin:0 auto">';
32
33        // et hop, on lance les tests !
34        cs_les_tests();
35        echo '</div>';
36
37        echo fin_page();
38cs_log(" FIN : exec_test_couteau_suisse()");
39}
40
41// renvoie un tableau contenant le texte original et sa transfrmation par la fonction $fonction
42// $textes est un tableau de chaines
43function cs_test_fun(&$textes, $fonction) {
44        $a = array();
45        if (!function_exists($fonction)) return array('erreur' => "$fonction() introuvable : outil non activ&eacute; !");
46        foreach ($textes as $i=>$t) {
47                $b = $fonction($t);
48                $a["$i. test"] = htmlentities($t, ENT_COMPAT, $GLOBALS['meta']['charset']);
49//              $a["\$resultat[$i]"] = htmlentities($b);
50                $a["$i. r&eacute;sultat"] = str_replace("\n",'\n', $b);
51        }
52        return $a;
53}
54
55// affiche un cadre de titre $titre base sur les donnees de $array
56function test_outil($array, $titre) {
57        global $icone;
58        static $i; $i++;
59        echo "<a id=$i></a>",debut_cadre_trait_couleur($icone,true,'',"$i. $titre");
60        foreach($array as $s=>$v) {
61                // unserialize eventuel des tableaux
62                if(is_string($v) && strncmp($v,'a:',2)===0 && ($t=@unserialize($v))!==false) 
63                        $v = couper('serialized_'.htmlentities(var_export($t,1)),1000);
64                if(is_array($v))
65                        foreach($v as $s2=>$v2) {
66                                if(is_array($v2)) $v2 = htmlentities(var_export($v2,1));
67                                echo "\n<b>{$s}[$s2]</b> = ".trim($v2)."<br />";
68                        }
69                else echo "\n<b>$s</b> = ".trim($v)."<br />";
70        }
71        echo fin_cadre_trait_couleur(true);
72}
73
74// affiche un text en rouge
75function cs_red($s){ return "<span style='color:red;'>$s</span>"; }
76
77// effectue tous les tests !
78function cs_les_tests() {
79        global $icone, $metas_vars, $metas_outils;
80        $icone = cs_icone(24);
81
82        test_outil($_SERVER, 'Echo de : $_SERVER[]');
83        test_outil($_ENV, 'Echo de : $_ENV[]');
84        global $HTTP_ENV_VARS;
85        test_outil($HTTP_ENV_VARS, 'Echo de : $HTTP_ENV_VARS');
86        $a = array('DOCUMENT_ROOT'=>getenv('DOCUMENT_ROOT'),
87                        'REQUEST_URI'=>getenv('REQUEST_URI'),
88                        'SCRIPT_NAME'=>getenv('SCRIPT_NAME'),
89                        'PHP_SELF'=>getenv('PHP_SELF'),
90                );
91        test_outil($a, 'Echo de : getenv()');
92
93        // lecture des infos sur le plugin
94        include_spip('inc/plugin');
95        if(isset($GLOBALS['meta']['plugin'])) {
96                $t = unserialize($GLOBALS['meta']['plugin']);
97                $dir = $t['COUTEAU_SUISSE']['dir'];
98                $dir_type = $t['COUTEAU_SUISSE']['dir_type'];
99        }
100        if(!strlen($dir)) $dir = 'couteau_suisse';
101        $get_infos = defined('_SPIP20100')?charger_fonction('get_infos','plugins'):'plugin_get_infos';
102        $t = isset($dir_type)?$get_infos($dir, false, constant($dir_type)):$get_infos($dir);
103        $t['svn.revision'] = ((lire_fichier(_DIR_PLUGIN_COUTEAU_SUISSE.'svn.revision',$tmp)) && (preg_match(',<revision>(\d+)</revision>,',$tmp, $r)))?$r[1]:"-";
104        $t['meta/couteau_suisse_base_version'] = $GLOBALS['meta']['couteau_suisse_base_version'];
105        test_outil($t, 'Infos sur votre plugin pr&eacute;f&eacute;r&eacute; :-)');
106
107//      $GLOBALS['meta']
108        test_outil($GLOBALS['meta'], 'Toutes les metas de SPIP !');
109
110        // lecture des variables stockees en meta
111        test_outil($metas_outils, 'Outils actifs : $metas_outils[]');
112        test_outil($metas_vars, 'Contenu des variables : $metas_vars[]');
113
114        // test de url_absolue()
115        $relative_path = find_in_path('img/smileys');
116        $realpath = str_replace("\\", "/", realpath($relative_path));
117        $root = preg_replace(',/$,', '', $_SERVER['DOCUMENT_ROOT']);
118        $test_result=substr($realpath, strlen($root));
119        $dir = dirname(!empty($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] :
120                        (!empty($_SERVER['PHP_SELF']) ? $_SERVER['PHP_SELF'] :
121                        (!empty($_SERVER['SCRIPT_NAME']) ? $_SERVER['SCRIPT_NAME'] : str_replace('\\','/',__FILE__)
122                )));
123        $a = array('DOCUMENT_ROOT'=>$_SERVER['DOCUMENT_ROOT'],
124                        'REQUEST_URI'=>$_SERVER['REQUEST_URI'],
125                        'SCRIPT_NAME'=>$_SERVER['SCRIPT_NAME'],
126                        'PHP_SELF'=>$_SERVER['PHP_SELF'],
127                        '__FILE__'=>__FILE__,
128                        '$root'=>$root,
129                        "find_in_path('img/smileys')"=>find_in_path('img/smileys'),
130                        "str_replace('\\', '/', realpath('$relative_path'))"=>$realpath,
131                        "substr('$realpath', strlen('$root'))"=>cs_red($test_result),
132                        "return?"=>(strlen($root) && strpos($realpath, $root)===0)?'oui':'non',
133                        "url_absolue('$relative_path')"=>url_absolue($relative_path),
134                        '$dir'=>$dir,
135                        "cs_canonicalize('$dir'.'/'.'$relative_path')"=>cs_red(cs_canonicalize($dir.'/'.$relative_path)),
136                );
137        test_outil($a, 'Test sur : url_absolue()');
138
139        // test de cs_canonicalize()
140        $dir = $dir.'/'.$relative_path;
141        $address = str_replace("//", "/", $dir);
142        $address1 = $address2 = explode('/', $address);
143        $keys = array_keys($address2, '..');
144        foreach($keys as $keypos => $key) array_splice($address2, $key - ($keypos * 2 + 1), 2);
145        $address3 = preg_replace(',([^.])\./,', '\1', implode('/', $address2));
146        $a = array('$dir'=>$dir,
147                        '$address'=>$address,
148                        "explode('/', '$address')"=>$address1,
149                        'array_keys($dessus, "..")'=>$keys,
150                        'array_spliced()'=>$address2,
151                        '$resultat'=>cs_red($address3),
152                );
153        test_outil($a, 'Test sur : cs_canonicalize()');
154
155        // charger mes_fonctions, utile pour les filtres ou certains outils
156        include_spip('public/parametrer');
157
158        // test de typo_exposants()
159        include_spip('inc/charsets');
160        $textes = array(
161                "Pr Paul, Dr Jules, Prs Pierre &amp; Paul, Drs Pierre &amp; Paul. Surveiller : Pr&eacute;-St-Gervais ou Dr&eacute;",
162                "Ste Lucie, St-Lucien, St.Patrick, St Patrick, st-jules (laisser?), Sts Pierre &amp; Paul, STe Lucie (laisser?)",
163                "Bse Lucie, Bx-Lucien, Bx.Patrick, Bx Patrick, bx-jules (laisser?), Bses Jeanne &amp; Julie",
164                "Ier, Iers, Iier, Iiers, Ire (laisser?), Ires (laisser?), I&#232;re, 1i&#232;re, 1&#232;res, 1i&#232;res",
165                unicode2charset("Accents : I&#232;re, 1i&#232;re, 1&#232;res, 1i&#232;res - ro, vo, rro, 1o, 2o, 22o, Mgr J.XXIII"),
166                unicode2charset("Ie II&#232;me IIIe IVe Ve VIe VIIe VIIIe IXe Xe XIe XVe XXe"),
167                unicode2charset("Erreurs de typo : 2me, 3&#232;me, 4i&#232;me, 5mes, 6&#232;mes, 7i&#232;mes"),
168                unicode2charset("Cas probl&#233;matique du L (50) : XLe XL&#232;me XLi&#232;me L&#232;me LIe"),
169                "1er 1ers, 1eres, 2e 2es, IIIe IIIes, 2nd 22nd 21nd 2ndes. Vve Martin Cie Tartuffe, 3 Bd Voltaire.",
170                "3 ou 4 m², 3 ou 4 m2 et 2 m3. 50 Mds ou 50 Mns ! Sté, St&eacute;s, Stés, Ste, Ets, Éts, Éts, &Eacute;ts, &#201;ts ...",
171                "Mlle, Mlles, Mme, Mmes et erreurs Melle, Melles",
172                "Me, Me martin, Me Martin, Mes M.&T., MMes M.&T.",
173                'avant <a href="www.mon-1er-lien.com" title="Mon 1er titre">Mon 1er lien</a> et <img src="image.jpg" alt="logo 6e" title="Cliquez!">',
174                'avant [Mon 1er lien->www.mon-1er-lien.com] apres le "test"!',
175                'on est pass&eacute; du 7e au 15e rang, pas du 17e au 5e, des 7es aux 3emes !',
176                'on est pass&eacute; du 7eme au 15&#232;me rang, pas du 17ieme au 5&egrave;me',
177        );
178        test_outil(cs_test_fun($textes, 'typo_exposants'), 'Test sur : typo_exposants() - Charset du site : '.$GLOBALS['meta']['charset']);
179
180        // test de typo_guillemets()
181        $textes = array(
182                'avant <i class="style">le</i> "test"!',
183                'avant <code class="code">toto</code>. apres le "test"!',
184                'avant '.echappe_html('<script>toto</script>', 'TEST', true).'apres le "test"!',
185                'avant '.echappe_html('<code class="code">toto</code>', 'TEST', true).'apres le "test"!',
186                'avant <a href="www.monlien.com" title="Mon titre" target="_blank">Mon lien</a> apres le "test"!',
187                'avant [Mon lien->www.monlien.com] apres le "test"!',
188        );
189        test_outil(cs_test_fun($textes, 'typo_guillemets'), 'Test sur : typo_guillemets()');
190
191        // test des smileys
192        $textes = array(
193                "Doubles : :-(( :-)) :)) :'-)) :'-))",
194                "Simples : :-> :-&gt; :-( :-D :-) |-) :'-) :'-) :'-D :'-D :'-( :'-( :-( :o) B-) ;-) :-p :-P' :-| :-/ :-o :-O",
195                "les courts (reconnus s'il y a un espace avant) : :) :( ;) :| |) :/ :(",
196        );
197        test_outil(cs_test_fun($textes, 'cs_smileys_pre_typo'), 'Test sur : cs_smileys_pre_typo()');
198
199        // test des filets
200        $textes = array(
201                "__degrade.png__\n__ornement.png__",
202                "\n__6__\n__5__\n__4__\n__3__\n__2__\n__1__\n__0__\n",
203        );
204        if(function_exists('filets_sep'))
205                test_outil(cs_test_fun($textes, create_function('$t','return propre(filets_sep($t));')), 'Test sur : filets_sep()');
206
207        // test des liens orphelins
208        $GLOBALS["liens_orphelins_etendu"]=true;
209        $textes = array(
210                "http://google.fr et <html>http://google.fr</html> et <code>http://google.fr</code> et <cite>http://google.fr</cite>",
211                "Voici : http://google.fr. Voici :http://www.google.fr. Voici http://www.google.fr",
212                "voici : https://mabanque.fr ou encore ftp://mabanque.fr!",
213                "www.google.fr ou bien : www.google.fr",
214                "http://user:password@www.commentcamarche.net:80/glossair/glossair.php3 et http://serveur:port/repertoire/fichier.html",
215                "ftp://serveur/repertoire/fichier.qqchose, ou encore ftp.stockage.fr/tropdelaballe...",
216                "file:///disque|/repertoire/fichier.qqchose et : file:///c|/tmp/fichier.txt",
217                "mailto:nom@organisation.domaine et : mailto:Fabien.Gandon@sophia.inria.fr",
218                "telnet://bbs.monsite.com/ et telnet://Nom:Password@serveur.ici:port",
219                "telnet://gandonf:abcde@gopa.insa.fr:23",
220                "gopher://serveur.ici:port/repertoire/fichier#marqueur et gopher://gopher.monsite.com/",
221                "newsrc://serveur:port/repertoire/nom.de.la.news",
222                "wais://host.ici:port/database et wais://wais.monsite.com/",
223                "news:fr.comp.lang.c++ et pkoi pas : <div toto='ici.rien'></div>http://google.fr",
224                "moi+moi@world.com, mailto:moi-moi@world.com, mailto:nom@provider.com?subject=renseignement",
225                "moi+moi@kekpar.tm.fr, mailto:moi-moi@kekpar.tm.fr, mailto:nom@provider.com.tm.fr?subject=renseignement",
226                'une image ? <img src="http://mailer.e-flux.com/mail_images/toto.jpg" alt="" />',
227                '[<img src="http://mailer.e-flux.com/mail_images/toto.jpg" alt="" />->http://www.americas-society.org/] ',
228        );
229//      test_outil(cs_test_fun($textes, 'typo'), 'Test sur : echappements');
230        test_outil(cs_test_fun($textes, 'liens_orphelins'), 'Test sur : liens_orphelins()');
231
232        $textes = array(
233                "mailto:nom@organisation.domaine et : mailto:Fabien.Gandon@sophia.inria.fr (on supprime ces liens)",
234                "moi+moi@world.com, mailto:moi-moi@world.com, mailto:nom@provider.com?subject=renseignement",
235                "pat@moi.com [->pat@moi.com] [pat->pat@moi.com]",
236                "pat@moi.com.tm.fr [->pat@moi.com.tm.fr] [pat->pat@moi.com.tm.fr]",
237                "<a href='mailto:moi@toto.com'>Moi</a> et : <a href='mailto:moi@toto.com'>moi@toto.com</a>",
238                "<a href='mailto:moi@kekpar.tm.fr'>Moi</a> et : <a href='mailto:moi@kekpar.tm.fr'>moi@kekpar.tm.fr</a>",
239                '[Navigation->/@mot.html] <a class="spip_out" href="/@mot.html">Navigation</a>',
240        );
241        test_outil(cs_test_fun($textes, 'mailcrypt'), 'Test sur : mailcrypt()');
242
243/*
244define('_COULEURS_FONDS', 1); define('_COULEURS_SET', 1);
245define('_COULEURS_PERSO', "bas =#99CC11, haut= brown, test= bleu");
246couleurs_installe_dist();
247print_r(couleurs_pre_typo("to[bas]to[/bas]to[haut]to[/haut]toto[test]to[/couleur]to\nto[bg bas]to[/bg]to[bg haut]to[/bg]toto[bg test]to[/bg test]to\n"));
248print_r(couleurs_pre_typo("to[red]to[/red]to[bleu]to[/bleu]toto[rouge]to[/couleur]to\nto[bg red]to[/bg]to[bg bleu]to[/bg]toto[bg rouge]to[/bg rouge]to\n"));
249*/
250}
251?>
Note: See TracBrowser for help on using the repository browser.