Příručka:Parsovací testy

This page is a translated version of the page Manual:Parser tests and the translation is 100% complete.
Části specifické pro Parsoid a možnosti pro Parsoid-specific jsou relevantní pouze pro (a) testovací soubory analyzátoru v úložišti Parsoid, (b) testovací soubory analyzátoru, které byly označeny jako kompatibilní s Parsoidem. Všimněte si také, že MW 1.38 a starší nepodporují spouštění testů Parsoid prostřednictvím testovacího programu parserTests.php v jádře MediaWiki. Tyto možnosti jsou však dostupné v testovacím programu Parsoid (bin/parserTests.php v úložišti Parsoid).

Testovací případ analyzátoru nejčastěji specifikuje wikitext (běžný vstup) a HTML (běžný výstup), aby se potvrdilo, že věci fungují podle očekávání. Skutečný výstup je porovnán s požadovaným výsledkem, a proto testovací případy analyzátoru (také známé jako testy analyzátoru) mohou být užitečné při zjišťování regresí.

Testovací případy analyzátoru jsou umístěny v adresáři tests/parser/. Rozšíření by měla umístit své testy do adresáře tests/parser/.

Mohou být spuštěny jak prostřednictvím testovací sady phpunit, tak pomocí samostatného skriptu parserTests.php. Selhání testu analyzátoru tedy vyvolá selhání Jenkinsova testu.

Syntaxe a provedení

Formát verze 2

Počínaje verzí 1.35 musí být testy analyzátoru ve formátu verze 2. Zadání verze 2 znamená, že testy jsou připraveny ke spuštění v "uklizeném" režimu (viz T249138).

Chcete-li označit, že vaše testy analyzátoru jsou spuštěny ve formátu verze 2, můžete použít sekci možností v horní části souboru (viz níže).

!! options
version=2
!! end

Případně jako zkratka musí být první řádek v testovacím souboru analyzátoru !! Version 2.

Povolení háčků

Abyste se ujistili, že se načte přípona tag1, přidejte na začátek souboru:

!! hooks
tag1
!! endhooks

Přidávání článků

Chcete-li vytvořit nový článek, syntaxe je:

!! article
Template:Simple template
!! text
A ''simple'' template.
!! endarticle

Rozložení testu analyzátoru

Kromě času testu má test daný počet sekcí:

  • povinné sekce: wikitext
  • volitelné sekce: options, config, wikitext/edited, html, html/php, html/parsoid, html/parsoid+standalone, html/parsoid+integrated

Části specifické pro starší analyzátor

Starší analyzátor očekává, že sekce wikitext a jedna z html nebo html/php budou vždy přítomny.

Části specifické pro Parsoid

Části wikitext/edited a různé části html/parsoid* jsou relevantní pouze při provádění testu s Parsoidem. Parsoid také umožňuje další konfiguraci s dalšími možnostmi specifickými pro test v sekci možností. Protože Parsoid podporuje spouštění testů v různých režimech, testovací režimy určují, jaké sekce se očekávají.

Režimy používané pro transformaci mezi wikitextem (wt) a html
od ↓ do → wt html
wt wt2wt wt2html
html html2wt html2html
  • U režimů wt2html a html2wt by kromě sekce wikitext měla být přítomna alespoň jedna ze sekcí html, html/parsoid, html/parsoid+standalone nebo html/parsoid+integrated.
  • Pro režim wt2wt postačuje pouze sekce wikitext (ale testovací uživatel aktuálně očekává, že bude přítomna část html).
  • Pro režim html2html stačí jedna ze sekcí html.
  • Pro režimy selser[1] by měly být přítomny sekce wikitext a alespoň jedna z html.
  • U manuálních režimů selser[1] by měly být přítomny oba wikitext a wikitext/edited.

Příklad

Syntaxe pro jednoduchý test je následující.

!! Version 2
!! test
Simple paragraph
!! config
wgRestrictDisplayTitle=false
!! wikitext
This is a simple paragraph.
!! html
<p>This is a simple paragraph.
</p>
!! end

Konfigurace sekce

Pokud tam zadáte konfigurační nastavení, ujistěte se, že mezi výrazy nejsou žádné mezery, protože mezery nejsou oříznuty testovacím programem.

Část možnosti

Každá možnost by měla přijít na vlastní linii.

  • disabled deaktivuje test.
  • php spustí test pouze s výchozím analyzátorem jádra, pokud nejsou přítomny sekce HTML specifické pro Parsoid. Název "php" je historickým pozůstatkem z doby, kdy byl Parsoid kódovou základnou Node.js.
  • parsoid=comma-separated-modes nebo parsoid={...} (objekt formátu JSON) povolí možnosti specifické pro Parsoid.
    • Příklad: parsoid=wt2html,wt2wt spustí tento test pouze v těchto 2 režimech. Ve výchozím nastavení je test spuštěn ve všech dostupných testovacích režimech pro daný test v sekcích wikitext a html. V běžném případě je to výchozí spuštění testu v režimech: wt2html, wt2wt, html2wt, html2html, selser[1].[2]
    • V objektu formátu JSON jsou aktuálně rozpoznány následující klíče modes, selser, changes, suppressErrors, normalizePhp,
      • modes - Toto je čárkami oddělený seznam režimů Parsoid ke spuštění
      • selser - Pokud je selser[1] jedním z testovacích režimů ve vlastnosti modes, tato vlastnost může volitelně specifikovat "noauto", což znamená, že automatické úpravy pro tento test nemají být generovány. Pokud ano, použijí se pouze ruční úpravy určené vlastností changes.
      • changes - Tento formát je popsán samostatně níže. Tato možnost bude muset být spárována s sekcí wikitext/edited v testu (viz níže), která specifikuje očekávaný výstup wikitextu, když je tento upravený HTML převeden (přes selser) na wikitext Parsoidem.

změní formát

Toto je pole jednotlivých změn, které se mají aplikovat na DOM HTML generovaného transformací wikitextu. Každý prvek pole obsahuje 3 nebo více prvků: (a) selektor jquery pro výběr uzlu DOM (b) typ změny, která se má použít na vybraný uzel, (c) příslušné hodnoty / obsah potřebný k použití zadané změny.

Stručně řečeno, každý prvek pole představuje volání metody jquery. Takže z [x,y,z...] se stane $(x)[y](z....) Takže ['fig', 'attr', 'width', '120'] je interpretováno jako $('fig').attr('width', '120')

Právě teď jsou rozpoznány následující metody jquery: after, addClass, append, attr, before, empty, html, remove, removeAttr, removeClass, text, wrap

Viz http://api.jquery.com/ pro dokumentaci těchto metod.

"contents" jako druhý argument volá metodu jquery .contents() na výsledky selektoru v prvním argumentu, což je dobrý způsob, jak se dostat k uzlům textu a komentářů.

Wikitextové sekce

  • wikitext - Očekává se, že to bude přítomno ve všech testech, které vyžadují zpracování wikitextu do HTML (nebo v testovacích režimech Parsoid html2wt a wt2wt, wikitext generovaný z HTML sekcí).
  • wikitext/edited - Tato část je relevantní pouze pro testovací běhy Parsoid. U testů, které poskytují ruční sadu změn, které mají být aplikovány na HTML generovaný ze sekce wikitext, je to výstup očekávaný, když Parsoid převede upravený HTML zpět na wikitext.

HTML sekce

  • html - Toto je původní výchozí výstupní sekce pro test analyzátoru. Parsoid používá tuto sekci pouze v případě, že není k dispozici žádná sekce specifická pro Parsoid (viz níže). Pokud Parsoid použije tuto sekci pro test, Parsoid výrazně normalizuje výstup Parsoid HTML před porovnáním s tímto HTML. Je to proto, že Parsoid generuje různé značky pro mnoho konstrukcí wikitextu. Normalizace zajišťuje, že sémantické atributy a vlastnosti (které nemají vliv na vykreslování) nezpůsobí falešná selhání testu.
  • html/php - Tuto sekci používá pouze starší analyzátor a Parsoid to ignoruje.
  • html/parsoid - Toto je výchozí sekce používaná Parsoidem a používá se pro samostatné i integrované testy, pokud pro tyto režimy nejsou k dispozici specializované sekce. Testovací program minimálně normalizuje výstup Parsoidu a tuto sekci, aby ověřil, zda test vyhovuje/nevyhovuje. Normalizace odstraňuje některé křiklavé atributy, aby se zabránilo nutnosti přidávat všechny tyto křiklavé výstupy do testů analyzátoru.
    • html/parsoid+standalone - Tato sekce Parsoid HTML se používá pouze v samostatných testovacích běhech Parsoid (implementována pouze v testovacím běhu Parsoid).
    • html/parsoid+integrated - Tato sekce Parsoid HTML se používá pouze v integrovaných testovacích běhech Parsoid (implementováno pouze v testovacím běhu jádra MediaWiki).

Metadata sections

Previously, metadata was pre- or post- pended to the html sections but now get a dedicated section of its own. Parser tests are in the process of being migrated to the new format and backwards compatibility in the test runner still exists for tests written in the old way.

  • metadata - Collects metadata requested by the variations options, including cat, ill, property=, extension=, showtitle, showflags, showtocdata, showindicators, and showmedia.
  • Similar to the html, the standard variants to the sections exist, as in metadata/php, metadata/parsoid, metadata/parsoid+standalone, etc.

Povolení testování proti Parsoid

Spuštění testů v souboru proti Parsoid můžete povolit pomocí možnosti parsoid-compatible v sekci možností souboru. Můžete zadat jednotlivé režimy nebo povolit všechny režimy vynecháním řetězce voleb. Například parsoid-compatible=wt2html,wt2wt umožňuje spouštění testů Parsoid v režimech wt2html a wt2wt. Ale parsoid-compatible umožňuje spouštění testů Parsoid ve všech režimech (wt2html, wt2wt, html2wt, html2html, selser).

Viz příklad níže.

!! options
version=2
parsoid-compatible=wt2html
!! end

extension.json & testy analyzátoru

U rozšíření, která umístí své testy do tests/parser/ a používají extension.json, se automaticky spustí testy analyzátoru. Pro rozšíření využívající starší systém načítání rozšíření mohou používat:

$wgParserTestFiles[] = __DIR__ . "/myParserTests.txt";

Spuštění testů s parserTests.php

Chcete-li spustit testy analyzátoru, přejděte do kořenového adresáře místní instalace MediaWiki a z příkazového řádku proveďte následující:

php tests/parser/parserTests.php
Před MediaWiki 1.28 byl tento soubor umístěn na tests/parserTests.php.

Chcete-li spustit testy pouze pro jeden soubor, použijte --file=... param. Zobrazit další parametry pomocí --help.

php tests/parser/parserTests.php --file=extensions/Kartographer/tests/parser/parserTests.txt

Možnosti testovacího běhu specifické pro Parsoid

Tyto možnosti nejsou dostupné u testovacího běhu analyzátoru jádra MediaWiki v MW 1.38 a dřívějších. Testy můžete spustit v režimu Parsoid pomocí možnosti --parsoid. Nejlepší a nejaktuálnější dokumentace všech dostupných možností je spustit

php tests/parser/parserTests.php --help

Nastavení globálních konfiguračních proměnných

Chcete-li nastavit výchozí globální proměnné pro všechny testy analyzátoru v rozšíření, použijte háček ParserTestGlobals .

V konkrétním testu nastavte konfigurační proměnné následovně:

!! test
Your Test Name
!! config
wgVariableName=true
!! wikitext
...

Související odkazy

Poznámky pod čarou

  1. 1.0 1.1 1.2 1.3 Režim selser je zkratka pro testovací režim, kde je sekce HTML upravována řadou automatizovaných způsobů, která je poté převedena na wikitext pomocí transformací Parsoid selektivní serializace (dále selser).
  2. TODO: Přidejte odkaz na stránku wiki, která vysvětluje různé transformace Parsoidu.