Manual:Parser tests/fa

This page is a translated version of the page Manual:Parser tests and the translation is 35% complete.
بخش‌های خاص Parsoid و گزینه‌های خاص پارسوئید فقط مربوط به (الف) فایل‌های تست تجزیه‌کننده در مخزن پارسوئید هستند (ب) فایل‌های تست تجزیه‌کننده که با پارسوئید سازگار علامت‌گذاری شده‌اند. همچنین توجه داشته باشید که MW 1.38 و نسخه های قبلی از اجرای تست های Parsoid از طریق برنامه آزمایشی parserTests.php در هسته MediaWiki پشتیبانی نمی کنند. اما، این گزینه‌ها در برنامه آزمایشی پارسوید (bin/parserTests.php در مخزن پارسوئید) موجود هستند.

Most commonly, parser test case specifies wikitext (commonly input) and HTML (commonly output), to confirm that things operate as expected. The actual output is compared with the desired result, and thus, the parser test cases (also known as parser tests) can be helpful at spotting regressions.

The parser test cases reside in the tests/parser/ directory. Extensions should place their tests in a tests/parser/ directory.

They can be run both through the phpunit test suite as well as the standalone parserTests.php script. So, a parser test failure will trigger a Jenkins test failure.

Syntax & execution

Version 2 format

از 1.35 شروع می شود، آزمون های تجزیه کننده باید در قالب نسخه 2 باشد. مشخص کردن نسخه 2 نشان می دهد که تست ها آماده اجرا در حالت "مرتب" هستند (T249138 را ببینید).

برای اینکه نشان دهید تست های تجزیه کننده شما در قالب نسخه 2 اجرا می شوند، می توانید از قسمت گزینه ها در بالای فایل استفاده کنید (به زیر مراجعه کنید).

!! options
!! end

متناوباً، به عنوان میانبر، اولین خط در فایل آزمایشی تجزیه کننده شما باید !! Version 2 باشد.

Enabling hooks

In order to be sure that the extension tag tag1 is loaded add at the beginning of the file:

!! hooks
!! endhooks

افزودن مقاله

برای ایجاد یک مقاله جدید، نحو عبارت است از:

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

طرح بندی یک آزمون تجزیه کننده

علاوه بر زمان آزمون، یک آزمون دارای تعدادی بخش معین است:

  • بخش های اجباری: wikitext
  • بخش های اختیاری: options، config، wikitext/edited، html، html/php، html/parsoid، html/parsoid+standalone، html/parsoid+integrated

بخش های مخصوص تجزیه کننده قدیمی

The legacy parser expects the wikitext and one of html or html/php sections to be always present.

بخش های مخصوص Parsoid

The wikitext/edited and the various html/parsoid* sections are only relevant when running a test with Parsoid.

Parsoid also allows additional configuration with additional test-specific options in the options section. Since Parsoid supports running tests in different modes, the test modes determine what sections are expected.

Modes used for transformation between wikitext (wt) and html
from ↓ into → wt html
wt wt2wt wt2html
html html2wt html2html
  • For wt2html and html2wt modes, in addition to the wikitext section, at least one of html, html/parsoid, html/parsoid+standalone, or html/parsoid+integrated sections should be present.
  • For wt2wt mode, just the wikitext section is sufficient (but the test runner currently expects some html section to be present).
  • For html2html mode, one of the html sections is sufficient.
  • For selser modes[1], the wikitext and at least one of the html sections should be present.
  • For manual selser modes[1], the wikitext and wikitext/edited should both be present.


Syntax is as follows for a simple test.

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

بخش پیکربندی

If you specify configuration settings there, make sure you don't have any whitespace between your expressions, as whitespace isn't trimmed by the test runner.

بخش گزینه ها

هر گزینه باید روی خط خودش بیاید.

  • disabled تست را غیرفعال می کند
  • php runs the test only with the core's default parser unless Parsoid-specific HTML sections are present. The "php" name is a historical remnant from when Parsoid was a Node.js codebase.
  • parsoid=comma-separated-modes or parsoid={...} (JSON format object) enable Parsoid-specific options.
    • Ex: parsoid=wt2html,wt2wt runs this test in only those 2 modes. By default, the test is run all available test modes for the test given the wikitext and html sections. In the common case, this defaults to running the test in modes: wt2html, wt2wt, html2wt, html2html, selser[1].[2]
    • In the JSON format object, the following keys are current recognized modes, selser, changes, suppressErrors, normalizePhp,
      • modes - This is a comma separated list of Parsoid modes to run
      • selser - If selser[1] is one of the test modes in the modes property, this property can optionally specify "noauto" to indicate automatic edits for this test should not be generated. If so, only manual edits as specified by the changes property will be applied.
      • changes - This format is described separately below. This option will need to be paired with a wikitext/edited section in the test (see below) that specifies the expected wikitext output when this edited HTML is converted (via selser) to wikitext by Parsoid.

changes format

This is an array of individual changes to apply to the DOM of the HTML generated by transforming wikitext. Each element of the array contains 3 or more elements: (a) jquery selector to select a DOM node (b) the type of change to apply to the selected node (c) the relevant values / content needed to apply the change specified.

More succinctly, each array element represents a jquery method call. So, [x,y,z...] becomes $(x)[y](z....) So, ['fig', 'attr', 'width', '120'] is interpreted as $('fig').attr('width', '120')

Right now, the following jquery methods are recognized: after, addClass, append, attr, before, empty, html, remove, removeAttr, removeClass, text, wrap

See for documentation of these methods.

"contents" as second argument calls the jquery .contents() method on the results of the selector in the first argument, which is a good way to get at the text and comment nodes.

بخش های ویکی متن

  • wikitext - انتظار می‌رود که این مورد در همه آزمایش‌ها وجود داشته باشد، زیرا ویکی‌تکست را برای پردازش به HTML مشخص می‌کند (یا در حالت‌های آزمایشی html2wt و wt2wt Parsoid، ویکی‌تکست برای تولید از بخش‌های HTML).
  • wikitext/edited - این بخش فقط در اجرای تست پارسوئید مرتبط است. برای آزمایش‌هایی که مجموعه‌ای دستی از تغییرات را برای اعمال بر HTML ایجاد شده از بخش wikitext ارائه می‌کنند، این خروجی مورد انتظار زمانی است که Parsoid HTML ویرایش شده را به ویکی‌تکست تبدیل می‌کند.

بخش های HTML

  • html - This is the original default output section for a parser test. Parsoid only uses this section if there isn't any Parsoid-specific section available (see below). If Parsoid uses this section for a test, Parsoid will heavily normalize Parsoid's HTML output before comparing against this HTML. This is because Parsoid generates different markup for a lot of wikitext constructs. The normalization ensures the semantic attributes and properties (that don't have a rendering impact) don't cause false test failures.
  • html/php - This section is only used by the legacy parser and Parsoid ignores this.
  • html/parsoid - This is the default section used by Parsoid and is used for both standalone and integrated tests if specialized sections aren't present for those modes. The test runner will minimally normalize Parsoid's output and this section to verify test pass/fails. The normalization strips some noisy attributes to prevent the need to add all this noisy output to parser tests.
    • html/parsoid+standalone - This Parsoid HTML section is only used in Parsoid standalone test runs (only implemented in Parsoid's test runner).
    • html/parsoid+integrated - This Parsoid HTML section is only used in Parsoid integrated test runs (only implemented in the MediaWiki core's test runner).

فعال کردن تست در برابر Parsoid

از طریق گزینه parsoid-compatible در قسمت file options می توانید تست های در حال اجرا در یک فایل را در مقابل توسط Parsoid فعال کنید. شما می توانید حالت های فردی را مشخص کنید یا با حذف رشته گزینه ها همه حالت ها را فعال کنید. برای مثال parsoid-compatible=wt2html,wt2wt اجرای تست های Parsoid را در حالت های wt2html و wt2wt فعال می کند. اما، parsoid-compatible اجرای تست های Parsoid را در همه حالت ها فعال می کند (wt2html, wt2wt, html2wt, html2html, selser).

نمونه زیر را ببینید.

!! options
!! end

extension.json و تست تجزیه کننده

Extensions that place their tests in tests/parser/ and are using extension.json will automatically have their parser tests run. For extensions using the legacy extension loading system, they can use:

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

اجرای تست با parserTests.php

To run the parser tests, go to the root directory of your local MediaWiki installation and execute the following from the command line:

php tests/parser/parserTests.php
Prior to MediaWiki 1.28, this file was located at tests/parserTests.php.

To run tests for just one file, use --file=... param. See more params with --help.

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

Parsoid-specific test runner options

این گزینه‌ها با اجراکننده آزمایش تجزیه‌کننده هسته MediaWiki در MW 1.38 و قبل از آن در دسترس نیستند. از طریق گزینه --parsoid می توانید تست‌ها را در حالت Parsoid اجرا کنید. بهترین و به روزترین مستندات در بین تمام گزینه های موجود، اجرا است

php tests/parser/parserTests.php --help

Setting global config variables

To set default global variables for all parser tests in an extension, use the ParserTestGlobals hook.

In a specific test, set the config variables as follows:

!! test
Your Test Name
!! config
!! wikitext

See also


  1. 1.0 1.1 1.2 1.3 The selser mode is an abbreviation for a test mode where the HTML section is edited in a number of automated ways which is then converted to wikitext using Parsoid's selective-serialization (selser henceforth) transformations.
  2. TODO: Add a link to a wikipage that explains Parsoid's various transformations.