Skip to content
Extraits de code Groupes Projets
Valider f3120a68 rédigé par ben.spip@gmail.com's avatar ben.spip@gmail.com
Parcourir les fichiers

et réaparaissent

git-svn-id: https://zone.spip.org/spip-zone/_core_/tests@28915 ac52e18a-acf5-0310-9fe8-c4428f23b10a
parent
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Affichage de
avec 657 ajouts et 0 suppression
[(#REM)
On va verifier plusieurs hierarchies du site
notamment pour voir si l'ordre est le bon
]
<BOUCLE_a(RUBRIQUES){tout}{0,50}>
<BOUCLE_secteur(HIERARCHIE){0,1}>[(#ID_RUBRIQUE|=={#_a:ID_SECTEUR}|?{'',
erreur secteur: attendu #_a:ID_SECTEUR ; resultat #ID_RUBRIQUE<br />})]
</BOUCLE_secteur>
<BOUCLE_parent(HIERARCHIE){n-1,1}>[(#ID_RUBRIQUE|=={#_a:ID_PARENT}|?{'',
erreur parent: attendu #_a:ID_PARENT ; resultat #ID_RUBRIQUE<br />})]
</BOUCLE_parent>
</BOUCLE_a>
OK
[(#REM)
Un test pour le critere {branche}
verifie :
- une rubrique est dans sa branche
- sa fille est dans sa branche
- elle n'est pas dans la branche de sa fille
]
<BOUCLE_a(RUBRIQUES){id_parent>0}>
<BOUCLE_b(RUBRIQUES){id_rubrique=#ID_PARENT}>
<BOUCLE_d(RUBRIQUES){branche}{id_rubrique}>
</BOUCLE_d>
#_b:ID_RUBRIQUE devrait etre dans sa propre branche<br />
<//B_d>
<BOUCLE_c(RUBRIQUES){branche}{id_rubrique=#_a:ID_RUBRIQUE}>
</BOUCLE_c>
#_a:ID_RUBRIQUE devrait etre dans la branche de #_b:ID_RUBRIQUE<br />
<//B_c>
</BOUCLE_b>
<BOUCLE_e(RUBRIQUES){branche}{id_rubrique=#ID_PARENT}>
#ID_RUBRIQUE ne devrait pas etre dans la branche de sa fille ! <br />
</BOUCLE_e>
</BOUCLE_a>
OK
#CACHE{0}
[(#REM)
test 1 : un article non traduit est bien {origine_traduction}
]
<BOUCLE_ori(ARTICLES){origine_traduction}{id_trad=0}{0,1}> </BOUCLE_ori>
erreur boucle origine
<//B_ori>
[(#REM)
test 2 : un article traduit n'a qu'une traduction qui est {origine_traduction}
]
<BOUCLE_ori2(ARTICLES){id_trad>0}{origine_traduction}>
<BOUCLE_casse(ARTICLES){traduction}{origine_traduction}{!id_article}>
boum ! #ID_ARTICLE ne devrait pas etre origine
</BOUCLE_casse>
</BOUCLE_ori2>
NA ce test exige d'avoir au moins un article traduit
<//B_ori2>
OK
#CACHE{0}
[(#REM)
Cette page teste le fonctionnement du critere {LIKE}
on selectionne d'abord un article, puis on regarde si
on reussit a le selectionner avec {titre LIKE a%}
ou a est son initiale (test b)
et l'inverse (test c)
idem pour regexp
]
<BOUCLE_a(ARTICLES){titre>=A}{titre<=Z}{0,1}>
[(#SET{t,[(#TITRE|couper{1})]})]
[(#REM) ------------- tests de LIKE ---------------- ]
[(#REM)
Cette boucle doit donner l'article
]<BOUCLE_b(ARTICLES){titre like (#GET{t}|concat{%})}{id_article}>
#SET{testb,ok}
</BOUCLE_b>
echec de {titre like #GET{t}%}
<//B_b>
[(#REM)
Cette boucle doit echouer
]<BOUCLE_c(ARTICLES){titre !like (#GET{t}|concat{%})}{id_article}>
</BOUCLE_c>
echec de {titre !like #GET{t}%}
</B_c>
#SET{testc,ok}
<//B_c>
[(#REM) ------------- tests de REGEXP ---------------- ]
[(#REM)
Cette boucle doit donner l'article
]<BOUCLE_d(ARTICLES){titre == ^#GET{t}}{id_article}>
#SET{testd,ok}
</BOUCLE_d>
echec de {titre ==^#GET{t}}
<//B_d>
[(#REM)
Cette boucle doit echouer
]<BOUCLE_e(ARTICLES){titre !==^#GET{t}}{id_article}>
</BOUCLE_e>
echec de {titre !== ^#GET{t}}
</B_e>
#SET{teste,ok}
<//B_e>
</BOUCLE_a>
[(#REM) ------------- validation des resultats ---------------- ]
[(#GET{testb}|?{#GET{testc}}|?{#GET{testd}}|?{#GET{teste}}|?{OK})]
</B_a>
Ce test exige un article ayant un titre qui commence par une lettre A-Z
<//B_a>
\ No newline at end of file
[(#REM)
Le critere {traduction} doit donner l'article courant meme s'il n'a
aucune traduction, cf.
http://thread.gmane.org/gmane.comp.web.spip.devel/20772
]
#CACHE{0}
[(#REM) test 1 : un article sans trad]
<BOUCLE_principale(ARTICLES){id_trad=0}{0,1}>
<BOUCLE_check(ARTICLES){traduction}>
#SET{ok1,1}
</BOUCLE_check>
boucle check: le critere {traduction} a echoue
sur un article non traduit (article #ID_ARTICLE)
<//B_check>
</BOUCLE_principale>
NA Le test 1 requiert un article publie sur le site
<//B_principale>
[(#REM) /fin test 1 ]
[(#REM) test 2 : un article et ses traductions ]
<BOUCLE_s(ARTICLES){id_trad>0}{0,1}>
<B_t>
#SET{ok2,1}
<BOUCLE_t(ARTICLES){traduction}> </BOUCLE_t>
</BOUCLE_s>
NA Le test 2 necessite un article publie et traduit
<//B_s>
[(#REM) / fin test 2 ]
[(#REM) Valider les tests et donner le OK ]
[(#GET{ok1}|?{#GET{ok2}}|?{OK})]
[(#REM)
On va tester le rendu des documents joints
]
[(#REM)
D'abord une image uploadee en vignette, et sans titre
On teste le rendu de son src, width, height
]
<BOUCLE_d(DOCUMENTS){mode=image}{titre=''}{descriptif=''}{0,1}>
[(#SET{img,[(#REM|sinon{<img#ID_DOCUMENT>}|propre)]})]
[(#SET{doc,[(#REM|sinon{<doc#ID_DOCUMENT>}|propre)]})]
[(#SET{emb,[(#REM|sinon{<emb#ID_DOCUMENT>}|propre)]})]
[(#GET{img}|extraire_balise{img}|extraire_attribut{src}|quote_amp|=={#URL_DOCUMENT}|?{
#SET{ok1,1}
,' '})
&lt;img#ID_DOCUMENT&gt; src pas bon: &quot;#URL_DOCUMENT&quot; != &quot;[(#GET{img}|extraire_balise{img}|extraire_attribut{src})]&quot;
]
[(#GET{doc}|extraire_balise{img}|extraire_attribut{src}|quote_amp|=={#URL_DOCUMENT}|?{
#SET{ok2,1}
,' '})
&lt;doc#ID_DOCUMENT&gt; src pas bon: &quot;#URL_DOCUMENT&quot; != &quot;[(#GET{doc}|extraire_balise{img}|extraire_attribut{src})]&quot;
]
[(#GET{emb}|extraire_balise{img}|extraire_attribut{src}|quote_amp|=={#URL_DOCUMENT}|?{
#SET{ok3,1}
,' '})
&lt;emb#ID_DOCUMENT&gt; src pas bon: &quot;#URL_DOCUMENT&quot; != &quot;[(#GET{emb}|extraire_balise{img}|extraire_attribut{src})]&quot;
]
</BOUCLE_d>
NA Ce test exige une image chargee en mode "image" et n'ayant ni titre ni descriptif
<//B_d>
[(#GET{ok1}|?{#GET{ok2}}|?{#GET{ok3}}|?{OK})]
<?php
$test = 'spip_nfslock';
require '../test.inc';
include_spip("inc/nfslock");
$verrou = spip_nfslock('monfichier');
$verrou_ok = spip_nfslock_test('monfichier',$verrou);
$verrou_absent = spip_nfslock_test('un autre',$verrou);
$deverrouille = spip_nfsunlock('monfichier',$verrou);
$verrou_absent2 = spip_nfslock_test('monfichier',$birth);
if ($verrou AND $verrou_ok AND !$verrou_absent AND $deverrouille AND !$verrou_absent2){
echo "OK";
exit;
}
echo "<ul><li>Erreur NFSLock :";
echo "<ul>";
echo "<li>verrou sur 'monfichier':$verrou</li>";
echo "<li>test du verrou sur 'monfichier':$verrou_ok</li>";
echo "<li>test du verrou sur 'un autre':$verrou_absent</li>";
echo "<li>deverrouille 'monfichier':$deverrouille</li>";
echo "<li>test du verrou sur 'monfichier':$verrou_absent2</li>";
echo "</ul></li></ul>";
?>
<?php
$test = '_q';
require '../test.inc';
include_spip("inc/utils");
// un nombre donne un nombre
$essais[] =
array('12345',12345);
// une chaine reprensentant un nombre donne la chaine
$essais[] =
array("'0x8488'",'0x8488');
// une chaine reprensentant un nombre donne la chaine
$essais[] =
array("'12345'",'12345');
// une chaine donne la chaine
$essais[] =
array("'zorglub'",'zorglub');
// une chaine donne la chaine
$essais[] =
array("'010. Zorglub'",'010. Zorglub');
// les ' et " sont echapees
$essais[] =
array("'1\\\"2\\'3'",'1"2\'3');
//
// hop ! on y va
//
$err = tester_fun('_q', $essais);
// si le tableau $err est pas vide ca va pas
if ($err) {
die ('<dl>' . join('', $err) . '</dl>');
}
echo "OK";
?>
[(#REM)
Le filtre |abs_url doit modifier les liens a@href et img@src
a l'interieur d'un texte, et modifier les simples chaines de caracteres
quand elles proviennent de # URL_ARTICLE, mais pas ailleurs (# TITRE par ex)
]
<BOUCLE_a(ARTICLES){texte=='<(a|img) '}{0,1}>[
(#URL_ARTICLE|abs_url|=={#URL_ARTICLE}|?{#VAL{'erreur sur #URL_ARTICLE 1 :'}|concat{#URL_ARTICLE|abs_url,'=',#URL_ARTICLE}})][
(#URL_ARTICLE|abs_url|=={#URL_SITE_SPIP/#URL_ARTICLE}|?{'',#VAL{'erreur sur #URL_ARTICLE 2 :'}|concat{#URL_ARTICLE|abs_url{},'!=',#URL_SITE_SPIP/tests/#URL_ARTICLE}})
][(#TITRE|abs_url|=={#TITRE}|?{'','erreur sur #TITRE'})
][(#TITRE|abs_url|=={#TEXTE}|?{'erreur sur #TEXTE'})]</BOUCLE_a>
OK
<//B_a>
\ No newline at end of file
<?php
$test = 'attribut_html';
require '../test.inc';
include_spip("inc/filtres");
$url = "/ecrire/?exec=exec&id_obj=id_obj&no_val";
$amp = str_replace('&', '&amp;', $url);
$essais[] =
array("aujourd&#39;hui &gt; &quot;30&quot; &rarr; 50","aujourd'hui > \"30\" &rarr; <a href='http://www.spip.net'>50</a>");
$essais[] =
array('L&#39;histoire &#39;tr&#232;s&#39; &quot;folle&quot; des m&#233;tas en iitalik','L\'histoire \'tr&egrave;s\' "folle" <strong>des</strong>&nbsp;m&eacute;tas<p>en <em>ii</em>talik</p>');
// le a` risque de matcher \s
$essais[] =
array('allons &#224; la mer', 'allons '.chr(195).chr(160).' la mer');
//
// hop ! on y va
//
$err = tester_fun('attribut_html', $essais);
// si le tableau $err est pas vide ca va pas
if ($err) {
die ('<dl>' . join('', $err) . '</dl>');
}
echo "OK";
?>
<?php
$test = 'extraire_attribut';
require '../test.inc';
include_spip('inc/texte');
$texte = '
Le r&#233;sultat se pr&#233;sente sous la forme suivante :
<code>root@bennybox# ls /var/state/mysql/
alternc/ spip/ truc/
zope/
root@bennybox# ls /var/state/mysql/spip/
spip_articles.sql.gz spip_breves.sql.gz ....
</code>
';
echo ($a = propre($texte)) == '<p>Le r&#233;sultat se pr&#233;sente sous la forme suivante&nbsp;:</p>
<div style=\'text-align: left;\' class=\'spip_code\' dir=\'ltr\'><code>root@bennybox# ls /var/state/mysql/<br />
alternc/ &nbsp; &nbsp; &nbsp; &nbsp; spip/ &nbsp; &nbsp; &nbsp; &nbsp; truc/<br />
zope/<br />
<br />
root@bennybox# ls /var/state/mysql/spip/<br />
spip_articles.sql.gz &nbsp; &nbsp;spip_breves.sql.gz ....</code></div>'
? 'OK'
: var_export($a,1);
?>
[(#REM)
Teste les filtres |compacte_xx
]
[(#REM)
----------------- compacte_js -----------------
]
[(#CHEMIN{javascript/layer.js}|compacte
|spip_file_get_contents
|match{function AjaxSqueeze}
|?{'', [(#SET{err1,erreur fonction absente})] })]
[(#CHEMIN{javascript/layer.js}|compacte
|spip_file_get_contents
|match{Son premier argument}
|?{ [(#SET{err2,erreur commentaire present})] })]
#GET{err1}
#GET{err2}
[(#GET{err1}|sinon{#GET{err2}}|?{'', OK})]
<?php
$test = 'entites_html';
require '../test.inc';
include_spip("inc/filtres");
$essais[] =
array("&lt;code&gt;&amp;#233;&lt;/code&gt;&#233;","<code>&#233;</code>&#233;");
//
// hop ! on y va
//
$err = tester_fun('entites_html', $essais);
// si le tableau $err est pas vide ca va pas
if ($err) {
die ('<dl>' . join('', $err) . '</dl>');
}
echo "OK";
?>
Ce diff est replié.
<?php
$test = 'extraire_balise';
require '../test.inc';
include_spip('inc/filtres');
// extraire une balise ouvrante
$essais[] = array('<a href="truc">chose</a>', 'allo <a href="truc">chose</a>');
// extraire une balise autofermante
$essais[] = array('<a href="truc" />', 'allo <a href="truc" />');
// peu importent les \n
$essais[] = array("<a\nhref='truc' />", 'allo'."\n"." <a\nhref='truc' />");
// extraire plusieurs balises (array => array)
$essais[] = array(
array('<a href="1">', '<a href="2">'),
array('allo <a href="1">', 'allo <a href="2">')
);
$err = tester_fun('extraire_balise', $essais);
// si le tableau $err est pas vide ca va pas
if ($err) {
die ('<dl>' . join('', $err) . '</dl>');
}
$essais = array();
// un tag
$essais[] = array(
array('<a href="truc">chose</a>'),
'bonjour <a href="truc">chose</a> machin'
);
// deux tags
$essais[] = array(
array('<a href="truc">chose</a>', '<A href="truc">machin</a>'),
'bonjour <a href="truc">chose</a> machin <A href="truc">machin</a>'
);
// tag mal forme
$essais[] = array(
array('<a href="truc">'),
'bonjour <a href="truc">chose'
);
// piege
$essais[] = array(
array('<a href="truc"/>'),
'<a href="truc"/>chose</a>'
);
// sans attributs
$essais[] = array(
array('<a>chose</a>'),
'<a>chose</a>'
);
$err = tester_fun('extraire_balises', $essais);
// si le tableau $err est pas vide ca va pas
if ($err) {
die ('<dl>' . join('', $err) . '</dl>');
}
// un exemple d'utilisation sympa du mode "array" de ces fonctions:
// aller chercher toutes les images d'un texte (img/src) ou encore
// tous les url des balises media:content :
lire_fichier('tests/syndication/data/dailymotion.rss', $rss);
$flux = extraire_attribut(extraire_balises($rss, 'media:content'), 'url');
# var_dump($flux);
if (!is_array($flux) OR !count($flux)==39)
echo "pas vu les 39 media:content de dailymotion.rss !\n";
// en objet on ecrirait
// $rss->extraire_balises('media:content')->extraire_attribut('url');
echo "OK";
?>
<?php
$test = 'extraire_date';
require '../test.inc';
include_spip('inc/filtres');
$essais["2000/01"] = array('2000-01-01', "2000/01");
$essais["2000/12"] = array('2000-12-01', "2000/12");
$err = tester_fun('extraire_date', $essais);
// si le tableau $err est pas vide ca va pas
if ($err) {
die ('<dl>' . join('', $err) . '</dl>');
}
echo "OK";
?>
#SET{t,t#EVAL{chr(91).chr(93)}}
[(#REM)
Verifier que parametre_url fonctionne
]
[(#VAL{x}|parametre_url{y,1}|=={'x?y=1'}|?{'', erreur parametre url 1})]
[(#VAL{x}|parametre_url{y,1}|parametre_url{y,2}|=={'x?y=2'}|?{'',
erreur parametre url 2<br />})]
[(#VAL{x}|parametre_url{#GET{t},1}|parametre_url{#GET{t},2}|=={
#VAL{x}|concat{'?'}|concat{#GET{t}}|concat{'=1&amp;'}|concat{#GET{t}}|concat{'=2'}
}|?{'',
erreur parametre url tableau<br />})]
[(#REM)
Verifie que form_hidden n'ajoute pas des valeurs pour rien
]
[(#VAL{x}|parametre_url{toto,1}|parametre_url{toto,%!}|concat{&amp;toto=3=2}|form_hidden|extraire_balises{input}|count|=={1}|?{'',
bug compte d'input<br />})]
[(#VAL{x}|parametre_url{toto,3=2}|concat{&amp;toto=p}|form_hidden|extraire_balise{input}|extraire_attribut{value}|=={'3=2'}|?{'',
bug value<br />})]
[(#REM) si var est un tableau, il faut conserver tous les input ]
[(#VAL{x}|parametre_url{#GET{t},1}|parametre_url{#GET{t},%!}|concat{&amp;#GET{t}}|concat{=3=2}|form_hidden|extraire_balises{input}|count|=={3}|?{'',
bug tableau<br />})]
OK
\ No newline at end of file
<?php
(isset($test) && $test) || ($test = 'liens_absolus');
require '../test.inc';
include_spip('inc/filtres');
$essais["lien prive"] =
array("bla bla <a href='".generer_url_ecrire('toto','truc=machin&chose=bidule',false,false)."'>lien prive</a>",
"bla bla <a href='".generer_url_ecrire('toto','truc=machin&chose=bidule',false,true)."'>lien prive</a>");
$essais["lien public"] =
array("bla bla <a href='".generer_url_public('toto','truc=machin&chose=bidule',false,false)."'>lien public</a>",
"bla bla <a href='"._DIR_RACINE.generer_url_public('toto','truc=machin&chose=bidule',false,true)."'>lien public</a>");
$essais["mailto"] =
array("bla bla <a href='mailto:toto'>email</a>",
"bla bla <a href='mailto:toto'>email</a>");
$essais["javascript"] =
array("bla bla <a href='javascript:open()'>javascript</a>",
"bla bla <a href='javascript:open()'>javascript</a>");
//
// hop ! on y va
//
# tests invalides si _SPIP_SCRIPT vaut ''
if (_SPIP_SCRIPT === '')
die ('NA _SPIP_SCRIPT=""'); # non applicable
$err = tester_fun('liens_absolus', $essais);
// si le tableau $err est pas vide ca va pas
if ($err) {
die ('<dl>' . join('', $err) . '</dl>');
}
echo "OK";
?>
<?php
/*
* Le meme que liens_absolus.php mais on hacke _SPIP_TEST_INC
* pour que le chdir() au debut de test.inc nous transporte dans ecrire/
* ceci avant que inc_version.php soit inclus ...
*/
// let's go ecrire/
define('_SPIP_TEST_CHDIR', dirname(dirname(dirname(__FILE__))) . '/ecrire');
$test = 'liens_absolus_prive';
// si on rajoute ça ...
// ça serait presque mieux , mais generer_url_public fait pas de resolv_path()
//define('_SPIP_SCRIPT', '../../');
include dirname(__FILE__) . '/liens_absolus.php';
?>
[(#REM)
Teste le filtre |liens_ouvrants
]
#SET{texte,
Ceci est un lien [ouvrant->http://www.spip.net/ar] rondtudiou.
}
[(#GET{texte}|propre
|liens_ouvrants
|match{<a\s.*target=('|")_blank('|").*>}
|?{OK}
|sinon{#GET{texte}|propre})]
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter