Manual:Parser tests/fr

Le plus souvent, les cas de test de l'analyseur spécifie le wikicode (l'entrée généralement) et le HTML (la sortie généralement), pour confirmer que les choses se déroulent comme on les attend. La sortie courante est comparée au résultat souhaité, et ainsi les cas de test de l'analyseur (connus également sous le nom de tests de l'analyseur) peuvent être utiles pour détecter les régressions.

Les cas de test de l'analyseur sont rangés dans le répertoire. Les extensions doivent placer leurs tests dans un répertoire.

Vous pouvez à la fois faire les tests en utilisant la suite de tests unitaires de php, ou bien utiliser parserTests.php de manière indépendante. Ainsi un test en échec de l'analyseur déclenchera une erreur de test dans Jenkins.



Syntaxe et exécution


Format de la version 2
A partir de la 1.35, les tests de l'analyseur doivent se faire avec le format version 2. En précisant la version 2 vous indiquez que les tests sont utilisables en mode nettoyé (voir la tâche T249138).

Pour indiquer que vos tests de l'analyseur sont à exécuter au format version 2, vous pouvez utiliser la section des options du début de fichier (voir ci-dessous).

Eventuellement, en tant que raccourci, vous pouvez mettre  sur la première ligne de votre fichier de test de l'analyseur.



Autoriser les accroches
Pour être sûr que la balise d'extension  soit chargée, ajoutez au début du fichier :



Ajouter des articles
Pour créer de nouveaux articles, la syntaxe est :



Structure d'un test d'analyseur
En plus de l'heure du test, un test possède un certain nombre de sections :
 * sections obligatoires :
 * sections facultatives :,  ,  ,  ,  ,  ,  ,



Sections spécifiques à l'ancien analyseur
L'ancien analyseur s'attend toujours à trouver la section  et une des sections   ou.



Sections spécifiques à Parsoid
Les sections  et les différentes sections   n'ont de sens que pour les tests lancés avec Parsoid. Parsoid permet aussi une configuration supplémentaire avec des options supplémentaires spécifiques au test, dans la section des options. Parce que Parsoid permet de lancer les tests selon différents modes, ces derniers vont déterminer les sections attendues.


 * Pour les modes wt2html et html2wt, en plus de la section, au moins une des sections  ,  ,  , ou   doit être présente.
 * Pour le mode wt2wt, seule la section  est suffisante (mais le lanceur de test s'attend à trouver actuellement une section   présente).
 * Pour le mode html2html, une des sections  est suffisante.
 * Pour les modes selser, les sections wikitext et au moins une des html doivent être présentes.
 * Pour les modes manuels selser, wikitext et wikitext/edited doivent être présents ensemble.

Exemple
La syntaxe pour un test simple est la suivante :



Section de configuration
Si vous spécifiez les paramètres de configuration ici, assurez-vous qu'il n'y ait aucun espace entre les expressions parce que l'espace n'est pas supprimé par le lanceur de tests.



Section des options
Chaque option doit être sur une ligne séparée.

Format changes
 * désactive le test.
 * exécute le test uniquement avec l'analyseur par défaut du noyau, sauf s'il existe des sections HTML spécifiques à Parsoid. Le nom php est un vestige du passé, lorsque Parsoid était une base de code Node.js.
 * ou  (objet au format JSON) active les options spécifiques à Parsoid.
 * Exemple :  exécute ce test uniquement dans ces deux modes. Par défaut, le test est exécuté dans tous les modes de test disponibles et indiqués dans les sections wikitext et html. Généralement, cela équivaut à exécuter le test dans les modes suivants : wt2html, wt2wt, html2wt, html2html, selser. Le mode selser est l'abbreviation pour d'un mode de test où la section HTML est modifiée de certaines façons automatiques puis ensuite convertie en wikicode en utilisant les transformations de sérialisation sélective de Parsoid (selser henceforth) transformations.
 * Dans l'objet format JSON, les clés suivantes sont actuellement reconnues
 * - Ceci est une liste de modes Parsoid à exécuter.
 * - Si selser est l'un des modes de test de la propriété modes, celle-ci peut spécifier optionnellement  pour indiquer que les modifications automatiques pour ce test ne doivent pas être générées. Si c'est le cas, seules les modifications manuelles telles que celles spécifiées par la propriété , seront appliquées.
 * - Ce format est décrit séparément ci-dessous. Cette option doit être appairée à une section  dans le test (voir ci-dessous)  qui spécifie la sortie wikicode attendue quand ce HTML modifié est converti (via selser) en wikicode par Parsoid.

Tableau de modifications individuelles à appliquer au DOM du HTML généré par le wikicode transformé. Chaque élément du tableau contient 3 éléments ou plus : (a) un sélecteur jquery pour sélectionner le noeud DOM, (b) le type de modification à appliquer au noeud sélectionné (c) les valeurs correspondantes ou le contenu à appliquer à la modification spécifiée.

Plus simplement, chaque élément du tableau représente un appel de méthode jquery . Ainsi, [x,y,z...] devient  donc, ['fig', 'attr', 'width', '120'] est interprété comme

Actuellement seules les méthodes jquery suivantes sont reconnues :

Voir http://api.jquery.com/ pour la documentation de ces méthodes.

« contents » en tant que second argument appelle la méthode jquery .contents sur les résultats du sélecteur du premier argument, ce qui est une bonne manière d'obtenir le texte et les noeuds de commentaire.



Sections wikicode

 * - Ceci est supposé être présent dans tous les tests qui nécessitent le wikicode à convertir en HTML (ou dans les modes html2wt et wt2wt de Parsoid, le wikicode à générer à partir des sections HTML).
 * - Cette section ne concerne que l'exécution des tests Parsoid. Pour les tests qui fournissent un ensemble manuel de modifications à appliquer au HTML généré de la section wikitext, ceci est la sortie attendue quand Parsoid reconvertit ce HTML modifié en wikicode.



Sections HTML

 * - Voici la section de sortie originale par défaut pour un test d'analyseur. Parsoid n'utilise cette section que s'il n'y a aucune section Parsoid spécifique disponible (voir ci-dessous). Si Parsoid utilise cette section pour un test, Parsoid aura des difficultés pour normaliser la sortie HTML de Parsoid avant de la comparer à ce HTML. Ceci est dû à ce que Parsoid génère différentes balises pour un grand nombre de constructions de wikicode. La normalisation assure que les attributs sémantiques et les propriétés (qui n'influencent pas le rendu) ne créeront pas de tests en faute.
 * - Cette section n'est utilisée que par l'ancien analyseur; elle est ignorée par Parsoid.
 * - Ceci est la section par défaut utilisée par Parsoid et elle est utilisée à la fois pour des tests unitaires (standalone) et pour les tests d'intégration si les sections dédiées sont absentes pour ces modes. Le lanceur de tests va normaliser de manière minimale la sortie de Parsoid et de cette section pour vérifier si le test a réussi ou a échoué. La normalisation supprime certains attributs verbeux pour empêcher d'avoir à ajouter toutes ces informations aux tests de l'analyseur.
 * - Cette section HTML de Parsoid est utilisée uniquement dans les tests standalone de Parsoid (uniquement implémenté dans le lanceur de tests de Parsoid).
 * - Cette section HTML de Parsoid n'est utilisée que dans les tests d'intégration de Parsoid (implémenté uniquement dans le lanceur de tests du noyau MediaWiki).



Autoriser les tests de Parsoid
Vous pouvez faire exécuter avec Parsoid tous les tests d'un fichier en utilisant l'option parsoid-compatible dans la section des options des fichiers. Vous pouvez spécifier des modes individuels, ou autoriser tous les modes en ne mettant aucune option. Par exemple  permet d'exécuter les tests Parsoid dans les modes wt2html et wt2wt. Mais  permet d'exécuter les tests Parsoid dans tous les modes (wt2html, wt2wt, html2wt, html2html, selser).

Voir l'exemple ci-dessous.



extension.json et tests de l'analyseur
Les extensions qui enregistrent leurs tests dans  et qui utilisent extension.json will auront leurs tests d'analyseur automatiquement activés. Les extensions qui se servent de l'ancien système de chargement des extensions peuvent utiliser :



Exécuter les tests avec parserTests.php
Pour exécuter les tests de l'analyseur, allez dans le répertoire de votre installation locale MediaWiki et exécutez les instructions suivantes à partir de la ligne de commande :

Pour exécuter les tests juste pour un seul fichier, utilisez le paramètre. Voir  pour les autres paramètres.



Options particulières au lanceur de test de Parsoid
Ces options ne sont pas disponibles avec le lanceur de tests de l'analyseur du noyau MediaWiki en MW 1.38 et auparavent. Vous pouvez lancer les tests en mode Parsoid via l'option. La meilleure documentation et la plus actuelle concernant toutes les options s'affiche avec :



Initialisation des paramètres de configuration globaux
Pour initialiser les variables globales par défaut pour tous les tests de l'analyseur dans une extension, utilisez l'accroche.

Pour un test donné, initialisez les paramètres de configuration ainsi :

<span id="See_also">