Page MenuHomePhabricator

ParserIntegrationTest::testParse with data set "parserTests.txt: Media link with nested wikilinks" ('legacy parser')
Closed, ResolvedPublic

Description

See for example https://integration.wikimedia.org/ci/job/quibble-vendor-mysql-php72-noselenium-docker/138690/consoleFull

It appears to be deterministic, at least it's happened twice in a row for the same patch (https://gerrit.wikimedia.org/r/c/mediawiki/extensions/GrowthExperiments/+/767690).

The error did not appear when the patch was merged to master, but it is appearing for the backport to wmf.24

0:20:42.588 There were 121 failures:
00:20:42.588 
00:20:42.588 1) ParserIntegrationTest::testParse with data set "parserTests.txt: Media link with nested wikilinks" ('legacy parser')
00:20:42.592 Failed asserting that two strings are equal.
00:20:42.592 --- Expected
00:20:42.592 +++ Actual
00:20:42.592 @@ @@
00:20:42.592  '<p>[[Media:Foobar.jpg|<a href="/index.php?title=Test&amp;action=edit&amp;redlink=1" class="new" title="Test (page does not exist)">Test</a>]]\n
00:20:42.592 -[[Media:Foobar.jpg|<span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>]]\n
00:20:42.592 +[[Media:Foobar.jpg|<span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>]]\n
00:20:42.592  </p>'
00:20:42.592 
00:20:42.593 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.593 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.593 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.593 === Logs generated by test case
00:20:42.593 [wfDebug] [debug] ParserTestRunner::runTest: running Media link with nested wikilinks {"private":false}
00:20:42.593 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.593 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.593 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.593 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.593 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.593 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.593 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.593 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.593 ===
00:20:42.593 
00:20:42.593 2) ParserIntegrationTest::testParse with data set "parserTests.txt: Language converter glossary rules inside attributes (T119158)" ('legacy parser')
00:20:42.593 Failed asserting that two strings are equal.
00:20:42.593 --- Expected
00:20:42.593 +++ Actual
00:20:42.593 @@ @@
00:20:42.593  '<p class="mw-empty-elt">\n
00:20:42.593 -</p><p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/%D0%94%D0%B0%D1%82%D0%BE%D1%82%D0%B5%D0%BA%D0%B0:Foobar.jpg" class="mw-file-description"><img alt="&quot; onload=&quot;alert(1)&quot; data-foo=&quot;" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:42.593 +</p><p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/%D0%94%D0%B0%D1%82%D0%BE%D1%82%D0%B5%D0%BA%D0%B0:Foobar.jpg"><img alt="&quot; onload=&quot;alert(1)&quot; data-foo=&quot;" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:42.593  </p>'
00:20:42.593 
00:20:42.593 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.593 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.593 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.593 === Logs generated by test case
00:20:42.593 [wfDebug] [debug] ParserTestRunner::runTest: running Language converter glossary rules inside attributes (T119158) {"private":false}
00:20:42.593 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.593 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.593 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.593 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.593 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.593 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.593 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.593 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.593 ===
00:20:42.593 
00:20:42.593 3) ParserIntegrationTest::testParse with data set "parserTests.txt: Page status indicators: Torture test" ('legacy parser')
00:20:42.594 Failed asserting that two strings are equal.
00:20:42.594 --- Expected
00:20:42.594 +++ Actual
00:20:42.594 @@ @@
00:20:42.594  '01=hello world\n
00:20:42.594  02=<a href="/wiki/Main_Page" title="Main Page">Main Page</a>\n
00:20:42.594  03=<span typeof="mw:Image"><span><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/25px-Foobar.jpg" decoding="async" width="25" height="3" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/38px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg 2x" /></span></span>\n
00:20:42.594 -04=<span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/25px-Foobar.jpg" decoding="async" width="25" height="3" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/38px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg 2x" /></a></span>\n
00:20:42.594 +04=<span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/25px-Foobar.jpg" decoding="async" width="25" height="3" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/38px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg 2x" /></a></span>\n
00:20:42.594  05=<ul><li>foo</li>\n
00:20:42.594  <li>bar</li></ul>\n
00:20:42.594  06=foo\n
00:20:42.594 
00:20:42.594 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.594 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.594 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.594 === Logs generated by test case
00:20:42.594 [wfDebug] [debug] ParserTestRunner::runTest: running Page status indicators: Torture test {"private":false}
00:20:42.594 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.594 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/25px-Foobar.jpg {"private":false}
00:20:42.594 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/38px-Foobar.jpg {"private":false}
00:20:42.594 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/50px-Foobar.jpg {"private":false}
00:20:42.594 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/25px-Foobar.jpg {"private":false}
00:20:42.594 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/38px-Foobar.jpg {"private":false}
00:20:42.594 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/50px-Foobar.jpg {"private":false}
00:20:42.594 ===
00:20:42.594 
00:20:42.594 4) ParserIntegrationTest::testParse with data set "parserTests.txt: T35845: Headings become cursive in TOC when they contain an image" ('legacy parser')
00:20:42.594 Failed asserting that two strings are equal.
00:20:42.594 --- Expected
00:20:42.594 +++ Actual
00:20:42.594 @@ @@
00:20:42.594  </ul>\n
00:20:42.594  </div>\n
00:20:42.594  \n
00:20:42.594 -<h2><span class="mw-headline" id="Image">Image <span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Main_Page&amp;action=edit&amp;section=1" title="Edit section: Image">edit</a><span class="mw-editsection-bracket">]</span></span></h2>'
00:20:42.595 +<h2><span class="mw-headline" id="Image">Image <span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Main_Page&amp;action=edit&amp;section=1" title="Edit section: Image">edit</a><span class="mw-editsection-bracket">]</span></span></h2>'
00:20:42.595 
00:20:42.595 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.595 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.595 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.595 === Logs generated by test case
00:20:42.595 [wfDebug] [debug] ParserTestRunner::runTest: running T35845: Headings become cursive in TOC when they contain an image {"private":false}
00:20:42.595 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.595 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.595 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.595 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.595 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.595 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.595 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.595 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.595 ===
00:20:42.595 
00:20:42.595 5) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Simple image" ('legacy parser')
00:20:42.595 Failed asserting that two strings are equal.
00:20:42.595 --- Expected
00:20:42.595 +++ Actual
00:20:42.595 @@ @@
00:20:42.595 -'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:42.595 +'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:42.595  </p>'
00:20:42.595 
00:20:42.595 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.595 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.595 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.595 === Logs generated by test case
00:20:42.595 [wfDebug] [debug] ParserTestRunner::runTest: running Simple image {"private":false}
00:20:42.595 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.595 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.595 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.595 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.595 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.595 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.595 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.595 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.595 ===
00:20:42.595 
00:20:42.595 6) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Simple image (using File: namespace, now canonical)" ('legacy parser')
00:20:42.595 Failed asserting that two strings are equal.
00:20:42.595 --- Expected
00:20:42.595 +++ Actual
00:20:42.595 @@ @@
00:20:42.595 -'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:42.595 +'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:42.595  </p>'
00:20:42.595 
00:20:42.595 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.595 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.595 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.596 === Logs generated by test case
00:20:42.596 [wfDebug] [debug] ParserTestRunner::runTest: running Simple image (using File: namespace, now canonical) {"private":false}
00:20:42.596 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.596 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.596 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.596 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.596 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.596 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.596 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.596 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.596 ===
00:20:42.596 
00:20:42.596 7) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Right-aligned image" ('legacy parser')
00:20:42.596 Failed asserting that two strings are equal.
00:20:42.596 --- Expected
00:20:42.596 +++ Actual
00:20:42.596 @@ @@
00:20:42.596 -'<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption></figcaption></figure>'
00:20:42.596 +'<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption></figcaption></figure>'
00:20:42.596 
00:20:42.596 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.596 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.596 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.596 === Logs generated by test case
00:20:42.596 [wfDebug] [debug] ParserTestRunner::runTest: running Right-aligned image {"private":false}
00:20:42.596 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.596 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.596 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.596 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.596 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.596 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.596 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.596 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.596 ===
00:20:42.596 
00:20:42.596 8) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Image with caption" ('legacy parser')
00:20:42.596 Failed asserting that two strings are equal.
00:20:42.596 --- Expected
00:20:42.596 +++ Actual
00:20:42.596 @@ @@
00:20:42.596 -'<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description" title="Caption text"><img alt="Caption text" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption>Caption text</figcaption></figure>'
00:20:42.597 +'<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" title="Caption text"><img alt="Caption text" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption>Caption text</figcaption></figure>'
00:20:42.597 
00:20:42.597 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.597 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.597 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.597 === Logs generated by test case
00:20:42.597 [wfDebug] [debug] ParserTestRunner::runTest: running Image with caption {"private":false}
00:20:42.597 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.597 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.597 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.597 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.597 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.597 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.597 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.597 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.597 ===
00:20:42.597 
00:20:42.597 9) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Image with caption, T55312 #1" ('legacy parser')
00:20:42.597 Failed asserting that two strings are equal.
00:20:42.597 --- Expected
00:20:42.597 +++ Actual
00:20:42.597 @@ @@
00:20:42.597 -'<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description" title="Caption page stuff"><img alt="Caption page stuff" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption>Caption page stuff</figcaption></figure>'
00:20:42.597 +'<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" title="Caption page stuff"><img alt="Caption page stuff" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption>Caption page stuff</figcaption></figure>'
00:20:42.597 
00:20:42.597 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.597 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.597 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.597 === Logs generated by test case
00:20:42.597 [wfDebug] [debug] ParserTestRunner::runTest: running Image with caption, T55312 #1 {"private":false}
00:20:42.597 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.597 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.597 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.597 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.597 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.597 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.597 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.597 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.597 ===
00:20:42.597 
00:20:42.597 10) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Image with caption, T55312 #2" ('legacy parser')
00:20:42.597 Failed asserting that two strings are equal.
00:20:42.598 --- Expected
00:20:42.598 +++ Actual
00:20:42.598 @@ @@
00:20:42.598 -'<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description" title="Caption page="><img alt="Caption page=" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption>Caption page=</figcaption></figure>'
00:20:42.598 +'<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" title="Caption page="><img alt="Caption page=" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption>Caption page=</figcaption></figure>'
00:20:42.598 
00:20:42.598 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.598 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.598 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.598 === Logs generated by test case
00:20:42.598 [wfDebug] [debug] ParserTestRunner::runTest: running Image with caption, T55312 #2 {"private":false}
00:20:42.598 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.598 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.598 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.598 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.598 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.598 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.598 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.598 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.598 ===
00:20:42.598 
00:20:42.598 11) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Image with caption, T55312 #3" ('legacy parser')
00:20:42.598 Failed asserting that two strings are equal.
00:20:42.598 --- Expected
00:20:42.598 +++ Actual
00:20:42.598 @@ @@
00:20:42.598 -'<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description" title="Caption page=stuff"><img alt="Caption page=stuff" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption>Caption page=stuff</figcaption></figure>'
00:20:42.598 +'<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" title="Caption page=stuff"><img alt="Caption page=stuff" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption>Caption page=stuff</figcaption></figure>'
00:20:42.598 
00:20:42.598 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.598 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.598 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.598 === Logs generated by test case
00:20:42.598 [wfDebug] [debug] ParserTestRunner::runTest: running Image with caption, T55312 #3 {"private":false}
00:20:42.598 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.598 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.598 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.598 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.598 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.598 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.598 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.598 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.598 ===
00:20:42.598 
00:20:42.598 12) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Image caption with pipe entity" ('legacy parser')
00:20:42.598 Failed asserting that two strings are equal.
00:20:42.598 --- Expected
00:20:42.598 +++ Actual
00:20:42.598 @@ @@
00:20:42.599 -'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>one &#x7c; two</figcaption></figure>\n
00:20:42.599 -<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>one <i>two</i> &#x7c; three</figcaption></figure>'
00:20:42.599 +'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>one &#x7c; two</figcaption></figure>\n
00:20:42.599 +<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>one <i>two</i> &#x7c; three</figcaption></figure>'
00:20:42.599 
00:20:42.599 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.599 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.599 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.599 === Logs generated by test case
00:20:42.599 [wfDebug] [debug] ParserTestRunner::runTest: running Image caption with pipe entity {"private":false}
00:20:42.599 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.599 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:42.599 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/270px-Foobar.jpg {"private":false}
00:20:42.599 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/360px-Foobar.jpg {"private":false}
00:20:42.599 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:42.599 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/270px-Foobar.jpg {"private":false}
00:20:42.599 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/360px-Foobar.jpg {"private":false}
00:20:42.599 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.599 ===
00:20:42.599 
00:20:42.599 13) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Allow empty links in image captions (T62753)" ('legacy parser')
00:20:42.599 Failed asserting that two strings are equal.
00:20:42.599 --- Expected
00:20:42.599 +++ Actual
00:20:42.599 @@ @@
00:20:42.599 -'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" decoding="async" width="220" height="25" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a><figcaption>Caption <a href="/index.php?title=Link1&amp;action=edit&amp;redlink=1" class="new" title="Link1 (page does not exist)">Link1</a> [[]] <a href="/index.php?title=Link2&amp;action=edit&amp;redlink=1" class="new" title="Link2 (page does not exist)">Link2</a></figcaption></figure>'
00:20:42.599 +'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" decoding="async" width="220" height="25" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a><figcaption>Caption <a href="/index.php?title=Link1&amp;action=edit&amp;redlink=1" class="new" title="Link1 (page does not exist)">Link1</a> [[]] <a href="/index.php?title=Link2&amp;action=edit&amp;redlink=1" class="new" title="Link2 (page does not exist)">Link2</a></figcaption></figure>'
00:20:42.599 
00:20:42.599 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.600 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.600 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.600 === Logs generated by test case
00:20:42.600 [wfDebug] [debug] ParserTestRunner::runTest: running Allow empty links in image captions (T62753) {"private":false}
00:20:42.600 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.600 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/220px-Foobar.jpg {"private":false}
00:20:42.600 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/330px-Foobar.jpg {"private":false}
00:20:42.600 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/440px-Foobar.jpg {"private":false}
00:20:42.600 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.600 ===
00:20:42.600 
00:20:42.600 14) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Image with link trail" ('legacy parser')
00:20:42.600 Failed asserting that two strings are equal.
00:20:42.600 --- Expected
00:20:42.600 +++ Actual
00:20:42.600 @@ @@
00:20:42.600 -'<p>Linktrails should not work for images: <span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>s\n
00:20:42.600 +'<p>Linktrails should not work for images: <span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>s\n
00:20:42.600  </p>'
00:20:42.600 
00:20:42.600 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.600 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.600 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.600 === Logs generated by test case
00:20:42.600 [wfDebug] [debug] ParserTestRunner::runTest: running Image with link trail {"private":false}
00:20:42.600 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.600 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.600 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.600 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.600 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.600 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.600 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.600 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.600 ===
00:20:42.600 
00:20:42.600 15) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Image with empty attribute" ('legacy parser')
00:20:42.600 Failed asserting that two strings are equal.
00:20:42.600 --- Expected
00:20:42.600 +++ Actual
00:20:42.600 @@ @@
00:20:42.600 -'<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description" title="Caption text"><img alt="Caption text" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption>Caption text</figcaption></figure>'
00:20:42.601 +'<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" title="Caption text"><img alt="Caption text" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption>Caption text</figcaption></figure>'
00:20:42.601 
00:20:42.601 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.601 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.601 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.601 === Logs generated by test case
00:20:42.601 [wfDebug] [debug] ParserTestRunner::runTest: running Image with empty attribute {"private":false}
00:20:42.601 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.601 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.601 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.601 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.601 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.601 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.601 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.601 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.601 ===
00:20:42.601 
00:20:42.601 16) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: 1. Block image with individual attributes from templates" ('legacy parser')
00:20:42.601 Failed asserting that two strings are equal.
00:20:42.601 --- Expected
00:20:42.601 +++ Actual
00:20:42.601 @@ @@
00:20:42.601 -'<figure typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/137px-Foobar.jpg" decoding="async" width="137" height="16" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/206px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/274px-Foobar.jpg 2x" /></a><figcaption>This is a caption</figcaption></figure>'
00:20:42.601 +'<figure typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/137px-Foobar.jpg" decoding="async" width="137" height="16" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/206px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/274px-Foobar.jpg 2x" /></a><figcaption>This is a caption</figcaption></figure>'
00:20:42.601 
00:20:42.601 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.601 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.601 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.601 === Logs generated by test case
00:20:42.601 [wfDebug] [debug] ParserTestRunner::runTest: running 1. Block image with individual attributes from templates {"private":false}
00:20:42.601 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.601 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/137px-Foobar.jpg {"private":false}
00:20:42.601 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/206px-Foobar.jpg {"private":false}
00:20:42.601 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/274px-Foobar.jpg {"private":false}
00:20:42.601 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.601 ===
00:20:42.601 
00:20:42.601 17) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: 2. Block Image with individual attributes from templates" ('legacy parser')
00:20:42.601 Failed asserting that two strings are equal.
00:20:42.601 --- Expected
00:20:42.601 +++ Actual
00:20:42.601 @@ @@
00:20:42.602 -'<figure typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/137px-Foobar.jpg" decoding="async" width="137" height="16" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/206px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/274px-Foobar.jpg 2x" /></a><figcaption>This is a caption</figcaption></figure>'
00:20:42.602 +'<figure typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/137px-Foobar.jpg" decoding="async" width="137" height="16" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/206px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/274px-Foobar.jpg 2x" /></a><figcaption>This is a caption</figcaption></figure>'
00:20:42.602 
00:20:42.602 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.602 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.602 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.626 === Logs generated by test case
00:20:42.626 [wfDebug] [debug] ParserTestRunner::runTest: running 2. Block Image with individual attributes from templates {"private":false}
00:20:42.626 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.626 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/137px-Foobar.jpg {"private":false}
00:20:42.626 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/206px-Foobar.jpg {"private":false}
00:20:42.626 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/274px-Foobar.jpg {"private":false}
00:20:42.626 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.626 ===
00:20:42.626 
00:20:42.626 18) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: 3. Inline image with individual attributes from templates" ('legacy parser')
00:20:42.626 Failed asserting that two strings are equal.
00:20:42.626 --- Expected
00:20:42.626 +++ Actual
00:20:42.626 @@ @@
00:20:42.626 -'<p><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" decoding="async" width="50" height="6" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/75px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/100px-Foobar.jpg 2x" /></a></span>\n
00:20:42.627 +'<p><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" decoding="async" width="50" height="6" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/75px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/100px-Foobar.jpg 2x" /></a></span>\n
00:20:42.627  </p>'
00:20:42.627 
00:20:42.627 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.627 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.627 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.627 === Logs generated by test case
00:20:42.627 [wfDebug] [debug] ParserTestRunner::runTest: running 3. Inline image with individual attributes from templates {"private":false}
00:20:42.627 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.627 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/50px-Foobar.jpg {"private":false}
00:20:42.627 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/75px-Foobar.jpg {"private":false}
00:20:42.627 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/100px-Foobar.jpg {"private":false}
00:20:42.627 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.627 ===
00:20:42.627 
00:20:42.627 19) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Image with multiple attributes from the same template" ('legacy parser')
00:20:42.627 Failed asserting that two strings are equal.
00:20:42.627 --- Expected
00:20:42.627 +++ Actual
00:20:42.627 @@ @@
00:20:42.627 -'<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description" title="Caption text"><img alt="Caption text" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption>Caption text</figcaption></figure>'
00:20:42.627 +'<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" title="Caption text"><img alt="Caption text" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption>Caption text</figcaption></figure>'
00:20:42.627 
00:20:42.627 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.627 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.627 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.627 === Logs generated by test case
00:20:42.627 [wfDebug] [debug] ParserTestRunner::runTest: running Image with multiple attributes from the same template {"private":false}
00:20:42.627 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.627 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.627 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.627 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.627 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.627 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.627 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.627 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.627 ===
00:20:42.627 
00:20:42.627 20) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Image with link tails" ('legacy parser')
00:20:42.627 Failed asserting that two strings are equal.
00:20:42.627 --- Expected
00:20:42.627 +++ Actual
00:20:42.627 @@ @@
00:20:42.627 -'<p>123<span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>456\n
00:20:42.627 +'<p>123<span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>456\n
00:20:42.627  </p><p>\n
00:20:42.627 -123</p><figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption></figcaption></figure><p>456\n
00:20:42.628 -123</p><figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" decoding="async" width="220" height="25" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a><figcaption></figcaption></figure><p>456</p>'
00:20:42.628 +123</p><figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption></figcaption></figure><p>456\n
00:20:42.628 +123</p><figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" decoding="async" width="220" height="25" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a><figcaption></figcaption></figure><p>456</p>'
00:20:42.628 
00:20:42.628 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.628 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.628 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.628 === Logs generated by test case
00:20:42.628 [wfDebug] [debug] ParserTestRunner::runTest: running Image with link tails {"private":false}
00:20:42.628 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.628 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.628 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.628 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.628 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.628 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.628 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.628 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.628 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.628 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.628 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.628 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.628 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.628 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/220px-Foobar.jpg {"private":false}
00:20:42.628 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/330px-Foobar.jpg {"private":false}
00:20:42.628 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/440px-Foobar.jpg {"private":false}
00:20:42.628 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.628 ===
00:20:42.628 
00:20:42.628 21) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Image with multiple captions -- only last one is accepted" ('legacy parser')
00:20:42.629 Failed asserting that two strings are equal.
00:20:42.629 --- Expected
00:20:42.629 +++ Actual
00:20:42.629 @@ @@
00:20:42.629 -'<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description" title="Caption3 - accepted"><img alt="Caption3 - accepted" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption>Caption3 - accepted</figcaption></figure>'
00:20:42.629 +'<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" title="Caption3 - accepted"><img alt="Caption3 - accepted" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption>Caption3 - accepted</figcaption></figure>'
00:20:42.629 
00:20:42.629 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.629 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.629 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.629 === Logs generated by test case
00:20:42.629 [wfDebug] [debug] ParserTestRunner::runTest: running Image with multiple captions -- only last one is accepted {"private":false}
00:20:42.629 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.629 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.629 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.629 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.629 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.629 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.629 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.629 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.629 ===
00:20:42.629 
00:20:42.629 22) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Image with multiple widths -- use last" ('legacy parser')
00:20:42.629 Failed asserting that two strings are equal.
00:20:42.629 --- Expected
00:20:42.629 +++ Actual
00:20:42.629 @@ @@
00:20:42.629 -'<p><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description" title="caption"><img alt="caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg" decoding="async" width="300" height="34" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/450px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/600px-Foobar.jpg 2x" /></a></span>\n
00:20:42.629 +'<p><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" title="caption"><img alt="caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg" decoding="async" width="300" height="34" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/450px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/600px-Foobar.jpg 2x" /></a></span>\n
00:20:42.629  </p>'
00:20:42.629 
00:20:42.629 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.629 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.629 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.629 === Logs generated by test case
00:20:42.629 [wfDebug] [debug] ParserTestRunner::runTest: running Image with multiple widths -- use last {"private":false}
00:20:42.630 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.630 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/300px-Foobar.jpg {"private":false}
00:20:42.630 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/450px-Foobar.jpg {"private":false}
00:20:42.630 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/600px-Foobar.jpg {"private":false}
00:20:42.630 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.630 ===
00:20:42.630 
00:20:42.630 23) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Image with multiple alignments -- use first (T50664)" ('legacy parser')
00:20:42.630 Failed asserting that two strings are equal.
00:20:42.630 --- Expected
00:20:42.630 +++ Actual
00:20:42.630 @@ @@
00:20:42.630 -'<figure class="mw-default-size mw-halign-left" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" decoding="async" width="220" height="25" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a><figcaption>caption</figcaption></figure>\n
00:20:42.630 -<p><span class="mw-default-size mw-valign-middle" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description" title="caption"><img alt="caption" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:42.630 +'<figure class="mw-default-size mw-halign-left" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" decoding="async" width="220" height="25" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a><figcaption>caption</figcaption></figure>\n
00:20:42.630 +<p><span class="mw-default-size mw-valign-middle" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" title="caption"><img alt="caption" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:42.630  </p>'
00:20:42.630 
00:20:42.630 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.630 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.630 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.630 === Logs generated by test case
00:20:42.630 [wfDebug] [debug] ParserTestRunner::runTest: running Image with multiple alignments -- use first (T50664) {"private":false}
00:20:42.630 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.630 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/220px-Foobar.jpg {"private":false}
00:20:42.630 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/330px-Foobar.jpg {"private":false}
00:20:42.630 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/440px-Foobar.jpg {"private":false}
00:20:42.630 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.630 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.630 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.630 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.630 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.630 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.630 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.630 ===
00:20:42.630 
00:20:42.630 24) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Image with width attribute at different positions" ('legacy parser')
00:20:42.630 Failed asserting that two strings are equal.
00:20:42.631 --- Expected
00:20:42.631 +++ Actual
00:20:42.631 @@ @@
00:20:42.631 -'<figure class="mw-halign-right" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description" title="Caption"><img alt="Caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" decoding="async" width="200" height="23" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/400px-Foobar.jpg 2x" /></a><figcaption>Caption</figcaption></figure>\n
00:20:42.631 -<figure class="mw-halign-right" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description" title="Caption"><img alt="Caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" decoding="async" width="200" height="23" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/400px-Foobar.jpg 2x" /></a><figcaption>Caption</figcaption></figure>\n
00:20:42.631 -<figure class="mw-halign-right" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description" title="Caption"><img alt="Caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" decoding="async" width="200" height="23" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/400px-Foobar.jpg 2x" /></a><figcaption>Caption</figcaption></figure>'
00:20:42.631 +'<figure class="mw-halign-right" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" title="Caption"><img alt="Caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" decoding="async" width="200" height="23" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/400px-Foobar.jpg 2x" /></a><figcaption>Caption</figcaption></figure>\n
00:20:42.631 +<figure class="mw-halign-right" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" title="Caption"><img alt="Caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" decoding="async" width="200" height="23" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/400px-Foobar.jpg 2x" /></a><figcaption>Caption</figcaption></figure>\n
00:20:42.631 +<figure class="mw-halign-right" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" title="Caption"><img alt="Caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" decoding="async" width="200" height="23" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/400px-Foobar.jpg 2x" /></a><figcaption>Caption</figcaption></figure>'
00:20:42.631 
00:20:42.631 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.631 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.631 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.631 === Logs generated by test case
00:20:42.631 [wfDebug] [debug] ParserTestRunner::runTest: running Image with width attribute at different positions {"private":false}
00:20:42.631 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.631 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/200px-Foobar.jpg {"private":false}
00:20:42.631 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/300px-Foobar.jpg {"private":false}
00:20:42.631 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/400px-Foobar.jpg {"private":false}
00:20:42.631 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/200px-Foobar.jpg {"private":false}
00:20:42.631 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/300px-Foobar.jpg {"private":false}
00:20:42.631 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/400px-Foobar.jpg {"private":false}
00:20:42.631 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/200px-Foobar.jpg {"private":false}
00:20:42.631 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/300px-Foobar.jpg {"private":false}
00:20:42.631 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/400px-Foobar.jpg {"private":false}
00:20:42.631 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.632 ===
00:20:42.632 
00:20:42.632 25) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Image with size specified with pxpx (T15500, T53628)" ('legacy parser')
00:20:42.632 Failed asserting that two strings are equal.
00:20:42.632 --- Expected
00:20:42.632 +++ Actual
00:20:42.632 @@ @@
00:20:42.632 -'<p><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/20px-Foobar.jpg" decoding="async" width="20" height="2" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/30px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/40px-Foobar.jpg 2x" /></a></span>\n
00:20:42.632 -<span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/177px-Foobar.jpg" decoding="async" width="177" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/265px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/353px-Foobar.jpg 2x" /></a></span>\n
00:20:42.632 +'<p><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/20px-Foobar.jpg" decoding="async" width="20" height="2" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/30px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/40px-Foobar.jpg 2x" /></a></span>\n
00:20:42.632 +<span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/177px-Foobar.jpg" decoding="async" width="177" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/265px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/353px-Foobar.jpg 2x" /></a></span>\n
00:20:42.632  </p>'
00:20:42.632 
00:20:42.632 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.632 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.632 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.632 === Logs generated by test case
00:20:42.632 [wfDebug] [debug] ParserTestRunner::runTest: running Image with size specified with pxpx (T15500, T53628) {"private":false}
00:20:42.632 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.632 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/20px-Foobar.jpg {"private":false}
00:20:42.632 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/30px-Foobar.jpg {"private":false}
00:20:42.632 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/40px-Foobar.jpg {"private":false}
00:20:42.632 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/177px-Foobar.jpg {"private":false}
00:20:42.632 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/265px-Foobar.jpg {"private":false}
00:20:42.632 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/353px-Foobar.jpg {"private":false}
00:20:42.632 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.632 ===
00:20:42.632 
00:20:42.632 26) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Image with frame and link" ('legacy parser')
00:20:42.632 Failed asserting that two strings are equal.
00:20:42.632 --- Expected
00:20:42.632 +++ Actual
00:20:42.632 @@ @@
00:20:42.632 -'<figure class="mw-default-size mw-halign-left" typeof="mw:Image/Frame"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption>This is a test image <a href="/wiki/Main_Page" title="Main Page">Main Page</a></figcaption></figure>'
00:20:42.632 +'<figure class="mw-default-size mw-halign-left" typeof="mw:Image/Frame"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption>This is a test image <a href="/wiki/Main_Page" title="Main Page">Main Page</a></figcaption></figure>'
00:20:42.632 
00:20:42.632 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.632 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.632 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.632 === Logs generated by test case
00:20:42.632 [wfDebug] [debug] ParserTestRunner::runTest: running Image with frame and link {"private":false}
00:20:42.632 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.632 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.632 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.632 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.632 ===
00:20:42.633 
00:20:42.633 27) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Image with frame and link and explicit alt" ('legacy parser')
00:20:42.633 Failed asserting that two strings are equal.
00:20:42.633 --- Expected
00:20:42.633 +++ Actual
00:20:42.633 @@ @@
00:20:42.633 -'<figure class="mw-default-size mw-halign-left" typeof="mw:Image/Frame"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Altitude" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption>This is a test image <a href="/wiki/Main_Page" title="Main Page">Main Page</a></figcaption></figure>'
00:20:42.633 +'<figure class="mw-default-size mw-halign-left" typeof="mw:Image/Frame"><a href="/wiki/File:Foobar.jpg"><img alt="Altitude" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption>This is a test image <a href="/wiki/Main_Page" title="Main Page">Main Page</a></figcaption></figure>'
00:20:42.633 
00:20:42.633 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.633 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.633 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.633 === Logs generated by test case
00:20:42.633 [wfDebug] [debug] ParserTestRunner::runTest: running Image with frame and link and explicit alt {"private":false}
00:20:42.633 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.633 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.633 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.633 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.633 ===
00:20:42.633 
00:20:42.633 28) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Image with wiki markup in implicit alt" ('legacy parser')
00:20:42.633 Failed asserting that two strings are equal.
00:20:42.633 --- Expected
00:20:42.633 +++ Actual
00:20:42.633 @@ @@
00:20:42.633 -'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description" title="testing bold in alt"><img alt="testing bold in alt" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:42.633 -</p><p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="testing bold in alt" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:42.633 +'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" title="testing bold in alt"><img alt="testing bold in alt" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:42.633 +</p><p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="testing bold in alt" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:42.634  </p>'
00:20:42.634 
00:20:42.634 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.634 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.634 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.634 === Logs generated by test case
00:20:42.634 [wfDebug] [debug] ParserTestRunner::runTest: running Image with wiki markup in implicit alt {"private":false}
00:20:42.634 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.634 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.634 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.634 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.634 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.634 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.634 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.634 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.634 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.634 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.634 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.634 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.634 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.634 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.634 ===
00:20:42.634 
00:20:42.634 29) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Alt image option should handle most kinds of wikitext without barfing" ('legacy parser')
00:20:42.634 Failed asserting that two strings are equal.
00:20:42.634 --- Expected
00:20:42.634 +++ Actual
00:20:42.634 @@ @@
00:20:42.634 -'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="This is a link and a bold template." src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>This is the image caption</figcaption></figure>'
00:20:42.634 +'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="This is a link and a bold template." src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>This is the image caption</figcaption></figure>'
00:20:42.634 
00:20:42.634 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.634 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.634 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.634 === Logs generated by test case
00:20:42.634 [wfDebug] [debug] ParserTestRunner::runTest: running Alt image option should handle most kinds of wikitext without barfing {"private":false}
00:20:42.634 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.634 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:42.635 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/270px-Foobar.jpg {"private":false}
00:20:42.635 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/360px-Foobar.jpg {"private":false}
00:20:42.635 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.635 ===
00:20:42.635 
00:20:42.635 30) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Ampersand in alt attribute (T206940)" ('legacy parser')
00:20:42.635 Failed asserting that two strings are equal.
00:20:42.635 --- Expected
00:20:42.635 +++ Actual
00:20:42.635 @@ @@
00:20:42.635 -'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="&amp;amp;" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:42.635 +'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="&amp;amp;" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:42.635  </p>\n
00:20:42.635  <ul class="gallery mw-gallery-traditional">\n
00:20:42.635  		<li class="gallerybox" style="width: 155px">\n
00:20:42.635 -			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="&amp;amp;" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:42.635 +			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="&amp;amp;" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:42.635  			<div class="gallerytext">\n
00:20:42.635  			</div>\n
00:20:42.635  		</li>\n
00:20:42.635  </ul>'
00:20:42.635 
00:20:42.635 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.635 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.635 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.635 === Logs generated by test case
00:20:42.635 [wfDebug] [debug] ParserTestRunner::runTest: running Ampersand in alt attribute (T206940) {"private":false}
00:20:42.635 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.635 [wfDebug] [debug] ImageGalleryBase::factory called without context. Using RequestContext::getMain() {"private":false}
00:20:42.635 [wfDebug] [debug] ImageGallery::add Foobar.jpg {"private":false}
00:20:42.635 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/120px-Foobar.jpg {"private":false}
00:20:42.635 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:42.635 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/240px-Foobar.jpg {"private":false}
00:20:42.635 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.635 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.635 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.635 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.635 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.635 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.635 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.635 ===
00:20:42.635 
00:20:42.635 31) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Link with encoded pipe in alt option" ('legacy parser')
00:20:42.636 Failed asserting that two strings are equal.
00:20:42.636 --- Expected
00:20:42.636 +++ Actual
00:20:42.636 @@ @@
00:20:42.636 -'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description" title="caption"><img alt="http://testing.123?4=5|6" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:42.636 -</p><p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description" title="caption"><img alt="http://testing.123?4=5|6" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:42.636 +'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" title="caption"><img alt="http://testing.123?4=5|6" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:42.636 +</p><p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" title="caption"><img alt="http://testing.123?4=5|6" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:42.636  </p>\n
00:20:42.636  <ul class="gallery mw-gallery-traditional">\n
00:20:42.636  		<li class="gallerybox" style="width: 155px">\n
00:20:42.636 -			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="http://testing.123?4=5%7C6%7Ccaption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:42.636 +			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="http://testing.123?4=5%7C6%7Ccaption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:42.636  			<div class="gallerytext">\n
00:20:42.636  			</div>\n
00:20:42.636  		</li>\n
00:20:42.636  		<li class="gallerybox" style="width: 155px">\n
00:20:42.636 -			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="http://testing.123?4=5%7C6%7Ccaption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:42.636 +			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="http://testing.123?4=5%7C6%7Ccaption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:42.636  			<div class="gallerytext">\n
00:20:42.636  			</div>\n
00:20:42.636  		</li>\n
00:20:42.636  </ul>'
00:20:42.636 
00:20:42.636 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.636 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.636 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.636 === Logs generated by test case
00:20:42.636 [wfDebug] [debug] ParserTestRunner::runTest: running Link with encoded pipe in alt option {"private":false}
00:20:42.636 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.636 [wfDebug] [debug] ImageGalleryBase::factory called without context. Using RequestContext::getMain() {"private":false}
00:20:42.636 [wfDebug] [debug] ImageGallery::add Foobar.jpg {"private":false}
00:20:42.636 [wfDebug] [debug] ImageGallery::add Foobar.jpg {"private":false}
00:20:42.636 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/120px-Foobar.jpg {"private":false}
00:20:42.637 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:42.637 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/240px-Foobar.jpg {"private":false}
00:20:42.637 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/120px-Foobar.jpg {"private":false}
00:20:42.637 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:42.637 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/240px-Foobar.jpg {"private":false}
00:20:42.637 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.637 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.637 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.637 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.637 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.637 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.637 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.637 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.637 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.637 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.637 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.637 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.637 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.637 ===
00:20:42.637 
00:20:42.637 32) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Italics markup in alt attribute (T206940)" ('legacy parser')
00:20:42.637 Failed asserting that two strings are equal.
00:20:42.637 --- Expected
00:20:42.637 +++ Actual
00:20:42.637 @@ @@
00:20:42.637 -'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description" title="caption"><img alt="x" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:42.637 +'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" title="caption"><img alt="x" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:42.637  </p>\n
00:20:42.637  <ul class="gallery mw-gallery-traditional">\n
00:20:42.637  		<li class="gallerybox" style="width: 155px">\n
00:20:42.637 -			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="x" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:42.637 +			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="x" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:42.637  			<div class="gallerytext">\n
00:20:42.637  <p>caption\n
00:20:42.637  </p>\n
00:20:42.637 
00:20:42.637 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.637 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.637 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.637 === Logs generated by test case
00:20:42.637 [wfDebug] [debug] ParserTestRunner::runTest: running Italics markup in alt attribute (T206940) {"private":false}
00:20:42.637 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.637 [wfDebug] [debug] ImageGalleryBase::factory called without context. Using RequestContext::getMain() {"private":false}
00:20:42.638 [wfDebug] [debug] ImageGallery::add Foobar.jpg {"private":false}
00:20:42.638 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/120px-Foobar.jpg {"private":false}
00:20:42.638 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:42.638 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/240px-Foobar.jpg {"private":false}
00:20:42.638 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.638 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.638 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.638 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.638 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.638 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.638 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.638 ===
00:20:42.638 
00:20:42.638 33) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Nowiki markup in alt attribute (T206940)" ('legacy parser')
00:20:42.638 Failed asserting that two strings are equal.
00:20:42.638 --- Expected
00:20:42.638 +++ Actual
00:20:42.638 @@ @@
00:20:42.638 -'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description" title="caption"><img alt="&#39;&#39;x&#39;&#39;" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:42.638 +'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" title="caption"><img alt="&#39;&#39;x&#39;&#39;" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:42.638  </p>\n
00:20:42.638  <ul class="gallery mw-gallery-traditional">\n
00:20:42.638  		<li class="gallerybox" style="width: 155px">\n
00:20:42.638 -			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="&#39;&#39;x&#39;&#39;" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:42.638 +			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="&#39;&#39;x&#39;&#39;" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:42.638  			<div class="gallerytext">\n
00:20:42.638  <p>caption\n
00:20:42.638  </p>\n
00:20:42.638 
00:20:42.638 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.638 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.638 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.638 === Logs generated by test case
00:20:42.638 [wfDebug] [debug] ParserTestRunner::runTest: running Nowiki markup in alt attribute (T206940) {"private":false}
00:20:42.638 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.638 [wfDebug] [debug] ImageGalleryBase::factory called without context. Using RequestContext::getMain() {"private":false}
00:20:42.638 [wfDebug] [debug] ImageGallery::add Foobar.jpg {"private":false}
00:20:42.638 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/120px-Foobar.jpg {"private":false}
00:20:42.638 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:42.639 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/240px-Foobar.jpg {"private":false}
00:20:42.639 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.639 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.639 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.639 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.639 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.639 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.639 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.639 ===
00:20:42.639 
00:20:42.639 34) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Nowiki markup in alt attribute (edited html, no data-parsoid) (T206940)" ('legacy parser')
00:20:42.639 Failed asserting that two strings are equal.
00:20:42.639 --- Expected
00:20:42.639 +++ Actual
00:20:42.639 @@ @@
00:20:42.639 -'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description" title="caption"><img alt="&#39;&#39;x&#39;&#39;" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:42.639 +'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" title="caption"><img alt="&#39;&#39;x&#39;&#39;" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:42.639  </p>\n
00:20:42.639  <ul class="gallery mw-gallery-traditional">\n
00:20:42.639  		<li class="gallerybox" style="width: 155px">\n
00:20:42.639 -			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="&#39;&#39;x&#39;&#39;" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:42.639 +			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="&#39;&#39;x&#39;&#39;" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:42.639  			<div class="gallerytext">\n
00:20:42.639  <p>caption\n
00:20:42.639  </p>\n
00:20:42.639 
00:20:42.639 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.639 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.639 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.639 === Logs generated by test case
00:20:42.639 [wfDebug] [debug] ParserTestRunner::runTest: running Nowiki markup in alt attribute (edited html, no data-parsoid) (T206940) {"private":false}
00:20:42.639 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.639 [wfDebug] [debug] ImageGalleryBase::factory called without context. Using RequestContext::getMain() {"private":false}
00:20:42.639 [wfDebug] [debug] ImageGallery::add Foobar.jpg {"private":false}
00:20:42.639 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/120px-Foobar.jpg {"private":false}
00:20:42.639 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:42.639 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/240px-Foobar.jpg {"private":false}
00:20:42.640 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.640 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.640 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.640 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.640 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.640 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.640 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.640 ===
00:20:42.640 
00:20:42.640 35) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Image with heading and horizontal rule in caption" ('legacy parser')
00:20:42.640 Failed asserting that two strings are equal.
00:20:42.640 --- Expected
00:20:42.640 +++ Actual
00:20:42.640 @@ @@
00:20:42.640 -'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption><h3><span class="mw-headline" id="Testing">Testing</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: Testing">edit</a><span class="mw-editsection-bracket">]</span></span></h3> 123 <hr /></figcaption></figure>'
00:20:42.640 +'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption><h3><span class="mw-headline" id="Testing">Testing</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: Testing">edit</a><span class="mw-editsection-bracket">]</span></span></h3> 123 <hr /></figcaption></figure>'
00:20:42.640 
00:20:42.640 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.640 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.640 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.640 === Logs generated by test case
00:20:42.640 [wfDebug] [debug] ParserTestRunner::runTest: running Image with heading and horizontal rule in caption {"private":false}
00:20:42.640 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.640 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:42.640 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/270px-Foobar.jpg {"private":false}
00:20:42.640 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/360px-Foobar.jpg {"private":false}
00:20:42.640 ===
00:20:42.640 
00:20:42.640 36) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Image with 'frameless' first." ('legacy parser')
00:20:42.640 Failed asserting that two strings are equal.
00:20:42.640 --- Expected
00:20:42.640 +++ Actual
00:20:42.640 @@ @@
00:20:42.640 -'<p><span class="mw-default-size" typeof="mw:Image/Frameless"><a href="/wiki/File:Foobar.jpg" class="mw-file-description" title="caption"><img alt="caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a></span>\n
00:20:42.640 -</p><p><span class="mw-default-size" typeof="mw:Image/Frameless"><a href="/wiki/File:Foobar.jpg" class="mw-file-description" title="caption"><img alt="caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a></span>\n
00:20:42.640 -</p><p><span class="mw-default-size" typeof="mw:Image/Frameless"><a href="/wiki/File:Foobar.jpg" class="mw-file-description" title="caption"><img alt="caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a></span>\n
00:20:42.641 +'<p><span class="mw-default-size" typeof="mw:Image/Frameless"><a href="/wiki/File:Foobar.jpg" title="caption"><img alt="caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a></span>\n
00:20:42.641 +</p><p><span class="mw-default-size" typeof="mw:Image/Frameless"><a href="/wiki/File:Foobar.jpg" title="caption"><img alt="caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a></span>\n
00:20:42.641 +</p><p><span class="mw-default-size" typeof="mw:Image/Frameless"><a href="/wiki/File:Foobar.jpg" title="caption"><img alt="caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a></span>\n
00:20:42.641  </p>'
00:20:42.641 
00:20:42.641 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.641 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.641 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.641 === Logs generated by test case
00:20:42.641 [wfDebug] [debug] ParserTestRunner::runTest: running Image with 'frameless' first. {"private":false}
00:20:42.641 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.641 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:42.641 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/270px-Foobar.jpg {"private":false}
00:20:42.641 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/360px-Foobar.jpg {"private":false}
00:20:42.641 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:42.641 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/270px-Foobar.jpg {"private":false}
00:20:42.641 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/360px-Foobar.jpg {"private":false}
00:20:42.641 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:42.641 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/270px-Foobar.jpg {"private":false}
00:20:42.641 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/360px-Foobar.jpg {"private":false}
00:20:42.641 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.641 ===
00:20:42.641 
00:20:42.641 37) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Image with 'frame' first." ('legacy parser')
00:20:42.641 Failed asserting that two strings are equal.
00:20:42.641 --- Expected
00:20:42.641 +++ Actual
00:20:42.641 @@ @@
00:20:42.641 -'<figure class="mw-default-size" typeof="mw:Image/Frame"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption>caption</figcaption></figure>\n
00:20:42.641 -<figure class="mw-default-size" typeof="mw:Image/Frame"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption>caption</figcaption></figure>\n
00:20:42.641 -<figure class="mw-default-size" typeof="mw:Image/Frame"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption>caption</figcaption></figure>'
00:20:42.641 +'<figure class="mw-default-size" typeof="mw:Image/Frame"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption>caption</figcaption></figure>\n
00:20:42.641 +<figure class="mw-default-size" typeof="mw:Image/Frame"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption>caption</figcaption></figure>\n
00:20:42.641 +<figure class="mw-default-size" typeof="mw:Image/Frame"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption>caption</figcaption></figure>'
00:20:42.641 
00:20:42.641 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.641 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.641 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.642 === Logs generated by test case
00:20:42.642 [wfDebug] [debug] ParserTestRunner::runTest: running Image with 'frame' first. {"private":false}
00:20:42.642 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.642 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.642 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.642 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.642 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.642 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.642 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.642 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.642 ===
00:20:42.642 
00:20:42.642 38) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Image with 'thumb' first." ('legacy parser')
00:20:42.642 Failed asserting that two strings are equal.
00:20:42.642 --- Expected
00:20:42.642 +++ Actual
00:20:42.642 @@ @@
00:20:42.642 -'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>caption</figcaption></figure>\n
00:20:42.642 -<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>caption</figcaption></figure>\n
00:20:42.642 -<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>caption</figcaption></figure>'
00:20:42.642 +'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>caption</figcaption></figure>\n
00:20:42.642 +<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>caption</figcaption></figure>\n
00:20:42.642 +<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>caption</figcaption></figure>'
00:20:42.642 
00:20:42.642 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.642 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.642 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.642 === Logs generated by test case
00:20:42.642 [wfDebug] [debug] ParserTestRunner::runTest: running Image with 'thumb' first. {"private":false}
00:20:42.642 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.642 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:42.642 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/270px-Foobar.jpg {"private":false}
00:20:42.642 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/360px-Foobar.jpg {"private":false}
00:20:42.642 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:42.642 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/270px-Foobar.jpg {"private":false}
00:20:42.642 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/360px-Foobar.jpg {"private":false}
00:20:42.642 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:42.642 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/270px-Foobar.jpg {"private":false}
00:20:42.642 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/360px-Foobar.jpg {"private":false}
00:20:42.642 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.642 ===
00:20:42.642 
00:20:42.642 39) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Image: unspecified format and border enlarge" ('legacy parser')
00:20:42.642 Failed asserting that two strings are equal.
00:20:42.642 --- Expected
00:20:42.642 +++ Actual
00:20:42.642 @@ @@
00:20:42.642 -'<p><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="2000" height="227" /></a></span>\n
00:20:42.642 -</p><p><span class="mw-image-border" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="2000" height="227" /></a></span>\n
00:20:42.642 +'<p><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="2000" height="227" /></a></span>\n
00:20:42.642 +</p><p><span class="mw-image-border" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="2000" height="227" /></a></span>\n
00:20:42.642  </p>'
00:20:42.642 
00:20:42.642 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.642 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.642 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.642 === Logs generated by test case
00:20:42.642 [wfDebug] [debug] ParserTestRunner::runTest: running Image: unspecified format and border enlarge {"private":false}
00:20:42.642 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.642 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.642 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.642 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.642 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.642 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.642 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.642 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.642 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.642 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.643 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.643 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.643 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.643 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.643 ===
00:20:42.643 
00:20:42.643 40) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Image: "unspecified format" and border reduce" ('legacy parser')
00:20:42.643 Failed asserting that two strings are equal.
00:20:42.643 --- Expected
00:20:42.643 +++ Actual
00:20:42.643 @@ @@
00:20:42.643 -'<p><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/1000px-Foobar.jpg" decoding="async" width="1000" height="113" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/1500px-Foobar.jpg 1.5x, http://example.com/images/3/3a/Foobar.jpg 2x" /></a></span>\n
00:20:42.643 -</p><p><span class="mw-image-border" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/1000px-Foobar.jpg" decoding="async" width="1000" height="113" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/1500px-Foobar.jpg 1.5x, http://example.com/images/3/3a/Foobar.jpg 2x" /></a></span>\n
00:20:42.643 +'<p><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/1000px-Foobar.jpg" decoding="async" width="1000" height="113" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/1500px-Foobar.jpg 1.5x, http://example.com/images/3/3a/Foobar.jpg 2x" /></a></span>\n
00:20:42.643 +</p><p><span class="mw-image-border" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/1000px-Foobar.jpg" decoding="async" width="1000" height="113" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/1500px-Foobar.jpg 1.5x, http://example.com/images/3/3a/Foobar.jpg 2x" /></a></span>\n
00:20:42.643  </p>'
00:20:42.643 
00:20:42.643 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.643 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.643 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.643 === Logs generated by test case
00:20:42.643 [wfDebug] [debug] ParserTestRunner::runTest: running Image: "unspecified format" and border reduce {"private":false}
00:20:42.643 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.643 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1000px-Foobar.jpg {"private":false}
00:20:42.643 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1500px-Foobar.jpg {"private":false}
00:20:42.643 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.643 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.643 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1000px-Foobar.jpg {"private":false}
00:20:42.643 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1500px-Foobar.jpg {"private":false}
00:20:42.643 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.643 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.643 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.643 ===
00:20:42.643 
00:20:42.643 41) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Image: thumbs reduce" ('legacy parser')
00:20:42.643 Failed asserting that two strings are equal.
00:20:42.643 --- Expected
00:20:42.643 +++ Actual
00:20:42.643 @@ @@
00:20:42.643 -'<figure typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" decoding="async" width="50" height="6" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/75px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/100px-Foobar.jpg 2x" /></a><figcaption></figcaption></figure>'
00:20:42.643 +'<figure typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" decoding="async" width="50" height="6" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/75px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/100px-Foobar.jpg 2x" /></a><figcaption></figcaption></figure>'
00:20:42.643 
00:20:42.643 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.644 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.644 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.644 === Logs generated by test case
00:20:42.644 [wfDebug] [debug] ParserTestRunner::runTest: running Image: thumbs reduce {"private":false}
00:20:42.644 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.644 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/50px-Foobar.jpg {"private":false}
00:20:42.644 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/75px-Foobar.jpg {"private":false}
00:20:42.644 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/100px-Foobar.jpg {"private":false}
00:20:42.644 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.644 ===
00:20:42.644 
00:20:42.644 42) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Image: bitmap thumbs can't be enlarged past original size, but vector can." ('legacy parser')
00:20:42.644 Failed asserting that two strings are equal.
00:20:42.644 --- Expected
00:20:42.644 +++ Actual
00:20:42.644 @@ @@
00:20:42.644 -'<figure typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption></figcaption></figure>\n
00:20:42.644 -<figure typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.svg" class="mw-file-description"><img alt="Foobar.svg" src="http://example.com/images/thumb/f/ff/Foobar.svg/2000px-Foobar.svg.png" decoding="async" width="2000" height="1500" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/3000px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/4000px-Foobar.svg.png 2x" /></a><figcaption></figcaption></figure>'
00:20:42.644 +'<figure typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption></figcaption></figure>\n
00:20:42.644 +<figure typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.svg"><img alt="Foobar.svg" src="http://example.com/images/thumb/f/ff/Foobar.svg/2000px-Foobar.svg.png" decoding="async" width="2000" height="1500" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/3000px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/4000px-Foobar.svg.png 2x" /></a><figcaption></figcaption></figure>'
00:20:42.644 
00:20:42.644 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.644 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.644 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.644 === Logs generated by test case
00:20:42.644 [wfDebug] [debug] ParserTestRunner::runTest: running Image: bitmap thumbs can't be enlarged past original size, but vector can. {"private":false}
00:20:42.644 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.644 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.644 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.644 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.644 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.644 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.644 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.644 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/f/ff/Foobar.svg/2000px-Foobar.svg.png {"private":false}
00:20:42.644 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/f/ff/Foobar.svg/3000px-Foobar.svg.png {"private":false}
00:20:42.644 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/f/ff/Foobar.svg/4000px-Foobar.svg.png {"private":false}
00:20:42.644 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.644 ===
00:20:42.644 
00:20:42.644 43) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Image: frameless can reduce in size" ('legacy parser')
00:20:42.660 Failed asserting that two strings are equal.
00:20:42.660 --- Expected
00:20:42.660 +++ Actual
00:20:42.660 @@ @@
00:20:42.660 -'<p><span typeof="mw:Image/Frameless"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" decoding="async" width="50" height="6" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/75px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/100px-Foobar.jpg 2x" /></a></span>\n
00:20:42.660 +'<p><span typeof="mw:Image/Frameless"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" decoding="async" width="50" height="6" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/75px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/100px-Foobar.jpg 2x" /></a></span>\n
00:20:42.660  </p>'
00:20:42.660 
00:20:42.660 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.660 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.660 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.660 === Logs generated by test case
00:20:42.660 [wfDebug] [debug] ParserTestRunner::runTest: running Image: frameless can reduce in size {"private":false}
00:20:42.660 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.660 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/50px-Foobar.jpg {"private":false}
00:20:42.660 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/75px-Foobar.jpg {"private":false}
00:20:42.660 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/100px-Foobar.jpg {"private":false}
00:20:42.660 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.660 ===
00:20:42.660 
00:20:42.660 44) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Image: bitmap frameless can't be enlarged past original size, but vector can" ('legacy parser')
00:20:42.660 Failed asserting that two strings are equal.
00:20:42.660 --- Expected
00:20:42.660 +++ Actual
00:20:42.660 @@ @@
00:20:42.660 -'<p><span typeof="mw:Image/Frameless"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:42.660 -</p><p><span typeof="mw:Image/Frameless"><a href="/wiki/File:Foobar.svg" class="mw-file-description"><img alt="Foobar.svg" src="http://example.com/images/thumb/f/ff/Foobar.svg/2000px-Foobar.svg.png" decoding="async" width="2000" height="1500" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/3000px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/4000px-Foobar.svg.png 2x" /></a></span>\n
00:20:42.660 +'<p><span typeof="mw:Image/Frameless"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:42.660 +</p><p><span typeof="mw:Image/Frameless"><a href="/wiki/File:Foobar.svg"><img alt="Foobar.svg" src="http://example.com/images/thumb/f/ff/Foobar.svg/2000px-Foobar.svg.png" decoding="async" width="2000" height="1500" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/3000px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/4000px-Foobar.svg.png 2x" /></a></span>\n
00:20:42.660  </p>'
00:20:42.660 
00:20:42.660 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.660 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.660 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.660 === Logs generated by test case
00:20:42.660 [wfDebug] [debug] ParserTestRunner::runTest: running Image: bitmap frameless can't be enlarged past original size, but vector can {"private":false}
00:20:42.660 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.660 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.660 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.660 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.660 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.660 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.660 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.660 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/f/ff/Foobar.svg/2000px-Foobar.svg.png {"private":false}
00:20:42.661 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/f/ff/Foobar.svg/3000px-Foobar.svg.png {"private":false}
00:20:42.661 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/f/ff/Foobar.svg/4000px-Foobar.svg.png {"private":false}
00:20:42.661 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.661 ===
00:20:42.661 
00:20:42.661 45) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Image: framed images are always unscaled." ('legacy parser')
00:20:42.661 Failed asserting that two strings are equal.
00:20:42.661 --- Expected
00:20:42.661 +++ Actual
00:20:42.661 @@ @@
00:20:42.661 -'<figure class="mw-default-size" typeof="mw:Image/Frame"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption></figcaption></figure>\n
00:20:42.661 -<figure typeof="mw:Image/Frame"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption></figcaption></figure>\n
00:20:42.661 -<figure typeof="mw:Image/Frame"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption></figcaption></figure>\n
00:20:42.661 -<figure typeof="mw:Image/Frame"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption></figcaption></figure>'
00:20:42.661 +'<figure class="mw-default-size" typeof="mw:Image/Frame"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption></figcaption></figure>\n
00:20:42.661 +<figure typeof="mw:Image/Frame"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption></figcaption></figure>\n
00:20:42.661 +<figure typeof="mw:Image/Frame"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption></figcaption></figure>\n
00:20:42.661 +<figure typeof="mw:Image/Frame"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption></figcaption></figure>'
00:20:42.661 
00:20:42.661 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.661 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.661 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.661 === Logs generated by test case
00:20:42.661 [wfDebug] [debug] ParserTestRunner::runTest: running Image: framed images are always unscaled. {"private":false}
00:20:42.661 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.661 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.661 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.661 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.661 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.661 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.661 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.661 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.661 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.661 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.661 ===
00:20:42.662 
00:20:42.662 46) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Frameless image caption with a free URL" ('legacy parser')
00:20:42.662 Failed asserting that two strings are equal.
00:20:42.662 --- Expected
00:20:42.662 +++ Actual
00:20:42.662 @@ @@
00:20:42.662 -'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description" title="http://example.com"><img alt="http://example.com" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:42.662 +'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" title="http://example.com"><img alt="http://example.com" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:42.662  </p>'
00:20:42.662 
00:20:42.662 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.662 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.662 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.662 === Logs generated by test case
00:20:42.662 [wfDebug] [debug] ParserTestRunner::runTest: running Frameless image caption with a free URL {"private":false}
00:20:42.662 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.662 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.662 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.662 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.662 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.662 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.662 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.662 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.662 ===
00:20:42.662 
00:20:42.662 47) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Thumbnail image caption with a free URL" ('legacy parser')
00:20:42.662 Failed asserting that two strings are equal.
00:20:42.662 --- Expected
00:20:42.662 +++ Actual
00:20:42.662 @@ @@
00:20:42.662 -'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" decoding="async" width="220" height="25" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a><figcaption><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a></figcaption></figure>'
00:20:42.662 +'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" decoding="async" width="220" height="25" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a><figcaption><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a></figcaption></figure>'
00:20:42.662 
00:20:42.662 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.662 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.662 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.662 === Logs generated by test case
00:20:42.662 [wfDebug] [debug] ParserTestRunner::runTest: running Thumbnail image caption with a free URL {"private":false}
00:20:42.662 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.662 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/220px-Foobar.jpg {"private":false}
00:20:42.663 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/330px-Foobar.jpg {"private":false}
00:20:42.663 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/440px-Foobar.jpg {"private":false}
00:20:42.663 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.663 ===
00:20:42.663 
00:20:42.663 48) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Thumbnail image caption with a free URL and explicit alt" ('legacy parser')
00:20:42.663 Failed asserting that two strings are equal.
00:20:42.663 --- Expected
00:20:42.663 +++ Actual
00:20:42.663 @@ @@
00:20:42.663 -'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Alteration" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" decoding="async" width="220" height="25" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a><figcaption><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a></figcaption></figure>'
00:20:42.663 +'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="Alteration" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" decoding="async" width="220" height="25" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a><figcaption><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a></figcaption></figure>'
00:20:42.663 
00:20:42.663 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.663 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.663 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.663 === Logs generated by test case
00:20:42.663 [wfDebug] [debug] ParserTestRunner::runTest: running Thumbnail image caption with a free URL and explicit alt {"private":false}
00:20:42.663 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.663 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/220px-Foobar.jpg {"private":false}
00:20:42.663 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/330px-Foobar.jpg {"private":false}
00:20:42.663 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/440px-Foobar.jpg {"private":false}
00:20:42.663 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.663 ===
00:20:42.663 
00:20:42.663 49) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: SVG thumbnails with no language set" ('legacy parser')
00:20:42.664 Failed asserting that two strings are equal.
00:20:42.664 --- Expected
00:20:42.664 +++ Actual
00:20:42.664 @@ @@
00:20:42.664 -'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.svg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/180px-Foobar.svg.png" decoding="async" width="180" height="135" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/270px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/360px-Foobar.svg.png 2x" /></a><figcaption>caption</figcaption></figure>'
00:20:42.664 +'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.svg"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/180px-Foobar.svg.png" decoding="async" width="180" height="135" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/270px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/360px-Foobar.svg.png 2x" /></a><figcaption>caption</figcaption></figure>'
00:20:42.664 
00:20:42.664 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.664 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.664 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.664 === Logs generated by test case
00:20:42.664 [wfDebug] [debug] ParserTestRunner::runTest: running SVG thumbnails with no language set {"private":false}
00:20:42.664 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.664 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/f/ff/Foobar.svg/180px-Foobar.svg.png {"private":false}
00:20:42.664 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/f/ff/Foobar.svg/270px-Foobar.svg.png {"private":false}
00:20:42.664 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/f/ff/Foobar.svg/360px-Foobar.svg.png {"private":false}
00:20:42.664 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.664 ===
00:20:42.664 
00:20:42.664 50) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: SVG thumbnails with language de" ('legacy parser')
00:20:42.664 Failed asserting that two strings are equal.
00:20:42.664 --- Expected
00:20:42.664 +++ Actual
00:20:42.664 @@ @@
00:20:42.664 -'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/index.php?title=File:Foobar.svg&amp;lang=de" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/langde-180px-Foobar.svg.png" decoding="async" width="180" height="135" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/langde-270px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/langde-360px-Foobar.svg.png 2x" /></a><figcaption>caption</figcaption></figure>'
00:20:42.664 +'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/index.php?title=File:Foobar.svg&amp;lang=de"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/langde-180px-Foobar.svg.png" decoding="async" width="180" height="135" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/langde-270px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/langde-360px-Foobar.svg.png 2x" /></a><figcaption>caption</figcaption></figure>'
00:20:42.664 
00:20:42.664 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.664 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.664 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.664 === Logs generated by test case
00:20:42.664 [wfDebug] [debug] ParserTestRunner::runTest: running SVG thumbnails with language de {"private":false}
00:20:42.664 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.664 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/f/ff/Foobar.svg/langde-180px-Foobar.svg.png {"private":false}
00:20:42.664 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/f/ff/Foobar.svg/langde-270px-Foobar.svg.png {"private":false}
00:20:42.665 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/f/ff/Foobar.svg/langde-360px-Foobar.svg.png {"private":false}
00:20:42.665 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.665 ===
00:20:42.665 
00:20:42.665 51) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: SVG thumbnails with invalid language code" ('legacy parser')
00:20:42.665 Failed asserting that two strings are equal.
00:20:42.665 --- Expected
00:20:42.665 +++ Actual
00:20:42.665 @@ @@
00:20:42.665 -'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.svg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/180px-Foobar.svg.png" decoding="async" width="180" height="135" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/270px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/360px-Foobar.svg.png 2x" /></a><figcaption>lang=invalid:language:code</figcaption></figure>'
00:20:42.665 +'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.svg"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/180px-Foobar.svg.png" decoding="async" width="180" height="135" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/270px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/360px-Foobar.svg.png 2x" /></a><figcaption>lang=invalid:language:code</figcaption></figure>'
00:20:42.665 
00:20:42.665 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.665 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.665 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.665 === Logs generated by test case
00:20:42.665 [wfDebug] [debug] ParserTestRunner::runTest: running SVG thumbnails with invalid language code {"private":false}
00:20:42.665 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.665 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/f/ff/Foobar.svg/180px-Foobar.svg.png {"private":false}
00:20:42.665 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/f/ff/Foobar.svg/270px-Foobar.svg.png {"private":false}
00:20:42.665 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/f/ff/Foobar.svg/360px-Foobar.svg.png {"private":false}
00:20:42.665 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.665 ===
00:20:42.665 
00:20:42.665 52) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: SVG thumbnails in page language" ('legacy parser')
00:20:42.665 Failed asserting that two strings are equal.
00:20:42.665 --- Expected
00:20:42.665 +++ Actual
00:20:42.665 @@ @@
00:20:42.665 -'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Foobar.svg" class="mw-file-description"><img alt="Foobar.svg" src="http://example.com/images/thumb/f/ff/Foobar.svg/langru-240px-Foobar.svg.png" decoding="async" width="240" height="180" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/langru-360px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/langru-480px-Foobar.svg.png 2x" /></a></span> <span class="mw-default-size" typeof="mw:Image"><a href="/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Foobar.svg&amp;lang=en" class="mw-file-description"><img alt="Foobar.svg" src="http://example.com/images/thumb/f/ff/Foobar.svg/240px-Foobar.svg.png" decoding="async" width="240" height="180" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/360px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/480px-Foobar.svg.png 2x" /></a></span>\n
00:20:42.665 +'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Foobar.svg"><img alt="Foobar.svg" src="http://example.com/images/thumb/f/ff/Foobar.svg/langru-240px-Foobar.svg.png" decoding="async" width="240" height="180" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/langru-360px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/langru-480px-Foobar.svg.png 2x" /></a></span> <span class="mw-default-size" typeof="mw:Image"><a href="/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Foobar.svg&amp;lang=en"><img alt="Foobar.svg" src="http://example.com/images/thumb/f/ff/Foobar.svg/240px-Foobar.svg.png" decoding="async" width="240" height="180" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/360px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/480px-Foobar.svg.png 2x" /></a></span>\n
00:20:42.665  </p>'
00:20:42.665 
00:20:42.665 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.665 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.665 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.665 === Logs generated by test case
00:20:42.665 [wfDebug] [debug] ParserTestRunner::runTest: running SVG thumbnails in page language {"private":false}
00:20:42.665 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.665 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/f/ff/Foobar.svg/langru-240px-Foobar.svg.png {"private":false}
00:20:42.665 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/f/ff/Foobar.svg/langru-360px-Foobar.svg.png {"private":false}
00:20:42.666 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/f/ff/Foobar.svg/langru-480px-Foobar.svg.png {"private":false}
00:20:42.666 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/f/ff/Foobar.svg/240px-Foobar.svg.png {"private":false}
00:20:42.666 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/f/ff/Foobar.svg/360px-Foobar.svg.png {"private":false}
00:20:42.666 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/f/ff/Foobar.svg/480px-Foobar.svg.png {"private":false}
00:20:42.666 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.666 ===
00:20:42.666 
00:20:42.666 53) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: SVG thumbnails in page language not present in the file" ('legacy parser')
00:20:42.666 Failed asserting that two strings are equal.
00:20:42.666 --- Expected
00:20:42.666 +++ Actual
00:20:42.666 @@ @@
00:20:42.666 -'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/Datei:Foobar.svg" class="mw-file-description"><img alt="Foobar.svg" src="http://example.com/images/thumb/f/ff/Foobar.svg/240px-Foobar.svg.png" decoding="async" width="240" height="180" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/360px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/480px-Foobar.svg.png 2x" /></a></span> <span class="mw-default-size" typeof="mw:Image"><a href="/index.php?title=Datei:Foobar.svg&amp;lang=ru" class="mw-file-description"><img alt="Foobar.svg" src="http://example.com/images/thumb/f/ff/Foobar.svg/langru-240px-Foobar.svg.png" decoding="async" width="240" height="180" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/langru-360px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/langru-480px-Foobar.svg.png 2x" /></a></span>\n
00:20:42.666 +'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/Datei:Foobar.svg"><img alt="Foobar.svg" src="http://example.com/images/thumb/f/ff/Foobar.svg/240px-Foobar.svg.png" decoding="async" width="240" height="180" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/360px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/480px-Foobar.svg.png 2x" /></a></span> <span class="mw-default-size" typeof="mw:Image"><a href="/index.php?title=Datei:Foobar.svg&amp;lang=ru"><img alt="Foobar.svg" src="http://example.com/images/thumb/f/ff/Foobar.svg/langru-240px-Foobar.svg.png" decoding="async" width="240" height="180" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/langru-360px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/langru-480px-Foobar.svg.png 2x" /></a></span>\n
00:20:42.666  </p>'
00:20:42.666 
00:20:42.666 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.666 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.666 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.666 === Logs generated by test case
00:20:42.666 [wfDebug] [debug] ParserTestRunner::runTest: running SVG thumbnails in page language not present in the file {"private":false}
00:20:42.666 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.666 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/f/ff/Foobar.svg/240px-Foobar.svg.png {"private":false}
00:20:42.666 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/f/ff/Foobar.svg/360px-Foobar.svg.png {"private":false}
00:20:42.666 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/f/ff/Foobar.svg/480px-Foobar.svg.png {"private":false}
00:20:42.666 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/f/ff/Foobar.svg/langru-240px-Foobar.svg.png {"private":false}
00:20:42.666 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/f/ff/Foobar.svg/langru-360px-Foobar.svg.png {"private":false}
00:20:42.666 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/f/ff/Foobar.svg/langru-480px-Foobar.svg.png {"private":false}
00:20:42.666 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.666 ===
00:20:42.666 
00:20:42.666 54) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: T3887: A ISBN with a thumbnail" ('legacy parser')
00:20:42.666 Failed asserting that two strings are equal.
00:20:42.666 --- Expected
00:20:42.666 +++ Actual
00:20:42.667 @@ @@
00:20:42.667 -'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption><a href="/wiki/Special:BookSources/1235467890" class="internal mw-magiclink-isbn">ISBN 1235467890</a></figcaption></figure>'
00:20:42.667 +'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption><a href="/wiki/Special:BookSources/1235467890" class="internal mw-magiclink-isbn">ISBN 1235467890</a></figcaption></figure>'
00:20:42.667 
00:20:42.667 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.667 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.667 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.667 === Logs generated by test case
00:20:42.667 [wfDebug] [debug] ParserTestRunner::runTest: running T3887: A ISBN with a thumbnail {"private":false}
00:20:42.667 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.667 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:42.667 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/270px-Foobar.jpg {"private":false}
00:20:42.667 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/360px-Foobar.jpg {"private":false}
00:20:42.667 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.667 ===
00:20:42.667 
00:20:42.667 55) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: T3887: A RFC with a thumbnail" ('legacy parser')
00:20:42.667 Failed asserting that two strings are equal.
00:20:42.667 --- Expected
00:20:42.667 +++ Actual
00:20:42.667 @@ @@
00:20:42.667 -'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>This is <a class="external mw-magiclink-rfc" rel="nofollow" href="https://tools.ietf.org/html/rfc12354">RFC 12354</a></figcaption></figure>'
00:20:42.667 +'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>This is <a class="external mw-magiclink-rfc" rel="nofollow" href="https://tools.ietf.org/html/rfc12354">RFC 12354</a></figcaption></figure>'
00:20:42.667 
00:20:42.667 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.667 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.667 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.667 === Logs generated by test case
00:20:42.667 [wfDebug] [debug] ParserTestRunner::runTest: running T3887: A RFC with a thumbnail {"private":false}
00:20:42.667 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.667 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:42.667 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/270px-Foobar.jpg {"private":false}
00:20:42.668 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/360px-Foobar.jpg {"private":false}
00:20:42.668 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.668 ===
00:20:42.668 
00:20:42.668 56) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: T3887: A mailto link with a thumbnail" ('legacy parser')
00:20:42.668 Failed asserting that two strings are equal.
00:20:42.668 --- Expected
00:20:42.668 +++ Actual
00:20:42.668 @@ @@
00:20:42.668 -'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>Please <a rel="nofollow" class="external free" href="mailto:nobody@example.com">mailto:nobody@example.com</a></figcaption></figure>'
00:20:42.668 +'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>Please <a rel="nofollow" class="external free" href="mailto:nobody@example.com">mailto:nobody@example.com</a></figcaption></figure>'
00:20:42.668 
00:20:42.668 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.668 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.668 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.668 === Logs generated by test case
00:20:42.668 [wfDebug] [debug] ParserTestRunner::runTest: running T3887: A mailto link with a thumbnail {"private":false}
00:20:42.668 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.668 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:42.668 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/270px-Foobar.jpg {"private":false}
00:20:42.668 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/360px-Foobar.jpg {"private":false}
00:20:42.668 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.668 ===
00:20:42.668 
00:20:42.668 57) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: T2648: Frameless image caption with a link" ('legacy parser')
00:20:42.668 Failed asserting that two strings are equal.
00:20:42.668 --- Expected
00:20:42.668 +++ Actual
00:20:42.668 @@ @@
00:20:42.668 -'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description" title="text with a link in it"><img alt="text with a link in it" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:42.668 +'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" title="text with a link in it"><img alt="text with a link in it" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:42.668  </p>'
00:20:42.668 
00:20:42.668 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.668 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.669 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.669 === Logs generated by test case
00:20:42.669 [wfDebug] [debug] ParserTestRunner::runTest: running T2648: Frameless image caption with a link {"private":false}
00:20:42.669 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.669 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.669 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.669 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.669 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.669 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.669 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.669 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.669 ===
00:20:42.669 
00:20:42.669 58) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: T2648: Frameless image caption with a link (suffix)" ('legacy parser')
00:20:42.669 Failed asserting that two strings are equal.
00:20:42.669 --- Expected
00:20:42.669 +++ Actual
00:20:42.669 @@ @@
00:20:42.669 -'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description" title="text with a linkfoo in it"><img alt="text with a linkfoo in it" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:42.669 +'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" title="text with a linkfoo in it"><img alt="text with a linkfoo in it" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:42.669  </p>'
00:20:42.669 
00:20:42.669 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.669 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.669 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.669 === Logs generated by test case
00:20:42.669 [wfDebug] [debug] ParserTestRunner::runTest: running T2648: Frameless image caption with a link (suffix) {"private":false}
00:20:42.669 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.669 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.669 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.669 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.669 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.669 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.669 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.669 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.669 ===
00:20:42.669 
00:20:42.669 59) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: T2648: Frameless image caption with an interwiki link" ('legacy parser')
00:20:42.669 Failed asserting that two strings are equal.
00:20:42.669 --- Expected
00:20:42.669 +++ Actual
00:20:42.669 @@ @@
00:20:42.669 -'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description" title="text with a MeatBall:Link in it"><img alt="text with a MeatBall:Link in it" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:42.669 +'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" title="text with a MeatBall:Link in it"><img alt="text with a MeatBall:Link in it" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:42.669  </p>'
00:20:42.669 
00:20:42.669 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.669 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.670 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.670 === Logs generated by test case
00:20:42.670 [wfDebug] [debug] ParserTestRunner::runTest: running T2648: Frameless image caption with an interwiki link {"private":false}
00:20:42.670 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.670 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.670 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.670 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.670 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.670 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.670 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.670 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.670 ===
00:20:42.670 
00:20:42.670 60) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: T2648: Frameless image caption with a piped interwiki link" ('legacy parser')
00:20:42.670 Failed asserting that two strings are equal.
00:20:42.670 --- Expected
00:20:42.670 +++ Actual
00:20:42.670 @@ @@
00:20:42.670 -'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description" title="text with a link in it"><img alt="text with a link in it" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:42.670 +'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" title="text with a link in it"><img alt="text with a link in it" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:42.670  </p>'
00:20:42.670 
00:20:42.670 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:42.670 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.670 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:42.670 === Logs generated by test case
00:20:42.670 [wfDebug] [debug] ParserTestRunner::runTest: running T2648: Frameless image caption with a piped interwiki link {"private":false}
00:20:42.670 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:42.670 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.670 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.670 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.670 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.670 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:42.670 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:42.670 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:42.670 ===
00:20:42.670 
00:20:42.670 61) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Escape HTML special chars in image alt text" ('legacy parser')
00:20:43.427 Failed asserting that two strings are equal.
00:20:43.427 --- Expected
00:20:43.427 +++ Actual
00:20:43.427 @@ @@
00:20:43.428 -'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description" title="&amp; &lt; &gt; &quot;"><img alt="&amp; &lt; &gt; &quot;" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:43.428 +'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" title="&amp; &lt; &gt; &quot;"><img alt="&amp; &lt; &gt; &quot;" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:43.428  </p>'
00:20:43.428 
00:20:43.428 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.428 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.428 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.428 === Logs generated by test case
00:20:43.428 [wfDebug] [debug] ParserTestRunner::runTest: running Escape HTML special chars in image alt text {"private":false}
00:20:43.428 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.428 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.428 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.428 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.428 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.428 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.428 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.428 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.428 ===
00:20:43.428 
00:20:43.428 62) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Escape HTML special chars in image alt text with LanguageConverter" ('legacy parser')
00:20:43.428 Failed asserting that two strings are equal.
00:20:43.428 --- Expected
00:20:43.428 +++ Actual
00:20:43.428 @@ @@
00:20:43.428 -'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description" title="&amp; &lt; &gt; &quot;"><img alt="&amp; &lt; &gt; &quot;" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:43.428 +'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" title="&amp; &lt; &gt; &quot;"><img alt="&amp; &lt; &gt; &quot;" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:43.428  </p>'
00:20:43.428 
00:20:43.428 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.428 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.428 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.428 === Logs generated by test case
00:20:43.428 [wfDebug] [debug] ParserTestRunner::runTest: running Escape HTML special chars in image alt text with LanguageConverter {"private":false}
00:20:43.428 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.428 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.428 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.428 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.428 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.428 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.428 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.428 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.428 ===
00:20:43.428 
00:20:43.428 63) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: T2499: Alt text should have &#1234;, not &amp;1234;" ('legacy parser')
00:20:43.429 Failed asserting that two strings are equal.
00:20:43.429 --- Expected
00:20:43.429 +++ Actual
00:20:43.429 @@ @@
00:20:43.429 -'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description" title="♀"><img alt="♀" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:43.429 +'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" title="♀"><img alt="♀" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:43.429  </p>'
00:20:43.429 
00:20:43.429 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.429 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.429 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.429 === Logs generated by test case
00:20:43.429 [wfDebug] [debug] ParserTestRunner::runTest: running T2499: Alt text should have &#1234;, not &amp;1234; {"private":false}
00:20:43.429 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.429 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.429 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.429 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.429 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.429 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.429 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.429 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.429 ===
00:20:43.429 
00:20:43.429 64) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Image caption containing another image" ('legacy parser')
00:20:43.429 Failed asserting that two strings are equal.
00:20:43.429 --- Expected
00:20:43.429 +++ Actual
00:20:43.429 @@ @@
00:20:43.429 -'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>This is a caption with another <span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Thumb.png" class="mw-file-description" title="image"><img alt="image" src="http://example.com/images/e/ea/Thumb.png" decoding="async" width="135" height="135" /></a></span> inside it!</figcaption></figure>'
00:20:43.429 +'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>This is a caption with another <span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Thumb.png" title="image"><img alt="image" src="http://example.com/images/e/ea/Thumb.png" decoding="async" width="135" height="135" /></a></span> inside it!</figcaption></figure>'
00:20:43.429 
00:20:43.429 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.429 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.429 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.429 === Logs generated by test case
00:20:43.429 [wfDebug] [debug] ParserTestRunner::runTest: running Image caption containing another image {"private":false}
00:20:43.429 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.429 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/e/ea/Thumb.png/135px-Thumb.png {"private":false}
00:20:43.429 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.429 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/e/ea/Thumb.png/135px-Thumb.png {"private":false}
00:20:43.429 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.430 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/e/ea/Thumb.png/135px-Thumb.png {"private":false}
00:20:43.430 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.430 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:43.430 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/270px-Foobar.jpg {"private":false}
00:20:43.430 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/360px-Foobar.jpg {"private":false}
00:20:43.430 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.430 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.430 ===
00:20:43.430 
00:20:43.430 65) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Image: caption containing a newline" ('legacy parser')
00:20:43.430 Failed asserting that two strings are equal.
00:20:43.430 --- Expected
00:20:43.430 +++ Actual
00:20:43.430 @@ @@
00:20:43.430 -'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description" title="This *is some text"><img alt="This *is some text" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:43.430 +'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" title="This *is some text"><img alt="This *is some text" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:43.430  </p>'
00:20:43.430 
00:20:43.430 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.430 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.430 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.430 === Logs generated by test case
00:20:43.430 [wfDebug] [debug] ParserTestRunner::runTest: running Image: caption containing a newline {"private":false}
00:20:43.430 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.430 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.430 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.430 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.430 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.430 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.430 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.430 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.430 ===
00:20:43.430 
00:20:43.430 66) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Image: caption containing leading space" ('legacy parser')
00:20:43.430 Failed asserting that two strings are equal.
00:20:43.430 --- Expected
00:20:43.430 +++ Actual
00:20:43.430 @@ @@
00:20:43.430 -'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>bar</figcaption></figure>'
00:20:43.431 +'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>bar</figcaption></figure>'
00:20:43.431 
00:20:43.431 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.431 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.431 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.431 === Logs generated by test case
00:20:43.431 [wfDebug] [debug] ParserTestRunner::runTest: running Image: caption containing leading space {"private":false}
00:20:43.431 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.431 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:43.431 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/270px-Foobar.jpg {"private":false}
00:20:43.431 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/360px-Foobar.jpg {"private":false}
00:20:43.431 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.431 ===
00:20:43.431 
00:20:43.431 67) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Image: caption containing a table" ('legacy parser')
00:20:43.431 Failed asserting that two strings are equal.
00:20:43.431 --- Expected
00:20:43.431 +++ Actual
00:20:43.431 @@ @@
00:20:43.431 -'<figure typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" decoding="async" width="200" height="23" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/400px-Foobar.jpg 2x" /></a><figcaption>This is an example image thumbnail caption with a table <table> <tbody><tr> <th>Foo</th> <th>Bar </th></tr> <tr> <td>Foo1</td> <td>Bar1 </td></tr></tbody></table> and some more text.</figcaption></figure>'
00:20:43.431 +'<figure typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" decoding="async" width="200" height="23" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/400px-Foobar.jpg 2x" /></a><figcaption>This is an example image thumbnail caption with a table <table> <tbody><tr> <th>Foo</th> <th>Bar </th></tr> <tr> <td>Foo1</td> <td>Bar1 </td></tr></tbody></table> and some more text.</figcaption></figure>'
00:20:43.431 
00:20:43.431 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.431 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.431 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.431 === Logs generated by test case
00:20:43.431 [wfDebug] [debug] ParserTestRunner::runTest: running Image: caption containing a table {"private":false}
00:20:43.431 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.431 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/200px-Foobar.jpg {"private":false}
00:20:43.431 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/300px-Foobar.jpg {"private":false}
00:20:43.431 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/400px-Foobar.jpg {"private":false}
00:20:43.431 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.431 ===
00:20:43.431 
00:20:43.431 68) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: T5090: External links other than http: in image captions" ('legacy parser')
00:20:43.431 Failed asserting that two strings are equal.
00:20:43.431 --- Expected
00:20:43.431 +++ Actual
00:20:43.431 @@ @@
00:20:43.431 -'<figure typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" decoding="async" width="200" height="23" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/400px-Foobar.jpg 2x" /></a><figcaption>This caption has <a rel="nofollow" class="external text" href="irc://example.net">irc</a> and <a rel="nofollow" class="external text" href="https://example.com">Secure</a> ext links in it.</figcaption></figure>'
00:20:43.431 +'<figure typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" decoding="async" width="200" height="23" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/400px-Foobar.jpg 2x" /></a><figcaption>This caption has <a rel="nofollow" class="external text" href="irc://example.net">irc</a> and <a rel="nofollow" class="external text" href="https://example.com">Secure</a> ext links in it.</figcaption></figure>'
00:20:43.432 
00:20:43.432 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.432 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.432 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.432 === Logs generated by test case
00:20:43.432 [wfDebug] [debug] ParserTestRunner::runTest: running T5090: External links other than http: in image captions {"private":false}
00:20:43.432 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.432 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/200px-Foobar.jpg {"private":false}
00:20:43.432 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/300px-Foobar.jpg {"private":false}
00:20:43.432 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/400px-Foobar.jpg {"private":false}
00:20:43.432 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.432 ===
00:20:43.432 
00:20:43.432 69) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Custom class" ('legacy parser')
00:20:43.461 Failed asserting that two strings are equal.
00:20:43.461 --- Expected
00:20:43.461 +++ Actual
00:20:43.461 @@ @@
00:20:43.462 -'<p><span class="mw-default-size b" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description" title="a"><img alt="a" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:43.462 +'<p><span class="mw-default-size b" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" title="a"><img alt="a" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:43.462  </p>'
00:20:43.462 
00:20:43.462 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.462 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.462 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.462 === Logs generated by test case
00:20:43.462 [wfDebug] [debug] ParserTestRunner::runTest: running Custom class {"private":false}
00:20:43.462 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.462 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.462 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.462 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.462 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.462 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.462 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.462 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.462 ===
00:20:43.462 
00:20:43.462 70) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: "border", "frameless" and "class" attributes on an image." ('legacy parser')
00:20:43.462 Failed asserting that two strings are equal.
00:20:43.462 --- Expected
00:20:43.462 +++ Actual
00:20:43.462 @@ @@
00:20:43.462 -'<p><span class="mw-default-size mw-image-border extra" typeof="mw:Image/Frameless"><a href="/wiki/File:Foobar.jpg" class="mw-file-description" title="caption"><img alt="caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" decoding="async" width="220" height="25" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a></span>\n
00:20:43.462 +'<p><span class="mw-default-size mw-image-border extra" typeof="mw:Image/Frameless"><a href="/wiki/File:Foobar.jpg" title="caption"><img alt="caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" decoding="async" width="220" height="25" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a></span>\n
00:20:43.462  </p>'
00:20:43.462 
00:20:43.462 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.462 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.462 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.462 === Logs generated by test case
00:20:43.462 [wfDebug] [debug] ParserTestRunner::runTest: running "border", "frameless" and "class" attributes on an image. {"private":false}
00:20:43.462 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.462 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/220px-Foobar.jpg {"private":false}
00:20:43.462 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/330px-Foobar.jpg {"private":false}
00:20:43.462 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/440px-Foobar.jpg {"private":false}
00:20:43.462 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.462 ===
00:20:43.462 
00:20:43.462 71) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Invalid image attributes (T64500)" ('legacy parser')
00:20:43.462 Failed asserting that two strings are equal.
00:20:43.462 --- Expected
00:20:43.462 +++ Actual
00:20:43.462 @@ @@
00:20:43.462 -'<figure class="mw-default-size mw-halign-left" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" decoding="async" width="220" height="25" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a><figcaption>caption</figcaption></figure>\n
00:20:43.463 -<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" decoding="async" width="220" height="25" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a><figcaption>caption</figcaption></figure>\n
00:20:43.463 -<figure class="mw-default-size mw-halign-left" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" decoding="async" width="220" height="25" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a><figcaption>caption</figcaption></figure>'
00:20:43.463 +'<figure class="mw-default-size mw-halign-left" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" decoding="async" width="220" height="25" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a><figcaption>caption</figcaption></figure>\n
00:20:43.463 +<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" decoding="async" width="220" height="25" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a><figcaption>caption</figcaption></figure>\n
00:20:43.463 +<figure class="mw-default-size mw-halign-left" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" decoding="async" width="220" height="25" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a><figcaption>caption</figcaption></figure>'
00:20:43.463 
00:20:43.463 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.463 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.463 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.463 === Logs generated by test case
00:20:43.463 [wfDebug] [debug] ParserTestRunner::runTest: running Invalid image attributes (T64500) {"private":false}
00:20:43.463 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.463 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/220px-Foobar.jpg {"private":false}
00:20:43.463 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/330px-Foobar.jpg {"private":false}
00:20:43.463 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/440px-Foobar.jpg {"private":false}
00:20:43.463 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/220px-Foobar.jpg {"private":false}
00:20:43.463 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/330px-Foobar.jpg {"private":false}
00:20:43.463 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/440px-Foobar.jpg {"private":false}
00:20:43.463 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/220px-Foobar.jpg {"private":false}
00:20:43.463 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/330px-Foobar.jpg {"private":false}
00:20:43.463 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/440px-Foobar.jpg {"private":false}
00:20:43.463 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.463 ===
00:20:43.463 
00:20:43.463 72) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Parsoid-specific image handling - lang option" ('legacy parser')
00:20:43.464 Failed asserting that two strings are equal.
00:20:43.464 --- Expected
00:20:43.464 +++ Actual
00:20:43.464 @@ @@
00:20:43.464  '<p>foo\n
00:20:43.464 -<span class="mw-default-size" typeof="mw:Image"><a href="/index.php?title=File:Foobar.svg&amp;lang=de" class="mw-file-description" title="caption"><img alt="caption" src="http://example.com/images/thumb/f/ff/Foobar.svg/langde-240px-Foobar.svg.png" decoding="async" width="240" height="180" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/langde-360px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/langde-480px-Foobar.svg.png 2x" /></a></span>\n
00:20:43.464 +<span class="mw-default-size" typeof="mw:Image"><a href="/index.php?title=File:Foobar.svg&amp;lang=de" title="caption"><img alt="caption" src="http://example.com/images/thumb/f/ff/Foobar.svg/langde-240px-Foobar.svg.png" decoding="async" width="240" height="180" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/langde-360px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/langde-480px-Foobar.svg.png 2x" /></a></span>\n
00:20:43.464  bar\n
00:20:43.464  </p>'
00:20:43.464 
00:20:43.464 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.464 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.464 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.464 === Logs generated by test case
00:20:43.464 [wfDebug] [debug] ParserTestRunner::runTest: running Parsoid-specific image handling - lang option {"private":false}
00:20:43.464 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.464 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/f/ff/Foobar.svg/langde-240px-Foobar.svg.png {"private":false}
00:20:43.464 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/f/ff/Foobar.svg/langde-360px-Foobar.svg.png {"private":false}
00:20:43.464 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/f/ff/Foobar.svg/langde-480px-Foobar.svg.png {"private":false}
00:20:43.464 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.464 ===
00:20:43.464 
00:20:43.464 73) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Media in wikilink" ('legacy parser')
00:20:43.464 Failed asserting that two strings are equal.
00:20:43.464 --- Expected
00:20:43.464 +++ Actual
00:20:43.464 @@ @@
00:20:43.464 -'<p>[[Test|<span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>]]\n
00:20:43.464 +'<p>[[Test|<span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>]]\n
00:20:43.464  </p>'
00:20:43.464 
00:20:43.464 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.464 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.464 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.464 === Logs generated by test case
00:20:43.464 [wfDebug] [debug] ParserTestRunner::runTest: running Media in wikilink {"private":false}
00:20:43.464 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.464 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.464 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.464 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.464 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.464 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.464 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.464 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.464 ===
00:20:43.464 
00:20:43.465 74) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: T3219 URL next to image (good)" ('legacy parser')
00:20:43.465 Failed asserting that two strings are equal.
00:20:43.465 --- Expected
00:20:43.465 +++ Actual
00:20:43.465 @@ @@
00:20:43.465 -'<p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a> <span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:43.465 +'<p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a> <span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:43.465  </p>'
00:20:43.465 
00:20:43.465 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.465 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.465 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.465 === Logs generated by test case
00:20:43.465 [wfDebug] [debug] ParserTestRunner::runTest: running T3219 URL next to image (good) {"private":false}
00:20:43.465 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.465 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.465 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.465 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.465 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.465 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.465 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.465 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.465 ===
00:20:43.465 
00:20:43.465 75) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: T3219 URL next to image (broken)" ('legacy parser')
00:20:43.465 Failed asserting that two strings are equal.
00:20:43.465 --- Expected
00:20:43.465 +++ Actual
00:20:43.465 @@ @@
00:20:43.465 -'<p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:43.465 +'<p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:43.465  </p>'
00:20:43.465 
00:20:43.465 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.465 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.465 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.465 === Logs generated by test case
00:20:43.465 [wfDebug] [debug] ParserTestRunner::runTest: running T3219 URL next to image (broken) {"private":false}
00:20:43.465 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.465 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.465 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.465 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.466 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.466 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.466 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.466 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.466 ===
00:20:43.466 
00:20:43.466 76) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Gallery (with options, html)" ('legacy parser')
00:20:43.466 Failed asserting that two strings are equal.
00:20:43.466 --- Expected
00:20:43.466 +++ Actual
00:20:43.466 @@ @@
00:20:43.466  			</div>\n
00:20:43.466  		</li>\n
00:20:43.466  		<li class="gallerybox" style="width: 105px">\n
00:20:43.466 -			<div class="thumb" style="width: 100px; height: 70px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" decoding="async" width="70" height="8" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/105px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/140px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.466 +			<div class="thumb" style="width: 100px; height: 70px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" decoding="async" width="70" height="8" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/105px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/140px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.466  			<div class="gallerytext">\n
00:20:43.466  <p>some <b>caption</b> <a href="/wiki/Main_Page" title="Main Page">Main Page</a>\n
00:20:43.466  </p>\n
00:20:43.466 @@ @@
00:20:43.466  			</div>\n
00:20:43.466  		</li>\n
00:20:43.466  		<li class="gallerybox" style="width: 105px">\n
00:20:43.466 -			<div class="thumb" style="width: 100px; height: 70px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" decoding="async" width="70" height="8" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/105px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/140px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.466 +			<div class="thumb" style="width: 100px; height: 70px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" decoding="async" width="70" height="8" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/105px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/140px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.466  			<div class="gallerytext">\n
00:20:43.466  			</div>\n
00:20:43.466  		</li>\n
00:20:43.466  		<li class="gallerybox" style="width: 105px">\n
00:20:43.466 -			<div class="thumb" style="width: 100px; height: 70px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="This is a foo-bar." src="http://example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" decoding="async" width="70" height="8" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/105px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/140px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.466 +			<div class="thumb" style="width: 100px; height: 70px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="This is a foo-bar." src="http://example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" decoding="async" width="70" height="8" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/105px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/140px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.466  			<div class="gallerytext">\n
00:20:43.466  <p>blabla.\n
00:20:43.466  </p>\n
00:20:43.466 
00:20:43.466 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.466 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.466 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.466 === Logs generated by test case
00:20:43.466 [wfDebug] [debug] ParserTestRunner::runTest: running Gallery (with options, html) {"private":false}
00:20:43.466 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.466 [wfDebug] [debug] ImageGalleryBase::factory called without context. Using RequestContext::getMain() {"private":false}
00:20:43.466 [wfDebug] [debug] ImageGallery::add Nonexistent.jpg {"private":false}
00:20:43.466 [wfDebug] [debug] ImageGallery::add Nonexistent.jpg {"private":false}
00:20:43.466 [wfDebug] [debug] ImageGallery::add Foobar.jpg {"private":false}
00:20:43.466 [wfDebug] [debug] ImageGallery::add Foobar.jpg {"private":false}
00:20:43.466 [wfDebug] [debug] ImageGallery::add Foobar.jpg {"private":false}
00:20:43.467 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/70px-Foobar.jpg {"private":false}
00:20:43.467 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/105px-Foobar.jpg {"private":false}
00:20:43.467 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/140px-Foobar.jpg {"private":false}
00:20:43.467 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/70px-Foobar.jpg {"private":false}
00:20:43.467 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/105px-Foobar.jpg {"private":false}
00:20:43.467 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/140px-Foobar.jpg {"private":false}
00:20:43.467 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/70px-Foobar.jpg {"private":false}
00:20:43.467 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/105px-Foobar.jpg {"private":false}
00:20:43.467 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/140px-Foobar.jpg {"private":false}
00:20:43.467 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.467 ===
00:20:43.467 
00:20:43.467 77) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Gallery (with options, extsrc)" ('legacy parser')
00:20:43.467 Failed asserting that two strings are equal.
00:20:43.467 --- Expected
00:20:43.467 +++ Actual
00:20:43.467 @@ @@
00:20:43.467  			</div>\n
00:20:43.467  		</li>\n
00:20:43.467  		<li class="gallerybox" style="width: 105px">\n
00:20:43.467 -			<div class="thumb" style="width: 100px; height: 70px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" decoding="async" width="70" height="8" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/105px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/140px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.467 +			<div class="thumb" style="width: 100px; height: 70px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" decoding="async" width="70" height="8" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/105px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/140px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.467  			<div class="gallerytext">\n
00:20:43.467  <p>some <b>caption</b> <a href="/wiki/Main_Page" title="Main Page">Main Page</a>\n
00:20:43.467  </p>\n
00:20:43.467 @@ @@
00:20:43.467  			</div>\n
00:20:43.467  		</li>\n
00:20:43.467  		<li class="gallerybox" style="width: 105px">\n
00:20:43.467 -			<div class="thumb" style="width: 100px; height: 70px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" decoding="async" width="70" height="8" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/105px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/140px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.467 +			<div class="thumb" style="width: 100px; height: 70px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" decoding="async" width="70" height="8" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/105px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/140px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.467  			<div class="gallerytext">\n
00:20:43.467  			</div>\n
00:20:43.467  		</li>\n
00:20:43.467  		<li class="gallerybox" style="width: 105px">\n
00:20:43.468 -			<div class="thumb" style="width: 100px; height: 70px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="This is a foo-bar." src="http://example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" decoding="async" width="70" height="8" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/105px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/140px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.468 +			<div class="thumb" style="width: 100px; height: 70px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="This is a foo-bar." src="http://example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" decoding="async" width="70" height="8" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/105px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/140px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.468  			<div class="gallerytext">\n
00:20:43.468  <p>blabla.\n
00:20:43.468  </p>\n
00:20:43.468 
00:20:43.468 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.468 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.468 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.468 === Logs generated by test case
00:20:43.468 [wfDebug] [debug] ParserTestRunner::runTest: running Gallery (with options, extsrc) {"private":false}
00:20:43.468 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.468 [wfDebug] [debug] ImageGalleryBase::factory called without context. Using RequestContext::getMain() {"private":false}
00:20:43.468 [wfDebug] [debug] ImageGallery::add Nonexistent.jpg {"private":false}
00:20:43.468 [wfDebug] [debug] ImageGallery::add Nonexistent.jpg {"private":false}
00:20:43.468 [wfDebug] [debug] ImageGallery::add Foobar.jpg {"private":false}
00:20:43.468 [wfDebug] [debug] ImageGallery::add Foobar.jpg {"private":false}
00:20:43.468 [wfDebug] [debug] ImageGallery::add Foobar.jpg {"private":false}
00:20:43.468 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/70px-Foobar.jpg {"private":false}
00:20:43.468 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/105px-Foobar.jpg {"private":false}
00:20:43.468 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/140px-Foobar.jpg {"private":false}
00:20:43.468 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/70px-Foobar.jpg {"private":false}
00:20:43.468 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/105px-Foobar.jpg {"private":false}
00:20:43.468 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/140px-Foobar.jpg {"private":false}
00:20:43.468 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/70px-Foobar.jpg {"private":false}
00:20:43.468 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/105px-Foobar.jpg {"private":false}
00:20:43.468 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/140px-Foobar.jpg {"private":false}
00:20:43.468 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.468 ===
00:20:43.468 
00:20:43.468 78) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Gallery (without px units)" ('legacy parser')
00:20:43.468 Failed asserting that two strings are equal.
00:20:43.468 --- Expected
00:20:43.468 +++ Actual
00:20:43.468 @@ @@
00:20:43.468  '<ul class="gallery mw-gallery-traditional">\n
00:20:43.468  		<li class="gallerybox" style="width: 105px">\n
00:20:43.468 -			<div class="thumb" style="width: 100px; height: 70px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" decoding="async" width="70" height="8" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/105px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/140px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.469 +			<div class="thumb" style="width: 100px; height: 70px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" decoding="async" width="70" height="8" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/105px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/140px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.469  			<div class="gallerytext">\n
00:20:43.469  			</div>\n
00:20:43.469  		</li>\n
00:20:43.469  </ul>'
00:20:43.469 
00:20:43.469 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.469 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.469 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.469 === Logs generated by test case
00:20:43.469 [wfDebug] [debug] ParserTestRunner::runTest: running Gallery (without px units) {"private":false}
00:20:43.469 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.469 [wfDebug] [debug] ImageGalleryBase::factory called without context. Using RequestContext::getMain() {"private":false}
00:20:43.469 [wfDebug] [debug] ImageGallery::add Foobar.jpg {"private":false}
00:20:43.469 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/70px-Foobar.jpg {"private":false}
00:20:43.469 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/105px-Foobar.jpg {"private":false}
00:20:43.469 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/140px-Foobar.jpg {"private":false}
00:20:43.469 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.469 ===
00:20:43.469 
00:20:43.469 79) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Gallery (with invalid units)" ('legacy parser')
00:20:43.469 Failed asserting that two strings are equal.
00:20:43.469 --- Expected
00:20:43.469 +++ Actual
00:20:43.469 @@ @@
00:20:43.469  '<ul class="gallery mw-gallery-traditional">\n
00:20:43.469  		<li class="gallerybox" style="width: 155px">\n
00:20:43.469 -			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.469 +			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.469  			<div class="gallerytext">\n
00:20:43.469  			</div>\n
00:20:43.469  		</li>\n
00:20:43.469  </ul>'
00:20:43.469 
00:20:43.469 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.469 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.469 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.469 === Logs generated by test case
00:20:43.469 [wfDebug] [debug] ParserTestRunner::runTest: running Gallery (with invalid units) {"private":false}
00:20:43.469 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.469 [wfDebug] [debug] ImageGalleryBase::factory called without context. Using RequestContext::getMain() {"private":false}
00:20:43.469 [wfDebug] [debug] ImageGallery::add Foobar.jpg {"private":false}
00:20:43.469 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/120px-Foobar.jpg {"private":false}
00:20:43.469 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:43.470 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/240px-Foobar.jpg {"private":false}
00:20:43.470 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.470 ===
00:20:43.470 
00:20:43.470 80) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Gallery with template inside caption" ('legacy parser')
00:20:43.470 Failed asserting that two strings are equal.
00:20:43.470 --- Expected
00:20:43.470 +++ Actual
00:20:43.470 @@ @@
00:20:43.470  '<ul class="gallery mw-gallery-traditional">\n
00:20:43.470  	<li class="gallerycaption">hi</li>\n
00:20:43.470  		<li class="gallerybox" style="width: 155px">\n
00:20:43.470 -			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.470 +			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.470  			<div class="gallerytext">\n
00:20:43.470  <p>ho\n
00:20:43.470  </p>\n
00:20:43.470 
00:20:43.470 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.470 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.470 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.470 === Logs generated by test case
00:20:43.470 [wfDebug] [debug] ParserTestRunner::runTest: running Gallery with template inside caption {"private":false}
00:20:43.470 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.470 [wfDebug] [debug] ImageGalleryBase::factory called without context. Using RequestContext::getMain() {"private":false}
00:20:43.470 [wfDebug] [debug] ImageGallery::add Foobar.jpg {"private":false}
00:20:43.470 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/120px-Foobar.jpg {"private":false}
00:20:43.470 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:43.470 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/240px-Foobar.jpg {"private":false}
00:20:43.470 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.470 ===
00:20:43.470 
00:20:43.470 81) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Gallery with wikitext inside gallery caption" ('legacy parser')
00:20:43.470 Failed asserting that two strings are equal.
00:20:43.470 --- Expected
00:20:43.470 +++ Actual
00:20:43.470 @@ @@
00:20:43.470  '<ul class="gallery mw-gallery-traditional">\n
00:20:43.470 -	<li class="gallerycaption"># This should not be a list item Text <b>bold</b> <a href="/index.php?title=Link&amp;action=edit&amp;redlink=1" class="new" title="Link (page does not exist)">link</a> Special <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>File in gallery caption</figcaption></figure></li>\n
00:20:43.471 +	<li class="gallerycaption"># This should not be a list item Text <b>bold</b> <a href="/index.php?title=Link&amp;action=edit&amp;redlink=1" class="new" title="Link (page does not exist)">link</a> Special <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>File in gallery caption</figcaption></figure></li>\n
00:20:43.471  		<li class="gallerybox" style="width: 155px">\n
00:20:43.471 -			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.471 +			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.471  			<div class="gallerytext">\n
00:20:43.471  <p>Image caption\n
00:20:43.471  </p>\n
00:20:43.471 
00:20:43.471 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.471 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.471 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.471 === Logs generated by test case
00:20:43.471 [wfDebug] [debug] ParserTestRunner::runTest: running Gallery with wikitext inside gallery caption {"private":false}
00:20:43.471 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.471 [wfDebug] [debug] ImageGalleryBase::factory called without context. Using RequestContext::getMain() {"private":false}
00:20:43.471 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:43.471 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/270px-Foobar.jpg {"private":false}
00:20:43.471 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/360px-Foobar.jpg {"private":false}
00:20:43.471 [wfDebug] [debug] ImageGallery::add Foobar.jpg {"private":false}
00:20:43.471 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/120px-Foobar.jpg {"private":false}
00:20:43.471 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:43.471 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/240px-Foobar.jpg {"private":false}
00:20:43.471 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.471 ===
00:20:43.471 
00:20:43.471 82) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Gallery with wikitext inside caption" ('legacy parser')
00:20:43.471 Failed asserting that two strings are equal.
00:20:43.471 --- Expected
00:20:43.471 +++ Actual
00:20:43.471 @@ @@
00:20:43.471  '<ul class="gallery mw-gallery-traditional">\n
00:20:43.471  		<li class="gallerybox" style="width: 155px">\n
00:20:43.471 -			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="galleryalt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.471 +			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="galleryalt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.472  			<div class="gallerytext">\n
00:20:43.472 -<p><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description" title="desc"><img alt="inneralt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/20px-Foobar.jpg" decoding="async" width="20" height="2" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/30px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/40px-Foobar.jpg 2x" /></a></span>\n
00:20:43.472 +<p><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" title="desc"><img alt="inneralt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/20px-Foobar.jpg" decoding="async" width="20" height="2" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/30px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/40px-Foobar.jpg 2x" /></a></span>\n
00:20:43.472  </p>\n
00:20:43.472  			</div>\n
00:20:43.472  		</li>\n
00:20:43.472  		<li class="gallerybox" style="width: 155px">\n
00:20:43.472 -			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="galleryalt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.472 +			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="galleryalt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.472  			<div class="gallerytext">\n
00:20:43.472  <p>This is a test template\n
00:20:43.472  </p>\n
00:20:43.472 
00:20:43.472 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.472 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.472 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.472 === Logs generated by test case
00:20:43.472 [wfDebug] [debug] ParserTestRunner::runTest: running Gallery with wikitext inside caption {"private":false}
00:20:43.472 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.472 [wfDebug] [debug] ImageGalleryBase::factory called without context. Using RequestContext::getMain() {"private":false}
00:20:43.472 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/20px-Foobar.jpg {"private":false}
00:20:43.472 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/30px-Foobar.jpg {"private":false}
00:20:43.472 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/40px-Foobar.jpg {"private":false}
00:20:43.472 [wfDebug] [debug] ImageGallery::add Foobar.jpg {"private":false}
00:20:43.472 [wfDebug] [debug] ImageGallery::add Foobar.jpg {"private":false}
00:20:43.472 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/120px-Foobar.jpg {"private":false}
00:20:43.472 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:43.472 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/240px-Foobar.jpg {"private":false}
00:20:43.472 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/120px-Foobar.jpg {"private":false}
00:20:43.472 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:43.472 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/240px-Foobar.jpg {"private":false}
00:20:43.472 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.472 ===
00:20:43.472 
00:20:43.472 83) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Gallery with wikitext incl bogus HTML tag (T237318)" ('legacy parser')
00:20:43.472 Failed asserting that two strings are equal.
00:20:43.473 --- Expected
00:20:43.473 +++ Actual
00:20:43.473 @@ @@
00:20:43.473  '<ul class="gallery mw-gallery-traditional">\n
00:20:43.473  		<li class="gallerybox" style="width: 155px">\n
00:20:43.473 -			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.473 +			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.473  			<div class="gallerytext">\n
00:20:43.473  <p>&lt;/ref&gt;\n
00:20:43.473  </p>\n
00:20:43.473 
00:20:43.473 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.473 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.473 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.473 === Logs generated by test case
00:20:43.473 [wfDebug] [debug] ParserTestRunner::runTest: running Gallery with wikitext incl bogus HTML tag (T237318) {"private":false}
00:20:43.473 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.473 [wfDebug] [debug] ImageGalleryBase::factory called without context. Using RequestContext::getMain() {"private":false}
00:20:43.473 [wfDebug] [debug] ImageGallery::add Foobar.jpg {"private":false}
00:20:43.473 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/120px-Foobar.jpg {"private":false}
00:20:43.473 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:43.473 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/240px-Foobar.jpg {"private":false}
00:20:43.473 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.473 ===
00:20:43.473 
00:20:43.473 84) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Gallery (with showfilename option)" ('legacy parser')
00:20:43.473 Failed asserting that two strings are equal.
00:20:43.473 --- Expected
00:20:43.473 +++ Actual
00:20:43.473 @@ @@
00:20:43.473  			</div>\n
00:20:43.473  		</li>\n
00:20:43.473  		<li class="gallerybox" style="width: 155px">\n
00:20:43.473 -			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.473 +			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.473  			<div class="gallerytext">\n
00:20:43.473  <p><a href="/wiki/File:Foobar.jpg" class="galleryfilename galleryfilename-truncate" title="File:Foobar.jpg">Foobar.jpg</a>\n
00:20:43.473  some <b>caption</b> <a href="/wiki/Main_Page" title="Main Page">Main Page</a>\n
00:20:43.473 @@ @@
00:20:43.473  			</div>\n
00:20:43.473  		</li>\n
00:20:43.473  		<li class="gallerybox" style="width: 155px">\n
00:20:43.473 -			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.473 +			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.473  			<div class="gallerytext">\n
00:20:43.473  <p><a href="/wiki/File:Foobar.jpg" class="galleryfilename galleryfilename-truncate" title="File:Foobar.jpg">Foobar.jpg</a>\n
00:20:43.473  </p>\n
00:20:43.473 
00:20:43.473 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.473 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.473 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.473 === Logs generated by test case
00:20:43.474 [wfDebug] [debug] ParserTestRunner::runTest: running Gallery (with showfilename option) {"private":false}
00:20:43.474 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.474 [wfDebug] [debug] ImageGalleryBase::factory called without context. Using RequestContext::getMain() {"private":false}
00:20:43.474 [wfDebug] [debug] ImageGallery::add Nonexistent.jpg {"private":false}
00:20:43.474 [wfDebug] [debug] ImageGallery::add Nonexistent.jpg {"private":false}
00:20:43.474 [wfDebug] [debug] ImageGallery::add Foobar.jpg {"private":false}
00:20:43.474 [wfDebug] [debug] ImageGallery::add Foobar.jpg {"private":false}
00:20:43.474 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/120px-Foobar.jpg {"private":false}
00:20:43.474 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:43.474 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/240px-Foobar.jpg {"private":false}
00:20:43.474 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/120px-Foobar.jpg {"private":false}
00:20:43.474 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:43.474 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/240px-Foobar.jpg {"private":false}
00:20:43.474 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.474 ===
00:20:43.474 
00:20:43.474 85) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Gallery (with namespace-less filenames)" ('legacy parser')
00:20:43.495 Failed asserting that two strings are equal.
00:20:43.495 --- Expected
00:20:43.495 +++ Actual
00:20:43.495 @@ @@
00:20:43.495  			</div>\n
00:20:43.495  		</li>\n
00:20:43.495  		<li class="gallerybox" style="width: 155px">\n
00:20:43.495 -			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.495 +			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.495  			<div class="gallerytext">\n
00:20:43.495  			</div>\n
00:20:43.495  		</li>\n
00:20:43.495  		<li class="gallerybox" style="width: 155px">\n
00:20:43.495 -			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.495 +			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.495  			<div class="gallerytext">\n
00:20:43.495  			</div>\n
00:20:43.495  		</li>\n
00:20:43.495  </ul>'
00:20:43.495 
00:20:43.495 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.495 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.495 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.495 === Logs generated by test case
00:20:43.495 [wfDebug] [debug] ParserTestRunner::runTest: running Gallery (with namespace-less filenames) {"private":false}
00:20:43.495 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.495 [wfDebug] [debug] ImageGalleryBase::factory called without context. Using RequestContext::getMain() {"private":false}
00:20:43.495 [wfDebug] [debug] ImageGallery::add Nonexistent.jpg {"private":false}
00:20:43.495 [wfDebug] [debug] ImageGallery::add Nonexistent.jpg {"private":false}
00:20:43.495 [wfDebug] [debug] ImageGallery::add Foobar.jpg {"private":false}
00:20:43.495 [wfDebug] [debug] ImageGallery::add Foobar.jpg {"private":false}
00:20:43.495 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/120px-Foobar.jpg {"private":false}
00:20:43.495 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:43.495 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/240px-Foobar.jpg {"private":false}
00:20:43.495 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/120px-Foobar.jpg {"private":false}
00:20:43.495 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:43.496 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/240px-Foobar.jpg {"private":false}
00:20:43.496 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.496 ===
00:20:43.496 
00:20:43.496 86) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Gallery with invalid title as link (T45964)" ('legacy parser')
00:20:43.496 Failed asserting that two strings are equal.
00:20:43.496 --- Expected
00:20:43.496 +++ Actual
00:20:43.496 @@ @@
00:20:43.496  '<ul class="gallery mw-gallery-traditional">\n
00:20:43.496  		<li class="gallerybox" style="width: 155px">\n
00:20:43.496 -			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.496 +			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.496  			<div class="gallerytext">\n
00:20:43.496  			</div>\n
00:20:43.496  		</li>\n
00:20:43.496  </ul>'
00:20:43.496 
00:20:43.496 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.496 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.496 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.496 === Logs generated by test case
00:20:43.496 [wfDebug] [debug] ParserTestRunner::runTest: running Gallery with invalid title as link (T45964) {"private":false}
00:20:43.496 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.496 [wfDebug] [debug] ImageGalleryBase::factory called without context. Using RequestContext::getMain() {"private":false}
00:20:43.496 [wfDebug] [debug] ImageGallery::add Foobar.jpg {"private":false}
00:20:43.496 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/120px-Foobar.jpg {"private":false}
00:20:43.496 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:43.496 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/240px-Foobar.jpg {"private":false}
00:20:43.496 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.496 ===
00:20:43.496 
00:20:43.496 87) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Gallery with class and style attributes" ('legacy parser')
00:20:43.497 Failed asserting that two strings are equal.
00:20:43.497 --- Expected
00:20:43.497 +++ Actual
00:20:43.497 @@ @@
00:20:43.497  '<ul class="gallery mw-gallery-traditional center" style="text-align: center;">\n
00:20:43.497  		<li class="gallerybox" style="width: 155px">\n
00:20:43.497 -			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.497 +			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.497  			<div class="gallerytext">\n
00:20:43.497  			</div>\n
00:20:43.497  		</li>\n
00:20:43.497  </ul>'
00:20:43.497 
00:20:43.497 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.497 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.497 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.497 === Logs generated by test case
00:20:43.497 [wfDebug] [debug] ParserTestRunner::runTest: running Gallery with class and style attributes {"private":false}
00:20:43.497 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.497 [wfDebug] [debug] ImageGalleryBase::factory called without context. Using RequestContext::getMain() {"private":false}
00:20:43.497 [wfDebug] [debug] ImageGallery::add Foobar.jpg {"private":false}
00:20:43.497 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/120px-Foobar.jpg {"private":false}
00:20:43.497 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:43.497 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/240px-Foobar.jpg {"private":false}
00:20:43.497 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.497 ===
00:20:43.497 
00:20:43.497 88) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Gallery in nolines mode" ('legacy parser')
00:20:43.497 Failed asserting that two strings are equal.
00:20:43.497 --- Expected
00:20:43.497 +++ Actual
00:20:43.497 @@ @@
00:20:43.497  '<ul class="gallery mw-gallery-nolines">\n
00:20:43.497  	<li class="gallerycaption">No Lines!</li>\n
00:20:43.497  		<li class="gallerybox" style="width: 125px">\n
00:20:43.497 -			<div class="thumb" style="width: 120px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.497 +			<div class="thumb" style="width: 120px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.497  			<div class="gallerytext">\n
00:20:43.497  <p>foo\n
00:20:43.497  </p>\n
00:20:43.497 
00:20:43.497 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.497 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.497 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.498 === Logs generated by test case
00:20:43.498 [wfDebug] [debug] ParserTestRunner::runTest: running Gallery in nolines mode {"private":false}
00:20:43.498 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.498 [wfDebug] [debug] ImageGalleryBase::factory called without context. Using RequestContext::getMain() {"private":false}
00:20:43.498 [wfDebug] [debug] ImageGallery::add Foobar.jpg {"private":false}
00:20:43.498 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/120px-Foobar.jpg {"private":false}
00:20:43.498 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:43.498 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/240px-Foobar.jpg {"private":false}
00:20:43.498 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.498 ===
00:20:43.498 
00:20:43.498 89) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Gallery in slideshow mode" ('legacy parser')
00:20:43.498 Failed asserting that two strings are equal.
00:20:43.498 --- Expected
00:20:43.498 +++ Actual
00:20:43.498 @@ @@
00:20:43.498  '<ul class="gallery mw-gallery-slideshow" data-showthumbnails="1">\n
00:20:43.498  		<li class="gallerybox" style="width: 155px">\n
00:20:43.498 -			<div class="thumb" style="width: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.498 +			<div class="thumb" style="width: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.498  			<div class="gallerytext">\n
00:20:43.498  			</div>\n
00:20:43.498  		</li>\n
00:20:43.498  </ul>'
00:20:43.498 
00:20:43.498 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.498 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.498 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.498 === Logs generated by test case
00:20:43.498 [wfDebug] [debug] ParserTestRunner::runTest: running Gallery in slideshow mode {"private":false}
00:20:43.498 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.498 [wfDebug] [debug] ImageGalleryBase::factory called without context. Using RequestContext::getMain() {"private":false}
00:20:43.498 [wfDebug] [debug] ImageGallery::add Foobar.jpg {"private":false}
00:20:43.498 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/120px-Foobar.jpg {"private":false}
00:20:43.498 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:43.498 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/240px-Foobar.jpg {"private":false}
00:20:43.498 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.498 ===
00:20:43.498 
00:20:43.498 90) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Gallery in packed mode" ('legacy parser')
00:20:43.498 Failed asserting that two strings are equal.
00:20:43.498 --- Expected
00:20:43.498 +++ Actual
00:20:43.498 @@ @@
00:20:43.498  '<ul class="gallery mw-gallery-packed">\n
00:20:43.499  		<li class="gallerybox" style="width: 1061.3333333333px">\n
00:20:43.499 -			<div class="thumb" style="width: 1059.3333333333px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/1589px-Foobar.jpg" decoding="async" width="1060" height="120" srcset="http://example.com/images/3/3a/Foobar.jpg 1.5x" /></a></span></div>\n
00:20:43.499 +			<div class="thumb" style="width: 1059.3333333333px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/1589px-Foobar.jpg" decoding="async" width="1060" height="120" srcset="http://example.com/images/3/3a/Foobar.jpg 1.5x" /></a></span></div>\n
00:20:43.499  			<div class="gallerytext">\n
00:20:43.499  			</div>\n
00:20:43.499  		</li>\n
00:20:43.499  </ul>'
00:20:43.499 
00:20:43.499 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.499 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.499 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.499 === Logs generated by test case
00:20:43.499 [wfDebug] [debug] ParserTestRunner::runTest: running Gallery in packed mode {"private":false}
00:20:43.499 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.499 [wfDebug] [debug] ImageGalleryBase::factory called without context. Using RequestContext::getMain() {"private":false}
00:20:43.499 [wfDebug] [debug] ImageGallery::add Foobar.jpg {"private":false}
00:20:43.499 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1589px-Foobar.jpg {"private":false}
00:20:43.499 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.499 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.499 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.499 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.499 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.499 ===
00:20:43.499 
00:20:43.499 91) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Gallery in packed-overlay mode" ('legacy parser')
00:20:43.499 Failed asserting that two strings are equal.
00:20:43.499 --- Expected
00:20:43.499 +++ Actual
00:20:43.499 @@ @@
00:20:43.499  '<ul class="gallery mw-gallery-packed-overlay">\n
00:20:43.499  	<li class="gallerycaption">Packed Overlay!</li>\n
00:20:43.499  		<li class="gallerybox" style="width: 1061.3333333333px">\n
00:20:43.499 -			<div class="thumb" style="width: 1059.3333333333px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/1589px-Foobar.jpg" decoding="async" width="1060" height="120" srcset="http://example.com/images/3/3a/Foobar.jpg 1.5x" /></a></span></div>\n
00:20:43.499 +			<div class="thumb" style="width: 1059.3333333333px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/1589px-Foobar.jpg" decoding="async" width="1060" height="120" srcset="http://example.com/images/3/3a/Foobar.jpg 1.5x" /></a></span></div>\n
00:20:43.499  			<div class="gallerytextwrapper" style="width: 1040px"><div class="gallerytext">\n
00:20:43.499  <p>foo\n
00:20:43.499  </p>\n
00:20:43.499 
00:20:43.500 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.500 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.500 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.500 === Logs generated by test case
00:20:43.500 [wfDebug] [debug] ParserTestRunner::runTest: running Gallery in packed-overlay mode {"private":false}
00:20:43.500 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.500 [wfDebug] [debug] ImageGalleryBase::factory called without context. Using RequestContext::getMain() {"private":false}
00:20:43.500 [wfDebug] [debug] ImageGallery::add Foobar.jpg {"private":false}
00:20:43.500 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1589px-Foobar.jpg {"private":false}
00:20:43.500 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.500 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.500 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.500 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.500 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.500 ===
00:20:43.500 
00:20:43.500 92) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Gallery in packed-hover mode" ('legacy parser')
00:20:43.500 Failed asserting that two strings are equal.
00:20:43.500 --- Expected
00:20:43.500 +++ Actual
00:20:43.500 @@ @@
00:20:43.500  '<ul class="gallery mw-gallery-packed-hover">\n
00:20:43.500  	<li class="gallerycaption">Packed Hover!</li>\n
00:20:43.500  		<li class="gallerybox" style="width: 1061.3333333333px">\n
00:20:43.500 -			<div class="thumb" style="width: 1059.3333333333px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/1589px-Foobar.jpg" decoding="async" width="1060" height="120" srcset="http://example.com/images/3/3a/Foobar.jpg 1.5x" /></a></span></div>\n
00:20:43.500 +			<div class="thumb" style="width: 1059.3333333333px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/1589px-Foobar.jpg" decoding="async" width="1060" height="120" srcset="http://example.com/images/3/3a/Foobar.jpg 1.5x" /></a></span></div>\n
00:20:43.500  			<div class="gallerytextwrapper" style="width: 1040px"><div class="gallerytext">\n
00:20:43.500  <p>foo\n
00:20:43.500  </p>\n
00:20:43.500 
00:20:43.500 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.500 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.500 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.500 === Logs generated by test case
00:20:43.500 [wfDebug] [debug] ParserTestRunner::runTest: running Gallery in packed-hover mode {"private":false}
00:20:43.500 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.500 [wfDebug] [debug] ImageGalleryBase::factory called without context. Using RequestContext::getMain() {"private":false}
00:20:43.500 [wfDebug] [debug] ImageGallery::add Foobar.jpg {"private":false}
00:20:43.500 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1589px-Foobar.jpg {"private":false}
00:20:43.500 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.500 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.500 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.500 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.500 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.500 ===
00:20:43.500 
00:20:43.500 93) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Centre-aligned image" ('legacy parser')
00:20:43.501 Failed asserting that two strings are equal.
00:20:43.501 --- Expected
00:20:43.501 +++ Actual
00:20:43.501 @@ @@
00:20:43.501 -'<figure class="mw-default-size mw-halign-center" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption></figcaption></figure>'
00:20:43.501 +'<figure class="mw-default-size mw-halign-center" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption></figcaption></figure>'
00:20:43.501 
00:20:43.501 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.501 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.501 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.501 === Logs generated by test case
00:20:43.501 [wfDebug] [debug] ParserTestRunner::runTest: running Centre-aligned image {"private":false}
00:20:43.501 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.501 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.501 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.501 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.501 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.501 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.501 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.501 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.501 ===
00:20:43.501 
00:20:43.501 94) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: None-aligned image" ('legacy parser')
00:20:43.501 Failed asserting that two strings are equal.
00:20:43.501 --- Expected
00:20:43.501 +++ Actual
00:20:43.501 @@ @@
00:20:43.501 -'<figure class="mw-default-size mw-halign-none" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption></figcaption></figure>'
00:20:43.501 +'<figure class="mw-default-size mw-halign-none" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption></figcaption></figure>'
00:20:43.501 
00:20:43.501 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.501 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.501 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.501 === Logs generated by test case
00:20:43.501 [wfDebug] [debug] ParserTestRunner::runTest: running None-aligned image {"private":false}
00:20:43.501 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.501 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.501 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.501 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.501 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.501 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.501 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.501 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.501 ===
00:20:43.501 
00:20:43.501 95) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Width + Height sized image (using px) (height is ignored)" ('legacy parser')
00:20:43.502 Failed asserting that two strings are equal.
00:20:43.502 --- Expected
00:20:43.502 +++ Actual
00:20:43.502 @@ @@
00:20:43.502 -'<p><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" decoding="async" width="640" height="73" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/960px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/1280px-Foobar.jpg 2x" /></a></span>\n
00:20:43.502 +'<p><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" decoding="async" width="640" height="73" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/960px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/1280px-Foobar.jpg 2x" /></a></span>\n
00:20:43.502  </p>'
00:20:43.502 
00:20:43.502 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.502 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.502 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.502 === Logs generated by test case
00:20:43.502 [wfDebug] [debug] ParserTestRunner::runTest: running Width + Height sized image (using px) (height is ignored) {"private":false}
00:20:43.502 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.502 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/640px-Foobar.jpg {"private":false}
00:20:43.502 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/960px-Foobar.jpg {"private":false}
00:20:43.502 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1280px-Foobar.jpg {"private":false}
00:20:43.502 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.502 ===
00:20:43.502 
00:20:43.502 96) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Width-sized image (using px, no following whitespace)" ('legacy parser')
00:20:43.502 Failed asserting that two strings are equal.
00:20:43.502 --- Expected
00:20:43.502 +++ Actual
00:20:43.502 @@ @@
00:20:43.502 -'<p><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" decoding="async" width="640" height="73" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/960px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/1280px-Foobar.jpg 2x" /></a></span>\n
00:20:43.502 +'<p><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" decoding="async" width="640" height="73" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/960px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/1280px-Foobar.jpg 2x" /></a></span>\n
00:20:43.502  </p>'
00:20:43.502 
00:20:43.503 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.503 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.503 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.503 === Logs generated by test case
00:20:43.503 [wfDebug] [debug] ParserTestRunner::runTest: running Width-sized image (using px, no following whitespace) {"private":false}
00:20:43.503 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.503 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/640px-Foobar.jpg {"private":false}
00:20:43.503 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/960px-Foobar.jpg {"private":false}
00:20:43.503 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1280px-Foobar.jpg {"private":false}
00:20:43.503 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.503 ===
00:20:43.503 
00:20:43.503 97) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Width-sized image (using px, with following whitespace - test regression from r39467)" ('legacy parser')
00:20:43.503 Failed asserting that two strings are equal.
00:20:43.503 --- Expected
00:20:43.503 +++ Actual
00:20:43.503 @@ @@
00:20:43.503 -'<p><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" decoding="async" width="640" height="73" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/960px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/1280px-Foobar.jpg 2x" /></a></span>\n
00:20:43.503 +'<p><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" decoding="async" width="640" height="73" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/960px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/1280px-Foobar.jpg 2x" /></a></span>\n
00:20:43.503  </p>'
00:20:43.503 
00:20:43.503 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.503 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.503 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.503 === Logs generated by test case
00:20:43.503 [wfDebug] [debug] ParserTestRunner::runTest: running Width-sized image (using px, with following whitespace - test regression from r39467) {"private":false}
00:20:43.503 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.503 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/640px-Foobar.jpg {"private":false}
00:20:43.503 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/960px-Foobar.jpg {"private":false}
00:20:43.503 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1280px-Foobar.jpg {"private":false}
00:20:43.503 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.503 ===
00:20:43.503 
00:20:43.503 98) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Width-sized image (using px, with preceding whitespace - test regression from r39467)" ('legacy parser')
00:20:43.503 Failed asserting that two strings are equal.
00:20:43.503 --- Expected
00:20:43.503 +++ Actual
00:20:43.503 @@ @@
00:20:43.503 -'<p><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" decoding="async" width="640" height="73" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/960px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/1280px-Foobar.jpg 2x" /></a></span>\n
00:20:43.504 +'<p><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" decoding="async" width="640" height="73" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/960px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/1280px-Foobar.jpg 2x" /></a></span>\n
00:20:43.504  </p>'
00:20:43.504 
00:20:43.504 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.504 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.504 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.504 === Logs generated by test case
00:20:43.504 [wfDebug] [debug] ParserTestRunner::runTest: running Width-sized image (using px, with preceding whitespace - test regression from r39467) {"private":false}
00:20:43.504 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.504 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/640px-Foobar.jpg {"private":false}
00:20:43.504 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/960px-Foobar.jpg {"private":false}
00:20:43.504 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1280px-Foobar.jpg {"private":false}
00:20:43.504 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.504 ===
00:20:43.504 
00:20:43.504 99) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Image with page parameter" ('legacy parser')
00:20:43.504 Failed asserting that two strings are equal.
00:20:43.504 --- Expected
00:20:43.504 +++ Actual
00:20:43.504 @@ @@
00:20:43.504 -'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:LoremIpsum.djvu" class="mw-file-description"><img alt="LoremIpsum.djvu" src="http://example.com/images/thumb/5/5f/LoremIpsum.djvu/page1-2480px-LoremIpsum.djvu.jpg" decoding="async" width="2480" height="3508" srcset="http://example.com/images/thumb/5/5f/LoremIpsum.djvu/page1-3720px-LoremIpsum.djvu.jpg 1.5x, http://example.com/images/thumb/5/5f/LoremIpsum.djvu/page1-4960px-LoremIpsum.djvu.jpg 2x" /></a></span>\n
00:20:43.504 -</p><p><span class="mw-default-size" typeof="mw:Image"><a href="/index.php?title=File:LoremIpsum.djvu&amp;page=2" class="mw-file-description"><img alt="LoremIpsum.djvu" src="http://example.com/images/thumb/5/5f/LoremIpsum.djvu/page2-2480px-LoremIpsum.djvu.jpg" decoding="async" width="2480" height="3508" srcset="http://example.com/images/thumb/5/5f/LoremIpsum.djvu/page2-3720px-LoremIpsum.djvu.jpg 1.5x, http://example.com/images/thumb/5/5f/LoremIpsum.djvu/page2-4960px-LoremIpsum.djvu.jpg 2x" /></a></span>\n
00:20:43.504 +'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:LoremIpsum.djvu"><img alt="LoremIpsum.djvu" src="http://example.com/images/thumb/5/5f/LoremIpsum.djvu/page1-2480px-LoremIpsum.djvu.jpg" decoding="async" width="2480" height="3508" srcset="http://example.com/images/thumb/5/5f/LoremIpsum.djvu/page1-3720px-LoremIpsum.djvu.jpg 1.5x, http://example.com/images/thumb/5/5f/LoremIpsum.djvu/page1-4960px-LoremIpsum.djvu.jpg 2x" /></a></span>\n
00:20:43.504 +</p><p><span class="mw-default-size" typeof="mw:Image"><a href="/index.php?title=File:LoremIpsum.djvu&amp;page=2"><img alt="LoremIpsum.djvu" src="http://example.com/images/thumb/5/5f/LoremIpsum.djvu/page2-2480px-LoremIpsum.djvu.jpg" decoding="async" width="2480" height="3508" srcset="http://example.com/images/thumb/5/5f/LoremIpsum.djvu/page2-3720px-LoremIpsum.djvu.jpg 1.5x, http://example.com/images/thumb/5/5f/LoremIpsum.djvu/page2-4960px-LoremIpsum.djvu.jpg 2x" /></a></span>\n
00:20:43.504  </p>'
00:20:43.504 
00:20:43.504 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.504 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.504 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.504 === Logs generated by test case
00:20:43.504 [wfDebug] [debug] ParserTestRunner::runTest: running Image with page parameter {"private":false}
00:20:43.504 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.504 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/5/5f/LoremIpsum.djvu/page1-2480px-LoremIpsum.djvu.jpg {"private":false}
00:20:43.504 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/5/5f/LoremIpsum.djvu/page1-3720px-LoremIpsum.djvu.jpg {"private":false}
00:20:43.504 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/5/5f/LoremIpsum.djvu/page1-4960px-LoremIpsum.djvu.jpg {"private":false}
00:20:43.504 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/5/5f/LoremIpsum.djvu/page2-2480px-LoremIpsum.djvu.jpg {"private":false}
00:20:43.504 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/5/5f/LoremIpsum.djvu/page2-3720px-LoremIpsum.djvu.jpg {"private":false}
00:20:43.504 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/5/5f/LoremIpsum.djvu/page2-4960px-LoremIpsum.djvu.jpg {"private":false}
00:20:43.504 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.504 ===
00:20:43.504 
00:20:43.504 100) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Image with page parameter generated by a template" ('legacy parser')
00:20:43.505 Failed asserting that two strings are equal.
00:20:43.505 --- Expected
00:20:43.505 +++ Actual
00:20:43.505 @@ @@
00:20:43.505 -'<p><span class="mw-default-size" typeof="mw:Image"><a href="/index.php?title=File:LoremIpsum.djvu&amp;page=2" class="mw-file-description"><img alt="LoremIpsum.djvu" src="http://example.com/images/thumb/5/5f/LoremIpsum.djvu/page2-2480px-LoremIpsum.djvu.jpg" decoding="async" width="2480" height="3508" srcset="http://example.com/images/thumb/5/5f/LoremIpsum.djvu/page2-3720px-LoremIpsum.djvu.jpg 1.5x, http://example.com/images/thumb/5/5f/LoremIpsum.djvu/page2-4960px-LoremIpsum.djvu.jpg 2x" /></a></span>\n
00:20:43.505 +'<p><span class="mw-default-size" typeof="mw:Image"><a href="/index.php?title=File:LoremIpsum.djvu&amp;page=2"><img alt="LoremIpsum.djvu" src="http://example.com/images/thumb/5/5f/LoremIpsum.djvu/page2-2480px-LoremIpsum.djvu.jpg" decoding="async" width="2480" height="3508" srcset="http://example.com/images/thumb/5/5f/LoremIpsum.djvu/page2-3720px-LoremIpsum.djvu.jpg 1.5x, http://example.com/images/thumb/5/5f/LoremIpsum.djvu/page2-4960px-LoremIpsum.djvu.jpg 2x" /></a></span>\n
00:20:43.505  </p>'
00:20:43.505 
00:20:43.505 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.505 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.505 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.505 === Logs generated by test case
00:20:43.505 [wfDebug] [debug] ParserTestRunner::runTest: running Image with page parameter generated by a template {"private":false}
00:20:43.505 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.505 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/5/5f/LoremIpsum.djvu/page2-2480px-LoremIpsum.djvu.jpg {"private":false}
00:20:43.505 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/5/5f/LoremIpsum.djvu/page2-3720px-LoremIpsum.djvu.jpg {"private":false}
00:20:43.505 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/5/5f/LoremIpsum.djvu/page2-4960px-LoremIpsum.djvu.jpg {"private":false}
00:20:43.505 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.505 ===
00:20:43.505 
00:20:43.505 101) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Images with the "|" character in the comment" ('legacy parser')
00:20:43.505 Failed asserting that two strings are equal.
00:20:43.505 --- Expected
00:20:43.505 +++ Actual
00:20:43.505 @@ @@
00:20:43.505 -'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>An <a rel="nofollow" class="external text" href="http://test/?param1=%7Cleft%7C&amp;param2=%7Cx">external</a> URL</figcaption></figure>'
00:20:43.505 +'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>An <a rel="nofollow" class="external text" href="http://test/?param1=%7Cleft%7C&amp;param2=%7Cx">external</a> URL</figcaption></figure>'
00:20:43.505 
00:20:43.505 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.505 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.505 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.505 === Logs generated by test case
00:20:43.505 [wfDebug] [debug] ParserTestRunner::runTest: running Images with the "|" character in the comment {"private":false}
00:20:43.505 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.505 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:43.505 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/270px-Foobar.jpg {"private":false}
00:20:43.506 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/360px-Foobar.jpg {"private":false}
00:20:43.506 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.506 ===
00:20:43.506 
00:20:43.506 102) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: T146305: Don't break image parsing if language converter markup is in the caption." ('legacy parser')
00:20:43.506 Failed asserting that two strings are equal.
00:20:43.506 --- Expected
00:20:43.506 +++ Actual
00:20:43.506 @@ @@
00:20:43.506 -'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/%D0%94%D0%B0%D1%82%D0%BE%D1%82%D0%B5%D0%BA%D0%B0:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>caption:</figcaption></figure>'
00:20:43.506 +'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/%D0%94%D0%B0%D1%82%D0%BE%D1%82%D0%B5%D0%BA%D0%B0:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>caption:</figcaption></figure>'
00:20:43.506 
00:20:43.506 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.506 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.506 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.506 === Logs generated by test case
00:20:43.506 [wfDebug] [debug] ParserTestRunner::runTest: running T146305: Don't break image parsing if language converter markup is in the caption. {"private":false}
00:20:43.506 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.506 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:43.506 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/270px-Foobar.jpg {"private":false}
00:20:43.506 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/360px-Foobar.jpg {"private":false}
00:20:43.506 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.506 ===
00:20:43.506 
00:20:43.506 103) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: T146305: Don't break image parsing if nested language converter markup is in the caption." ('legacy parser')
00:20:43.506 Failed asserting that two strings are equal.
00:20:43.506 --- Expected
00:20:43.506 +++ Actual
00:20:43.506 @@ @@
00:20:43.507 -'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>blog (hk: WEBJOURNAL, tw: WEBLOG)</figcaption></figure>'
00:20:43.507 +'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>blog (hk: WEBJOURNAL, tw: WEBLOG)</figcaption></figure>'
00:20:43.507 
00:20:43.507 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.507 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.507 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.507 === Logs generated by test case
00:20:43.507 [wfDebug] [debug] ParserTestRunner::runTest: running T146305: Don't break image parsing if nested language converter markup is in the caption. {"private":false}
00:20:43.507 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.507 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:43.507 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/270px-Foobar.jpg {"private":false}
00:20:43.507 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/360px-Foobar.jpg {"private":false}
00:20:43.507 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.507 ===
00:20:43.507 
00:20:43.507 104) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Don't break gallery if language converter markup is inside." ('legacy parser')
00:20:43.507 Failed asserting that two strings are equal.
00:20:43.507 --- Expected
00:20:43.507 +++ Actual
00:20:43.507 @@ @@
00:20:43.507  '<ul class="gallery mw-gallery-traditional">\n
00:20:43.507  		<li class="gallerybox" style="width: 155px">\n
00:20:43.507 -			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="bat" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.507 +			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="bat" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.507  			<div class="gallerytext">\n
00:20:43.507 -<p><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description" title="bar"><img alt="foo" src="http://example.com/images/thumb/3/3a/Foobar.jpg/20px-Foobar.jpg" decoding="async" width="20" height="2" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/30px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/40px-Foobar.jpg 2x" /></a></span>\n
00:20:43.507 +<p><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" title="bar"><img alt="foo" src="http://example.com/images/thumb/3/3a/Foobar.jpg/20px-Foobar.jpg" decoding="async" width="20" height="2" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/30px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/40px-Foobar.jpg 2x" /></a></span>\n
00:20:43.507  </p>\n
00:20:43.507  			</div>\n
00:20:43.507  		</li>\n
00:20:43.507  		<li class="gallerybox" style="width: 155px">\n
00:20:43.507 -			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="galleryalt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.507 +			<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="galleryalt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" decoding="async" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></span></div>\n
00:20:43.508  			<div class="gallerytext">\n
00:20:43.508  <p>This is a test template\n
00:20:43.508  </p>\n
00:20:43.508 
00:20:43.508 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.508 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.508 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.508 === Logs generated by test case
00:20:43.508 [wfDebug] [debug] ParserTestRunner::runTest: running Don't break gallery if language converter markup is inside. {"private":false}
00:20:43.508 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.508 [wfDebug] [debug] ImageGalleryBase::factory called without context. Using RequestContext::getMain() {"private":false}
00:20:43.508 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/20px-Foobar.jpg {"private":false}
00:20:43.508 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/30px-Foobar.jpg {"private":false}
00:20:43.508 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/40px-Foobar.jpg {"private":false}
00:20:43.508 [wfDebug] [debug] ImageGallery::add Foobar.jpg {"private":false}
00:20:43.508 [wfDebug] [debug] ImageGallery::add Foobar.jpg {"private":false}
00:20:43.508 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/120px-Foobar.jpg {"private":false}
00:20:43.508 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:43.508 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/240px-Foobar.jpg {"private":false}
00:20:43.508 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/120px-Foobar.jpg {"private":false}
00:20:43.508 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:43.508 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/240px-Foobar.jpg {"private":false}
00:20:43.508 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.508 ===
00:20:43.508 
00:20:43.508 105) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Free external link invading image caption" ('legacy parser')
00:20:43.508 Failed asserting that two strings are equal.
00:20:43.508 --- Expected
00:20:43.508 +++ Actual
00:20:43.508 @@ @@
00:20:43.508 -'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>hello</figcaption></figure>'
00:20:43.508 +'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>hello</figcaption></figure>'
00:20:43.508 
00:20:43.508 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.508 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.508 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.508 === Logs generated by test case
00:20:43.508 [wfDebug] [debug] ParserTestRunner::runTest: running Free external link invading image caption {"private":false}
00:20:43.508 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.508 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:43.508 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/270px-Foobar.jpg {"private":false}
00:20:43.508 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/360px-Foobar.jpg {"private":false}
00:20:43.508 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.508 ===
00:20:43.508 
00:20:43.508 106) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: 1. Treebuilder fixup of formatting elt" ('legacy parser')
00:20:43.509 Failed asserting that two strings are equal.
00:20:43.509 --- Expected
00:20:43.509 +++ Actual
00:20:43.509 @@ @@
00:20:43.509  <td>\n
00:20:43.509  <p><small>\n
00:20:43.509  </small></p><small>\n
00:20:43.509 -<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description" title="Test"><img alt="Test" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption>Test</figcaption></figure>\n
00:20:43.509 +<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" title="Test"><img alt="Test" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a><figcaption>Test</figcaption></figure>\n
00:20:43.509  </small><p><small></small>\n
00:20:43.509  </p>\n
00:20:43.509  </td></tr></tbody></table>'
00:20:43.509 
00:20:43.509 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.509 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.509 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.509 === Logs generated by test case
00:20:43.509 [wfDebug] [debug] ParserTestRunner::runTest: running 1. Treebuilder fixup of formatting elt {"private":false}
00:20:43.509 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.509 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.509 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.509 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.509 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.509 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.509 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.509 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.509 ===
00:20:43.509 
00:20:43.509 107) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: 2. Treebuilder fixup of formatting elt" ('legacy parser')
00:20:43.509 Failed asserting that two strings are equal.
00:20:43.509 --- Expected
00:20:43.509 +++ Actual
00:20:43.509 @@ @@
00:20:43.509 -'<p><b>foo</b></p><b><figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>caption</figcaption></figure></b><p><b>bar</b>\n
00:20:43.509 -</p><small><figure class="mw-halign-right" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg" decoding="async" width="300" height="34" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/450px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/600px-Foobar.jpg 2x" /></a><figcaption></figcaption></figure></small>'
00:20:43.509 +'<p><b>foo</b></p><b><figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>caption</figcaption></figure></b><p><b>bar</b>\n
00:20:43.509 +</p><small><figure class="mw-halign-right" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg" decoding="async" width="300" height="34" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/450px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/600px-Foobar.jpg 2x" /></a><figcaption></figcaption></figure></small>'
00:20:43.509 
00:20:43.509 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.509 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.509 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.509 === Logs generated by test case
00:20:43.509 [wfDebug] [debug] ParserTestRunner::runTest: running 2. Treebuilder fixup of formatting elt {"private":false}
00:20:43.510 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.510 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:43.510 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/270px-Foobar.jpg {"private":false}
00:20:43.510 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/360px-Foobar.jpg {"private":false}
00:20:43.510 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/300px-Foobar.jpg {"private":false}
00:20:43.510 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/450px-Foobar.jpg {"private":false}
00:20:43.510 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/600px-Foobar.jpg {"private":false}
00:20:43.510 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.510 ===
00:20:43.510 
00:20:43.510 108) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: 3. Treebuilder fixup of formatting elt" ('legacy parser')
00:20:43.510 Failed asserting that two strings are equal.
00:20:43.510 --- Expected
00:20:43.510 +++ Actual
00:20:43.510 @@ @@
00:20:43.510 -'<p><small><b>foo</b></small></p><small><b><figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>caption</figcaption></figure></b></small><p><small><b>bar</b></small></p>'
00:20:43.510 +'<p><small><b>foo</b></small></p><small><b><figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>caption</figcaption></figure></b></small><p><small><b>bar</b></small></p>'
00:20:43.510 
00:20:43.510 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.510 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.510 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.510 === Logs generated by test case
00:20:43.510 [wfDebug] [debug] ParserTestRunner::runTest: running 3. Treebuilder fixup of formatting elt {"private":false}
00:20:43.510 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.510 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:43.510 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/270px-Foobar.jpg {"private":false}
00:20:43.510 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/360px-Foobar.jpg {"private":false}
00:20:43.510 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.510 ===
00:20:43.510 
00:20:43.510 109) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: 4. Treebuilder fixup of formatting elt: formatting tags around captionless images" ('legacy parser')
00:20:43.510 Failed asserting that two strings are equal.
00:20:43.510 --- Expected
00:20:43.510 +++ Actual
00:20:43.510 @@ @@
00:20:43.510 -'<b><small><figure class="mw-halign-right" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg" decoding="async" width="300" height="34" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/450px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/600px-Foobar.jpg 2x" /></a><figcaption></figcaption></figure></small></b>'
00:20:43.510 +'<b><small><figure class="mw-halign-right" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg" decoding="async" width="300" height="34" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/450px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/600px-Foobar.jpg 2x" /></a><figcaption></figcaption></figure></small></b>'
00:20:43.510 
00:20:43.510 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.510 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.510 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.510 === Logs generated by test case
00:20:43.510 [wfDebug] [debug] ParserTestRunner::runTest: running 4. Treebuilder fixup of formatting elt: formatting tags around captionless images {"private":false}
00:20:43.510 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.510 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/300px-Foobar.jpg {"private":false}
00:20:43.510 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/450px-Foobar.jpg {"private":false}
00:20:43.510 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/600px-Foobar.jpg {"private":false}
00:20:43.510 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.510 ===
00:20:43.510 
00:20:43.510 110) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Image: empty alt attribute (T50924)" ('legacy parser')
00:20:43.511 Failed asserting that two strings are equal.
00:20:43.511 --- Expected
00:20:43.511 +++ Actual
00:20:43.511 @@ @@
00:20:43.511 -'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>bar</figcaption></figure>'
00:20:43.511 +'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>bar</figcaption></figure>'
00:20:43.511 
00:20:43.511 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.511 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.511 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.511 === Logs generated by test case
00:20:43.511 [wfDebug] [debug] ParserTestRunner::runTest: running Image: empty alt attribute (T50924) {"private":false}
00:20:43.511 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.511 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:43.511 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/270px-Foobar.jpg {"private":false}
00:20:43.511 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/360px-Foobar.jpg {"private":false}
00:20:43.511 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.511 ===
00:20:43.511 
00:20:43.511 111) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Image: Invalid title as link" ('legacy parser')
00:20:43.511 Failed asserting that two strings are equal.
00:20:43.511 --- Expected
00:20:43.511 +++ Actual
00:20:43.511 @@ @@
00:20:43.511 -'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" class="mw-file-description" title="link=&lt;"><img alt="link=&lt;" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:43.511 +'<p><span class="mw-default-size" typeof="mw:Image"><a href="/wiki/File:Foobar.jpg" title="link=&lt;"><img alt="link=&lt;" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a></span>\n
00:20:43.511  </p>\n
00:20:43.511 -<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>link=&lt;</figcaption></figure>'
00:20:43.511 +<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>link=&lt;</figcaption></figure>'
00:20:43.511 
00:20:43.511 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.511 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.511 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.511 === Logs generated by test case
00:20:43.511 [wfDebug] [debug] ParserTestRunner::runTest: running Image: Invalid title as link {"private":false}
00:20:43.511 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.511 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.511 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.511 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.511 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.511 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.512 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.512 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:43.512 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/270px-Foobar.jpg {"private":false}
00:20:43.512 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/360px-Foobar.jpg {"private":false}
00:20:43.512 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.512 ===
00:20:43.512 
00:20:43.512 112) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Image with page parameter and invalid link" ('legacy parser')
00:20:43.512 Failed asserting that two strings are equal.
00:20:43.512 --- Expected
00:20:43.512 +++ Actual
00:20:43.512 @@ @@
00:20:43.512 -'<p><span class="mw-default-size" typeof="mw:Image"><a href="/index.php?title=File:LoremIpsum.djvu&amp;page=2" class="mw-file-description" title="link=&lt;"><img alt="link=&lt;" src="http://example.com/images/thumb/5/5f/LoremIpsum.djvu/page2-2480px-LoremIpsum.djvu.jpg" decoding="async" width="2480" height="3508" srcset="http://example.com/images/thumb/5/5f/LoremIpsum.djvu/page2-3720px-LoremIpsum.djvu.jpg 1.5x, http://example.com/images/thumb/5/5f/LoremIpsum.djvu/page2-4960px-LoremIpsum.djvu.jpg 2x" /></a></span>\n
00:20:43.512 +'<p><span class="mw-default-size" typeof="mw:Image"><a href="/index.php?title=File:LoremIpsum.djvu&amp;page=2" title="link=&lt;"><img alt="link=&lt;" src="http://example.com/images/thumb/5/5f/LoremIpsum.djvu/page2-2480px-LoremIpsum.djvu.jpg" decoding="async" width="2480" height="3508" srcset="http://example.com/images/thumb/5/5f/LoremIpsum.djvu/page2-3720px-LoremIpsum.djvu.jpg 1.5x, http://example.com/images/thumb/5/5f/LoremIpsum.djvu/page2-4960px-LoremIpsum.djvu.jpg 2x" /></a></span>\n
00:20:43.512  </p>'
00:20:43.512 
00:20:43.512 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.512 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.512 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.512 === Logs generated by test case
00:20:43.512 [wfDebug] [debug] ParserTestRunner::runTest: running Image with page parameter and invalid link {"private":false}
00:20:43.512 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.512 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/5/5f/LoremIpsum.djvu/page2-2480px-LoremIpsum.djvu.jpg {"private":false}
00:20:43.512 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/5/5f/LoremIpsum.djvu/page2-3720px-LoremIpsum.djvu.jpg {"private":false}
00:20:43.512 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/5/5f/LoremIpsum.djvu/page2-4960px-LoremIpsum.djvu.jpg {"private":false}
00:20:43.512 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.512 ===
00:20:43.512 
00:20:43.512 113) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Magic links inside image captions (autolinked)" ('legacy parser')
00:20:43.512 Failed asserting that two strings are equal.
00:20:43.512 --- Expected
00:20:43.512 +++ Actual
00:20:43.512 @@ @@
00:20:43.512 -'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a></figcaption></figure>\n
00:20:43.513 -<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption><a class="external mw-magiclink-rfc" rel="nofollow" href="https://tools.ietf.org/html/rfc1234">RFC 1234</a></figcaption></figure>\n
00:20:43.513 -<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption><a class="external mw-magiclink-pmid" rel="nofollow" href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract">PMID 1234</a></figcaption></figure>\n
00:20:43.513 -<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption><a href="/wiki/Special:BookSources/123456789X" class="internal mw-magiclink-isbn">ISBN 123456789x</a></figcaption></figure>'
00:20:43.513 +'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a></figcaption></figure>\n
00:20:43.513 +<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption><a class="external mw-magiclink-rfc" rel="nofollow" href="https://tools.ietf.org/html/rfc1234">RFC 1234</a></figcaption></figure>\n
00:20:43.513 +<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption><a class="external mw-magiclink-pmid" rel="nofollow" href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract">PMID 1234</a></figcaption></figure>\n
00:20:43.513 +<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption><a href="/wiki/Special:BookSources/123456789X" class="internal mw-magiclink-isbn">ISBN 123456789x</a></figcaption></figure>'
00:20:43.513 
00:20:43.513 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.513 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.513 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.513 === Logs generated by test case
00:20:43.513 [wfDebug] [debug] ParserTestRunner::runTest: running Magic links inside image captions (autolinked) {"private":false}
00:20:43.513 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.513 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:43.513 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/270px-Foobar.jpg {"private":false}
00:20:43.513 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/360px-Foobar.jpg {"private":false}
00:20:43.513 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:43.513 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/270px-Foobar.jpg {"private":false}
00:20:43.513 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/360px-Foobar.jpg {"private":false}
00:20:43.513 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:43.513 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/270px-Foobar.jpg {"private":false}
00:20:43.513 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/360px-Foobar.jpg {"private":false}
00:20:43.513 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:43.513 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/270px-Foobar.jpg {"private":false}
00:20:43.513 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/360px-Foobar.jpg {"private":false}
00:20:43.513 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.513 ===
00:20:43.513 
00:20:43.513 114) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Interwiki links inside image captions" ('legacy parser')
00:20:43.513 Failed asserting that two strings are equal.
00:20:43.513 --- Expected
00:20:43.513 +++ Actual
00:20:43.513 @@ @@
00:20:43.513 -'<figure class="mw-default-size mw-halign-right" typeof="mw:Image/Thumb"><a href="/wiki/Datei:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption><a href="http://en.wikipedia.org/wiki/Foo" class="extiw" title="wikipedia:Foo">Wikipedia:Foo</a> bar</figcaption></figure>'
00:20:43.513 +'<figure class="mw-default-size mw-halign-right" typeof="mw:Image/Thumb"><a href="/wiki/Datei:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption><a href="http://en.wikipedia.org/wiki/Foo" class="extiw" title="wikipedia:Foo">Wikipedia:Foo</a> bar</figcaption></figure>'
00:20:43.513 
00:20:43.513 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.513 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.513 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.513 === Logs generated by test case
00:20:43.513 [wfDebug] [debug] ParserTestRunner::runTest: running Interwiki links inside image captions {"private":false}
00:20:43.514 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.514 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:43.514 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/270px-Foobar.jpg {"private":false}
00:20:43.514 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/360px-Foobar.jpg {"private":false}
00:20:43.514 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.514 ===
00:20:43.514 
00:20:43.514 115) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: File in link scenarios" ('legacy parser')
00:20:43.514 Failed asserting that two strings are equal.
00:20:43.514 --- Expected
00:20:43.514 +++ Actual
00:20:43.514 @@ @@
00:20:43.514 -'<p><a rel="nofollow" class="external text" href="http://www.google.com"><span class="mw-default-size" typeof="mw:Image"></span></a><a href="/wiki/File:Foobar.jpg" class="mw-file-description" title="123"><img alt="123" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>\n
00:20:43.514 +'<p><a rel="nofollow" class="external text" href="http://www.google.com"><span class="mw-default-size" typeof="mw:Image"></span></a><a href="/wiki/File:Foobar.jpg" title="123"><img alt="123" src="http://example.com/images/3/3a/Foobar.jpg" decoding="async" width="1941" height="220" /></a>\n
00:20:43.514  </p>\n
00:20:43.514 -<a rel="nofollow" class="external text" href="http://www.google.com"></a><figure class="mw-default-size" typeof="mw:Image/Thumb"><a rel="nofollow" class="external text" href="http://www.google.com"></a><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>123</figcaption></figure>'
00:20:43.514 +<a rel="nofollow" class="external text" href="http://www.google.com"></a><figure class="mw-default-size" typeof="mw:Image/Thumb"><a rel="nofollow" class="external text" href="http://www.google.com"></a><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>123</figcaption></figure>'
00:20:43.514 
00:20:43.514 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.514 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.514 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.514 === Logs generated by test case
00:20:43.514 [wfDebug] [debug] ParserTestRunner::runTest: running File in link scenarios {"private":false}
00:20:43.514 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.514 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.514 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.514 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.514 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.514 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg {"private":false}
00:20:43.514 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.514 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:43.514 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/270px-Foobar.jpg {"private":false}
00:20:43.514 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/360px-Foobar.jpg {"private":false}
00:20:43.514 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.514 ===
00:20:43.514 
00:20:43.514 116) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Thumbnail output" ('legacy parser')
00:20:43.514 Failed asserting that two strings are equal.
00:20:43.514 --- Expected
00:20:43.514 +++ Actual
00:20:43.514 @@ @@
00:20:43.514 -'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Thumb.png" class="mw-file-description"><img alt="Thumb.png" src="http://example.com/images/e/ea/Thumb.png" decoding="async" width="135" height="135" /></a><figcaption></figcaption></figure>'
00:20:43.514 +'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Thumb.png"><img alt="Thumb.png" src="http://example.com/images/e/ea/Thumb.png" decoding="async" width="135" height="135" /></a><figcaption></figcaption></figure>'
00:20:43.514 
00:20:43.514 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.514 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.515 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.515 === Logs generated by test case
00:20:43.515 [wfDebug] [debug] ParserTestRunner::runTest: running Thumbnail output {"private":false}
00:20:43.515 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.515 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/e/ea/Thumb.png/135px-Thumb.png {"private":false}
00:20:43.515 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.515 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/e/ea/Thumb.png/135px-Thumb.png {"private":false}
00:20:43.515 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.515 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/e/ea/Thumb.png/135px-Thumb.png {"private":false}
00:20:43.515 [wfDebug] [debug] MockImageHandler::doFakeTransform: returning unscaled image {"private":false}
00:20:43.515 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.515 ===
00:20:43.515 
00:20:43.515 117) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: File with caption with pipe in extension tag attribute" ('legacy parser')
00:20:43.515 Failed asserting that two strings are equal.
00:20:43.515 --- Expected
00:20:43.515 +++ Actual
00:20:43.515 @@ @@
00:20:43.515 -'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>Test  123</figcaption></figure>'
00:20:43.515 +'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>Test  123</figcaption></figure>'
00:20:43.515 
00:20:43.515 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.515 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.515 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.515 === Logs generated by test case
00:20:43.515 [wfDebug] [debug] ParserTestRunner::runTest: running File with caption with pipe in extension tag attribute {"private":false}
00:20:43.515 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.515 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:43.515 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/270px-Foobar.jpg {"private":false}
00:20:43.515 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/360px-Foobar.jpg {"private":false}
00:20:43.515 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.515 ===
00:20:43.515 
00:20:43.515 118) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: File with table in caption with extra table attribute spaces" ('legacy parser')
00:20:43.515 Failed asserting that two strings are equal.
00:20:43.515 --- Expected
00:20:43.515 +++ Actual
00:20:43.515 @@ @@
00:20:43.515 -'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption><table>  <tbody><tr> <td>hi </td></tr></tbody></table></figcaption></figure>'
00:20:43.516 +'<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption><table>  <tbody><tr> <td>hi </td></tr></tbody></table></figcaption></figure>'
00:20:43.516 
00:20:43.516 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.516 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.516 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.516 === Logs generated by test case
00:20:43.516 [wfDebug] [debug] ParserTestRunner::runTest: running File with table in caption with extra table attribute spaces {"private":false}
00:20:43.516 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.516 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:43.516 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/270px-Foobar.jpg {"private":false}
00:20:43.516 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/360px-Foobar.jpg {"private":false}
00:20:43.516 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.516 ===
00:20:43.516 
00:20:43.516 119) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: File in formatting element violating content model" ('legacy parser')
00:20:43.516 Failed asserting that two strings are equal.
00:20:43.516 --- Expected
00:20:43.516 +++ Actual
00:20:43.516 @@ @@
00:20:43.516 -'<p><i></i></p><figure class="mw-default-size" typeof="mw:Image/Thumb"><i><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption></figcaption></i></figure><p class="mw-empty-elt"></p>'
00:20:43.516 +'<p><i></i></p><figure class="mw-default-size" typeof="mw:Image/Thumb"><i><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption></figcaption></i></figure><p class="mw-empty-elt"></p>'
00:20:43.516 
00:20:43.516 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.516 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.516 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.516 === Logs generated by test case
00:20:43.516 [wfDebug] [debug] ParserTestRunner::runTest: running File in formatting element violating content model {"private":false}
00:20:43.516 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.516 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:43.516 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/270px-Foobar.jpg {"private":false}
00:20:43.516 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/360px-Foobar.jpg {"private":false}
00:20:43.516 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.516 ===
00:20:43.516 
00:20:43.516 120) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Table in figcaption nested in table" ('legacy parser')
00:20:43.516 Failed asserting that two strings are equal.
00:20:43.516 --- Expected
00:20:43.516 +++ Actual
00:20:43.516 @@ @@
00:20:43.516  <tbody><tr>\n
00:20:43.516  <td>foo\n
00:20:43.516  </td>\n
00:20:43.516 -<td><figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption><table> <tbody><tr> <td>bar </td></tr></tbody></table></figcaption></figure>\n
00:20:43.516 +<td><figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption><table> <tbody><tr> <td>bar </td></tr></tbody></table></figcaption></figure>\n
00:20:43.516  </td></tr></tbody></table>'
00:20:43.516 
00:20:43.516 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.516 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.516 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.517 === Logs generated by test case
00:20:43.517 [wfDebug] [debug] ParserTestRunner::runTest: running Table in figcaption nested in table {"private":false}
00:20:43.517 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.517 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:43.517 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/270px-Foobar.jpg {"private":false}
00:20:43.517 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/360px-Foobar.jpg {"private":false}
00:20:43.517 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.517 ===
00:20:43.517 
00:20:43.517 121) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Files with case sensitive media options" ('legacy parser')
00:20:43.517 Failed asserting that two strings are equal.
00:20:43.517 --- Expected
00:20:43.517 +++ Actual
00:20:43.517 @@ @@
00:20:43.517 -'<figure class="mw-default-size mw-halign-left" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption></figcaption></figure>\n
00:20:43.517 -<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg" class="mw-file-description"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>Left</figcaption></figure>'
00:20:43.517 +'<figure class="mw-default-size mw-halign-left" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption></figcaption></figure>\n
00:20:43.517 +<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" decoding="async" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a><figcaption>Left</figcaption></figure>'
00:20:43.517 
00:20:43.517 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:20:43.517 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.517 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:63
00:20:43.517 === Logs generated by test case
00:20:43.517 [wfDebug] [debug] ParserTestRunner::runTest: running Files with case sensitive media options {"private":false}
00:20:43.517 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:20:43.517 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:43.517 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/270px-Foobar.jpg {"private":false}
00:20:43.517 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/360px-Foobar.jpg {"private":false}
00:20:43.517 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/180px-Foobar.jpg {"private":false}
00:20:43.517 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/270px-Foobar.jpg {"private":false}
00:20:43.517 [wfDebug] [debug] File::transform: Doing stat for mwstore://local-backend/local-thumb/3/3a/Foobar.jpg/360px-Foobar.jpg {"private":false}
00:20:43.517 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:20:43.517 ===
00:20:43.517 
00:20:43.517 FAILURES!
00:20:43.517 Tests: 9557, Assertions: 18402, Failures: 121, Skipped: 2929.
00:20:43.528

Event Timeline

kostajh triaged this task as Unbreak Now! priority.Mar 3 2022, 10:00 AM
kostajh added a project: GrowthExperiments.

Marking as UBN since it's seemingly blocking merge of GrowthExperiments patches to wmf.24, not sure if this is happening with other extensions as well.

As far as I can tell, this is a consequence of something @hashar has been warning us against - namely the dependence on CI level of GrowthExperiments to parsoid. This will pull parsoid master in the tests instead of the version of parsoid used on wmf.26, and parsoid master has https://gerrit.wikimedia.org/r/c/mediawiki/services/parsoid/+/763858 included in it, which is almost surely what breaks these tests.
As to how to fix that.... no idea :(

TLDR: branch wmf/1.38.0-wmf.24 in mediawiki/services/parsoid

The GrowthExperiments change targets wmf/1.38.0-wmf.24. CI injects mediawiki/services/parsoid as a dependency and the repository is thus cloned in the build.

https://integration.wikimedia.org/ci/job/quibble-vendor-mysql-php72-noselenium-docker/ uses mediawiki/vendor for the dependencies which include Parsoid at the version defined in mediawiki/core. But since we have cloned mediawiki/services/parsoid that one is used instead, so something has changed in master that breaks the parser tests.

From the build log:

00:00:31.504 INFO:zuul.Cloner.mediawiki/services/parsoid:Creating repo mediawiki/services/parsoid from upstream https://gerrit.wikimedia.org/r/mediawiki/services/parsoid
00:00:37.436 INFO:zuul.Cloner.mediawiki/services/parsoid:upstream repo is missing branch wmf/1.38.0-wmf.24
00:00:37.682 INFO:zuul.Cloner.mediawiki/services/parsoid:Falling back to branch master
00:00:37.711 INFO:zuul.Cloner.mediawiki/services/parsoid:Prepared mediawiki/services/parsoid repo with branch master at commit ef0203cb47c8dc1e5f9b030d48a9506d400f191d

Given that master is hardcoded in our CI system.

A potential solution is thus to create a wmf/1.38.0-wmf.24 branch in mediawiki/services/parsoid which point to the same commit as whatever version is provided by mediawiki/core / mediawiki/vendor. When CI clones mediawiki/services/parsoid it will attempt to fetch the branch targetted by the GrowthExperiments change and check it out if it exists, else it will fall back to master (which is what it does in that build).

Change 767695 had a related patch set uploaded (by Hashar; author: Hashar):

[mediawiki/services/parsoid@refs/meta/config] Allow manual creation of wmf/ branches

https://gerrit.wikimedia.org/r/767695

Change 767695 merged by Hashar:

[mediawiki/services/parsoid@refs/meta/config] Allow manual creation of wmf/ branches

https://gerrit.wikimedia.org/r/767695

Change 767700 had a related patch set uploaded (by Hashar; author: Hashar):

[mediawiki/services/parsoid@refs/meta/config] Review access change

https://gerrit.wikimedia.org/r/767700

Change 767700 merged by Hashar:

[mediawiki/services/parsoid@refs/meta/config] Review access change

https://gerrit.wikimedia.org/r/767700

TLDR: branch wmf/1.38.0-wmf.24 in mediawiki/services/parsoid

The GrowthExperiments change targets wmf/1.38.0-wmf.24. CI injects mediawiki/services/parsoid as a dependency and the repository is thus cloned in the build.

https://integration.wikimedia.org/ci/job/quibble-vendor-mysql-php72-noselenium-docker/ uses mediawiki/vendor for the dependencies which include Parsoid at the version defined in mediawiki/core. But since we have cloned mediawiki/services/parsoid that one is used instead, so something has changed in master that breaks the parser tests.

From the build log:

00:00:31.504 INFO:zuul.Cloner.mediawiki/services/parsoid:Creating repo mediawiki/services/parsoid from upstream https://gerrit.wikimedia.org/r/mediawiki/services/parsoid
00:00:37.436 INFO:zuul.Cloner.mediawiki/services/parsoid:upstream repo is missing branch wmf/1.38.0-wmf.24
00:00:37.682 INFO:zuul.Cloner.mediawiki/services/parsoid:Falling back to branch master
00:00:37.711 INFO:zuul.Cloner.mediawiki/services/parsoid:Prepared mediawiki/services/parsoid repo with branch master at commit ef0203cb47c8dc1e5f9b030d48a9506d400f191d

Given that master is hardcoded in our CI system.

A potential solution is thus to create a wmf/1.38.0-wmf.24 branch in mediawiki/services/parsoid which point to the same commit as whatever version is provided by mediawiki/core / mediawiki/vendor. When CI clones mediawiki/services/parsoid it will attempt to fetch the branch targetted by the GrowthExperiments change and check it out if it exists, else it will fall back to master (which is what it does in that build).

I see, thanks for tracking that down.

Is there anything else we need to from the GrowthExperiments side, or should a recheck work with the patches that you've created and that have been merged?

@ihurbain and I paired on it, we have created the wmf branch on the parsoid repo with:

git push origin e95187049cd9bf7c19bda5fe05d1172f6a559369:refs/heads/wmf/1.38.0-wmf.24

That commit is pointed to by the parsoid tag currently used in mediawiki/vendor

She has done a recheck on https://gerrit.wikimedia.org/r/c/mediawiki/extensions/GrowthExperiments/+/767690 which passed \o/

Some follow up to be made:

  • Isabelle was not able to create the branch, she got a You need 'Create' rights to create new references error from Gerrit
  • We gotta determinate if we want to wmf branch parsoid
  • * the wmf branch would have to be created automatically on Tuesday by our TrainBranchBot, but it branches from the master branch rather than a tag.
  • Alternatively:
    • rethink how we ship parsoid to wmf branches
    • maybe stop cloning mediawiki/services/parsoid on CI and solely rely on the version in vendor, but we need some code added to enable the parsoid service wiring in MediaWiki

So more discussions have to happen with Content Transformer team. At least the immediate issue has been solved :)

kostajh lowered the priority of this task from Unbreak Now! to Needs Triage.Mar 7 2022, 12:49 PM
kostajh moved this task from Inbox to Triaged on the Growth-Team board.

@ihurbain and I paired on it, we have created the wmf branch on the parsoid repo with:

git push origin e95187049cd9bf7c19bda5fe05d1172f6a559369:refs/heads/wmf/1.38.0-wmf.24

That commit is pointed to by the parsoid tag currently used in mediawiki/vendor

She has done a recheck on https://gerrit.wikimedia.org/r/c/mediawiki/extensions/GrowthExperiments/+/767690 which passed \o/

Some follow up to be made:

  • Isabelle was not able to create the branch, she got a You need 'Create' rights to create new references error from Gerrit
  • We gotta determinate if we want to wmf branch parsoid
  • * the wmf branch would have to be created automatically on Tuesday by our TrainBranchBot, but it branches from the master branch rather than a tag.
  • Alternatively:
    • rethink how we ship parsoid to wmf branches
    • maybe stop cloning mediawiki/services/parsoid on CI and solely rely on the version in vendor, but we need some code added to enable the parsoid service wiring in MediaWiki

So more discussions have to happen with Content Transformer team. At least the immediate issue has been solved :)

Thank you very much for your quick work on fixing this.

I don't think the Growth-Team has opinions on the above, other than needing to have Parsoid available for our Selenium tests. So I am moving it to our "Triaged" column and will let @hashar and @ihurbain follow up as they see fit; please let us know if you want comments from Growth team.

See also T287419: `mediawiki-core-php72-phan-docker` job runs `composer install` instead of using packages from mediawiki/vendor.

I'm not sure why you would ever clone master directly from the parsoid repo? You should be almost always be using the version from mediawiki-vendor instead. Why doesn't that work?

@cscott quoting you from Slack a few months ago: "as mentioned above we also have a little bit of magic that says when parsoid is loaded "as an extension" in CI then we also use the latest Parsoid source (by playing autoloader games), instead of just pulling the Parsoid composer package from mediawiki-vendor. So 'parsoid as a dependency' also means 'use the latest parsoid, not the mediawiki-vendor parsoid'. But that's only relevant for extensions which include parsoid-specific support, which is only Disambiguator right now (Cite and Translate are coming soon, though)". This is the case that we have here: Growth-Experiments has an explicit dependency on Parsoid in the CI: see https://gerrit.wikimedia.org/r/plugins/gitiles/integration/config/+/refs/heads/master/zuul/parameter_functions.py#348 - that's since December: https://phabricator.wikimedia.org/rCICF91612b8841a17903726eec9b9d27bd4d1fcd4f3c. Whether that's actually necessary for that purpose or whether there's a way around that, I'm not enough of a Selenium user to say :)

This is the case that we have here: Growth-Experiments has an explicit dependency on Parsoid in the CI: see https://gerrit.wikimedia.org/r/plugins/gitiles/integration/config/+/refs/heads/master/zuul/parameter_functions.py#348 - that's since December: https://phabricator.wikimedia.org/rCICF91612b8841a17903726eec9b9d27bd4d1fcd4f3c. Whether that's actually necessary for that purpose or whether there's a way around that, I'm not enough of a Selenium user to say :)

For GrowthExperiments, we need VisualEditor to work, and VisualEditor needs a functioning Parsoid service to talk to. I don't know if the dependency on Parsoid in CI is necessary; we could try removing it to see if it makes a difference. We also currently rely on this hack https://github.com/wikimedia/mediawiki-extensions-GrowthExperiments/blob/master/tests/selenium/fixtures/GrowthExperiments.LocalSettings.php#L61-L66 to make things work as well. I'd love for VisualEditor + Parsoid to "just work" for extensions that want to rely on VE+Parsoid in browser tests in CI.

I was probably just confused. I was thinking of "clone master" as a distinct thing from "cloning parsoid from CI", because you can use Depends-On clauses in CI to get things which are very different from 'master'. So as long as you're not literally cloning master but instead using jenkins to checkout from gerrit that seems fine. In T287419 CI is instead doing a composer install instead of checking out from gerrit, which is problematic in that same way that explicitly checking out from git is. tl;dr there should only be two "versions" of parsoid from CI's perspective: (a) the "released" parsoid from mediawiki-vendor and (b) the patches on top of git version you get from gerrit after gerrit has resolved all of its dependencies.

From hashar's log above:

00:00:31.504 INFO:zuul.Cloner.mediawiki/services/parsoid:Creating repo mediawiki/services/parsoid from upstream https://gerrit.wikimedia.org/r/mediawiki/services/parsoid
00:00:37.436 INFO:zuul.Cloner.mediawiki/services/parsoid:upstream repo is missing branch wmf/1.38.0-wmf.24
00:00:37.682 INFO:zuul.Cloner.mediawiki/services/parsoid:Falling back to branch master
00:00:37.711 INFO:zuul.Cloner.mediawiki/services/parsoid:Prepared mediawiki/services/parsoid repo with branch master at commit ef0203cb47c8dc1e5f9b030d48a9506d400f191d

It seems that the root cause here was that version (b) above wasn't available because gerrit was unable to resolve the proper "patches on top of git" version in the face of a branch. I don't fully understand what's going on here, but it seems creating the branch was reasonable? We don't typically branch parsoid for -wmf.* releases (we do *tag* parsoid, but that's where version (a) "the released version of parsoid from mediawiki-vendor" is typically used).

It seems that this is only an issue for backports in packages which depend on Parsoid? Should we update our docs to say "if you backport and extension to a wmf.X branch and your extension depends on Parsoid you should create a wmf.X branch in Parsoid which points to the same "released" version of parsoid that's in mediawiki-vendor for the given wmf.X branch." That seems to be what @hashar/@ihurbain did and that seems to be correct.

Eventually I don't think we'll need the explicit dependency on Parsoid in CI, so I expect this to be a short term hack.

I think I've found another example of "surprising" CI interaction with GrowthExperiements: https://gerrit.wikimedia.org/r/c/mediawiki/core/+/764922 which is failing only on the selenium tests for GrowthExperiements, but not in a way which is very clear from the logs.

kostajh triaged this task as Unbreak Now! priority.Mar 18 2022, 12:09 PM

A new failure (on https://gerrit.wikimedia.org/r/c/mediawiki/extensions/GrowthExperiments/+/763718):

00:19:33.046 There were 12 failures:
00:19:33.046 
00:19:33.046 1) ParserIntegrationTest::testParse with data set "parserTests.txt: Link with double quotes in title part (literal) and alternate part (interpreted)" ('legacy parser')
00:19:33.046 Failed asserting that two strings are equal.
00:19:33.047 --- Expected
00:19:33.047 +++ Actual
00:19:33.047 @@ @@
00:19:33.047 -'<p><span class="mw-default-size" typeof="mw:Error mw:Image"><a href="/index.php?title=Special:Upload&amp;wpDestFile=Denys_Savchenko_%27%27Pentecoste%27%27.jpg" class="new" title="File:Denys Savchenko &#39;&#39;Pentecoste&#39;&#39;.jpg"><span>File:Denys Savchenko <i>Pentecoste</i>.jpg</span></a></span>\n
00:19:33.048 +'<p><span class="mw-default-size" typeof="mw:Error mw:Image"><a href="/index.php?title=Special:Upload&amp;wpDestFile=Denys_Savchenko_%27%27Pentecoste%27%27.jpg" class="new" title="File:Denys Savchenko &#39;&#39;Pentecoste&#39;&#39;.jpg"><span class="mw-broken-media">File:Denys Savchenko <i>Pentecoste</i>.jpg</span></a></span>\n
00:19:33.048  </p><p><a href="/index.php?title=%27%27Pentecoste%27%27&amp;action=edit&amp;redlink=1" class="new" title="&#39;&#39;Pentecoste&#39;&#39; (page does not exist)">''Pentecoste''</a>\n
00:19:33.048  </p><p><a href="/index.php?title=%27%27Pentecoste%27%27&amp;action=edit&amp;redlink=1" class="new" title="&#39;&#39;Pentecoste&#39;&#39; (page does not exist)">Pentecoste</a>\n
00:19:33.048  </p><p><a href="/index.php?title=%27%27Pentecoste%27%27&amp;action=edit&amp;redlink=1" class="new" title="&#39;&#39;Pentecoste&#39;&#39; (page does not exist)"><i>Pentecoste</i></a>\n
00:19:33.048  </p>'
00:19:33.048 
00:19:33.048 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:19:33.048 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:69
00:19:33.048 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:69
00:19:33.048 === Logs generated by test case
00:19:33.048 [wfDebug] [debug] ParserTestRunner::runTest: running Link with double quotes in title part (literal) and alternate part (interpreted) {"private":false}
00:19:33.048 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:19:33.048 ===
00:19:33.048 
00:19:33.048 2) ParserIntegrationTest::testParse with data set "parserTests.txt: percent-encoding and + signs in internal links (T28410)" ('legacy parser')
00:19:33.048 Failed asserting that two strings are equal.
00:19:33.048 --- Expected
00:19:33.048 +++ Actual
00:19:33.048 @@ @@
00:19:33.048  '<p><a href="/index.php?title=User:%2B%25&amp;action=edit&amp;redlink=1" class="new" title="User:+% (page does not exist)">User:+%</a> <a href="/index.php?title=Page%2Btitle%25&amp;action=edit&amp;redlink=1" class="new" title="Page+title% (page does not exist)">Page+title%</a>\n
00:19:33.048  <a href="/index.php?title=%25%2B&amp;action=edit&amp;redlink=1" class="new" title="%+ (page does not exist)">%+</a> <a href="/index.php?title=%25%2B&amp;action=edit&amp;redlink=1" class="new" title="%+ (page does not exist)">%20</a> <a href="/index.php?title=%25%2B&amp;action=edit&amp;redlink=1" class="new" title="%+ (page does not exist)">%+ </a> <a href="/index.php?title=%25%2Br&amp;action=edit&amp;redlink=1" class="new" title="%+r (page does not exist)">%+r</a>\n
00:19:33.048 -<a href="/index.php?title=%25&amp;action=edit&amp;redlink=1" class="new" title="% (page does not exist)">%</a> <a href="/index.php?title=%2B&amp;action=edit&amp;redlink=1" class="new" title="+ (page does not exist)">+</a> <span class="mw-default-size" typeof="mw:Error mw:Image"><a href="/index.php?title=Special:Upload&amp;wpDestFile=%25%2Babc9" class="new" title="File:%+abc9"><span>File:%+abc9</span></a></span>\n
00:19:33.048 +<a href="/index.php?title=%25&amp;action=edit&amp;redlink=1" class="new" title="% (page does not exist)">%</a> <a href="/index.php?title=%2B&amp;action=edit&amp;redlink=1" class="new" title="+ (page does not exist)">+</a> <span class="mw-default-size" typeof="mw:Error mw:Image"><a href="/index.php?title=Special:Upload&amp;wpDestFile=%25%2Babc9" class="new" title="File:%+abc9"><span class="mw-broken-media">File:%+abc9</span></a></span>\n
00:19:33.048  <a href="/index.php?title=3E&amp;action=edit&amp;redlink=1" class="new" title="3E (page does not exist)">3E</a> <a href="/index.php?title=3E%2B&amp;action=edit&amp;redlink=1" class="new" title="3E+ (page does not exist)">3E+</a>\n
00:19:33.048  </p>'
00:19:33.048 
00:19:33.048 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:19:33.048 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:69
00:19:33.048 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:69
00:19:33.048 === Logs generated by test case
00:19:33.048 [wfDebug] [debug] ParserTestRunner::runTest: running percent-encoding and + signs in internal links (T28410) {"private":false}
00:19:33.048 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:19:33.048 ===
00:19:33.048 
00:19:33.048 3) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Entities in file name and attributes" ('legacy parser')
00:19:33.049 Failed asserting that two strings are equal.
00:19:33.049 --- Expected
00:19:33.049 +++ Actual
00:19:33.049 @@ @@
00:19:33.049 -'<p><span class="mw-default-size" typeof="mw:Error mw:Image"><a href="/index.php?title=Special:Upload&amp;wpDestFile=7%25_solution.gif" class="new" title="File:7% solution.gif"><span>File:7% solution.gif</span></a></span>\n
00:19:33.049 +'<p><span class="mw-default-size" typeof="mw:Error mw:Image"><a href="/index.php?title=Special:Upload&amp;wpDestFile=7%25_solution.gif" class="new" title="File:7% solution.gif"><span class="mw-broken-media">File:7% solution.gif</span></a></span>\n
00:19:33.049  </p>'
00:19:33.049 
00:19:33.049 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:19:33.049 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:69
00:19:33.049 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:69
00:19:33.049 === Logs generated by test case
00:19:33.049 [wfDebug] [debug] ParserTestRunner::runTest: running Entities in file name and attributes {"private":false}
00:19:33.049 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:19:33.049 ===
00:19:33.049 
00:19:33.049 4) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Redirected image" ('legacy parser')
00:19:33.049 Failed asserting that two strings are equal.
00:19:33.049 --- Expected
00:19:33.049 +++ Actual
00:19:33.049 @@ @@
00:19:33.049 -'<p><span class="mw-default-size" typeof="mw:Error mw:Image"><a href="/wiki/File:Barfoo.jpg" class="mw-redirect" title="File:Barfoo.jpg"><span>File:Barfoo.jpg</span></a></span>\n
00:19:33.049 +'<p><span class="mw-default-size" typeof="mw:Error mw:Image"><a href="/wiki/File:Barfoo.jpg" class="mw-redirect" title="File:Barfoo.jpg"><span class="mw-broken-media">File:Barfoo.jpg</span></a></span>\n
00:19:33.049  </p>'
00:19:33.049 
00:19:33.049 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:19:33.049 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:69
00:19:33.049 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:69
00:19:33.049 === Logs generated by test case
00:19:33.049 [wfDebug] [debug] ParserTestRunner::runTest: running Redirected image {"private":false}
00:19:33.049 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:19:33.049 ===
00:19:33.049 
00:19:33.049 5) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Missing image with uploads disabled" ('legacy parser')
00:19:33.049 Failed asserting that two strings are equal.
00:19:33.049 --- Expected
00:19:33.049 +++ Actual
00:19:33.049 @@ @@
00:19:33.049 -'<p><span class="mw-default-size" typeof="mw:Error mw:Image"><a href="/wiki/File:Foobaz.jpg" title="File:Foobaz.jpg"><span>File:Foobaz.jpg</span></a></span>\n
00:19:33.049 +'<p><span class="mw-default-size" typeof="mw:Error mw:Image"><a href="/wiki/File:Foobaz.jpg" title="File:Foobaz.jpg"><span class="mw-broken-media">File:Foobaz.jpg</span></a></span>\n
00:19:33.049  </p>'
00:19:33.049 
00:19:33.049 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:19:33.049 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:69
00:19:33.049 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:69
00:19:33.049 === Logs generated by test case
00:19:33.049 [wfDebug] [debug] ParserTestRunner::runTest: running Missing image with uploads disabled {"private":false}
00:19:33.050 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:19:33.050 ===
00:19:33.050 
00:19:33.050 6) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: File containing double quotes and spaces" ('legacy parser')
00:19:33.050 Failed asserting that two strings are equal.
00:19:33.050 --- Expected
00:19:33.050 +++ Actual
00:19:33.050 @@ @@
00:19:33.050 -'<p><span class="mw-default-size" typeof="mw:Error mw:Image"><a href="/index.php?title=Special:Upload&amp;wpDestFile=Cool_%22Gator%22.png" class="new" title="File:Cool &quot;Gator&quot;.png"><span>File:Cool "Gator".png</span></a></span>\n
00:19:33.050 +'<p><span class="mw-default-size" typeof="mw:Error mw:Image"><a href="/index.php?title=Special:Upload&amp;wpDestFile=Cool_%22Gator%22.png" class="new" title="File:Cool &quot;Gator&quot;.png"><span class="mw-broken-media">File:Cool "Gator".png</span></a></span>\n
00:19:33.050  </p>'
00:19:33.050 
00:19:33.050 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:19:33.050 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:69
00:19:33.050 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:69
00:19:33.050 === Logs generated by test case
00:19:33.050 [wfDebug] [debug] ParserTestRunner::runTest: running File containing double quotes and spaces {"private":false}
00:19:33.050 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:19:33.050 ===
00:19:33.050 
00:19:33.050 7) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: File containing single quotes" ('legacy parser')
00:19:33.050 Failed asserting that two strings are equal.
00:19:33.050 --- Expected
00:19:33.050 +++ Actual
00:19:33.050 @@ @@
00:19:33.050 -'<p><span class="mw-default-size" typeof="mw:Error mw:Image"><a href="/index.php?title=Special:Upload&amp;wpDestFile=Foo%27s_%27%27italic%27%27_bar.jpg" class="new" title="File:Foo&#39;s &#39;&#39;italic&#39;&#39; bar.jpg"><span>File:Foo's <i>italic</i> bar.jpg</span></a></span>\n
00:19:33.050 -<span class="mw-default-size" typeof="mw:Error mw:Image"><a href="/index.php?title=Special:Upload&amp;wpDestFile=Foo%27s_%27%27italic%27%27_bar.jpg" class="new" title="File:Foo&#39;s &#39;&#39;italic&#39;&#39; bar.jpg"><span>File:Foo's <i>italic</i> bar.jpg</span></a></span>\n
00:19:33.050 +'<p><span class="mw-default-size" typeof="mw:Error mw:Image"><a href="/index.php?title=Special:Upload&amp;wpDestFile=Foo%27s_%27%27italic%27%27_bar.jpg" class="new" title="File:Foo&#39;s &#39;&#39;italic&#39;&#39; bar.jpg"><span class="mw-broken-media">File:Foo's <i>italic</i> bar.jpg</span></a></span>\n
00:19:33.050 +<span class="mw-default-size" typeof="mw:Error mw:Image"><a href="/index.php?title=Special:Upload&amp;wpDestFile=Foo%27s_%27%27italic%27%27_bar.jpg" class="new" title="File:Foo&#39;s &#39;&#39;italic&#39;&#39; bar.jpg"><span class="mw-broken-media">File:Foo's <i>italic</i> bar.jpg</span></a></span>\n
00:19:33.050  </p>'
00:19:33.050 
00:19:33.050 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:19:33.050 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:69
00:19:33.050 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:69
00:19:33.050 === Logs generated by test case
00:19:33.050 [wfDebug] [debug] ParserTestRunner::runTest: running File containing single quotes {"private":false}
00:19:33.050 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:19:33.050 ===
00:19:33.050 
00:19:33.050 8) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Broken image links with HTML captions (T41700)" ('legacy parser')
00:19:33.050 Failed asserting that two strings are equal.
00:19:33.050 --- Expected
00:19:33.050 +++ Actual
00:19:33.050 @@ @@
00:19:33.050 -'<p><span class="mw-default-size" typeof="mw:Error mw:Image"><a href="/index.php?title=Special:Upload&amp;wpDestFile=Nonexistent" class="new" title="File:Nonexistent"><span>File:Nonexistent</span></a></span>\n
00:19:33.051 -<span typeof="mw:Error mw:Image"><a href="/index.php?title=Special:Upload&amp;wpDestFile=Nonexistent" class="new" title="File:Nonexistent"><span data-width="100" data-height="100">File:Nonexistent</span></a></span>\n
00:19:33.051 -<span class="mw-default-size" typeof="mw:Error mw:Image"><a href="/index.php?title=Special:Upload&amp;wpDestFile=Nonexistent" class="new" title="File:Nonexistent"><span>File:Nonexistent</span></a></span>\n
00:19:33.051 -<span class="mw-default-size" typeof="mw:Error mw:Image"><a href="/index.php?title=Special:Upload&amp;wpDestFile=Nonexistent" class="new" title="File:Nonexistent"><span>File:Nonexistent</span></a></span>\n
00:19:33.051 +'<p><span class="mw-default-size" typeof="mw:Error mw:Image"><a href="/index.php?title=Special:Upload&amp;wpDestFile=Nonexistent" class="new" title="File:Nonexistent"><span class="mw-broken-media">File:Nonexistent</span></a></span>\n
00:19:33.051 +<span typeof="mw:Error mw:Image"><a href="/index.php?title=Special:Upload&amp;wpDestFile=Nonexistent" class="new" title="File:Nonexistent"><span class="mw-broken-media" data-width="100" data-height="100">File:Nonexistent</span></a></span>\n
00:19:33.051 +<span class="mw-default-size" typeof="mw:Error mw:Image"><a href="/index.php?title=Special:Upload&amp;wpDestFile=Nonexistent" class="new" title="File:Nonexistent"><span class="mw-broken-media">File:Nonexistent</span></a></span>\n
00:19:33.051 +<span class="mw-default-size" typeof="mw:Error mw:Image"><a href="/index.php?title=Special:Upload&amp;wpDestFile=Nonexistent" class="new" title="File:Nonexistent"><span class="mw-broken-media">File:Nonexistent</span></a></span>\n
00:19:33.051  </p>'
00:19:33.051 
00:19:33.051 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:19:33.051 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:69
00:19:33.051 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:69
00:19:33.051 === Logs generated by test case
00:19:33.051 [wfDebug] [debug] ParserTestRunner::runTest: running Broken image links with HTML captions (T41700) {"private":false}
00:19:33.051 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:19:33.051 ===
00:19:33.051 
00:19:33.051 9) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Template with thumb image (with link in description)" ('legacy parser')
00:19:33.051 Failed asserting that two strings are equal.
00:19:33.051 --- Expected
00:19:33.051 +++ Actual
00:19:33.051 @@ @@
00:19:33.051 -'<p>This is a test template with parameter </p><figure class="mw-default-size" typeof="mw:Error mw:Image/Thumb"><a href="/index.php?title=Special:Upload&amp;wpDestFile=Noimage.png" class="new" title="File:Noimage.png"><span data-width="180">File:Noimage.png</span></a><figcaption><a href="/index.php?title=No_link&amp;action=edit&amp;redlink=1" class="new" title="No link (page does not exist)">link</a> <a href="/index.php?title=No_link&amp;action=edit&amp;redlink=1" class="new" title="No link (page does not exist)">caption</a></figcaption></figure>'
00:19:33.051 +'<p>This is a test template with parameter </p><figure class="mw-default-size" typeof="mw:Error mw:Image/Thumb"><a href="/index.php?title=Special:Upload&amp;wpDestFile=Noimage.png" class="new" title="File:Noimage.png"><span class="mw-broken-media" data-width="180">File:Noimage.png</span></a><figcaption><a href="/index.php?title=No_link&amp;action=edit&amp;redlink=1" class="new" title="No link (page does not exist)">link</a> <a href="/index.php?title=No_link&amp;action=edit&amp;redlink=1" class="new" title="No link (page does not exist)">caption</a></figcaption></figure>'
00:19:33.051 
00:19:33.051 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:19:33.051 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:69
00:19:33.051 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:69
00:19:33.051 === Logs generated by test case
00:19:33.051 [wfDebug] [debug] ParserTestRunner::runTest: running Template with thumb image (with link in description) {"private":false}
00:19:33.051 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:19:33.051 ===
00:19:33.051 
00:19:33.051 10) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Image link to nonexistent file (T3850 - good)" ('legacy parser')
00:19:33.051 Failed asserting that two strings are equal.
00:19:33.051 --- Expected
00:19:33.052 +++ Actual
00:19:33.052 @@ @@
00:19:33.052 -'<p><span class="mw-default-size" typeof="mw:Error mw:Image"><a href="/index.php?title=Special:Upload&amp;wpDestFile=No_such.jpg" class="new" title="File:No such.jpg"><span>File:No such.jpg</span></a></span>\n
00:19:33.052 +'<p><span class="mw-default-size" typeof="mw:Error mw:Image"><a href="/index.php?title=Special:Upload&amp;wpDestFile=No_such.jpg" class="new" title="File:No such.jpg"><span class="mw-broken-media">File:No such.jpg</span></a></span>\n
00:19:33.052  </p>'
00:19:33.052 
00:19:33.052 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:19:33.052 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:69
00:19:33.052 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:69
00:19:33.052 === Logs generated by test case
00:19:33.052 [wfDebug] [debug] ParserTestRunner::runTest: running Image link to nonexistent file (T3850 - good) {"private":false}
00:19:33.052 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:19:33.052 ===
00:19:33.052 
00:19:33.052 11) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Fuzz testing: image with bogus manual thumbnail" ('legacy parser')
00:19:33.052 Failed asserting that two strings are equal.
00:19:33.052 --- Expected
00:19:33.052 +++ Actual
00:19:33.052 @@ @@
00:19:33.052 -'<figure class="mw-default-size" typeof="mw:Error mw:Image/Thumb"><a href="/index.php?title=Special:Upload&amp;wpDestFile=Foobar.jpg" class="new" title="File:Foobar.jpg"><span data-width="180">File:Foobar.jpg</span></a><figcaption></figcaption></figure>'
00:19:33.052 +'<figure class="mw-default-size" typeof="mw:Error mw:Image/Thumb"><a href="/index.php?title=Special:Upload&amp;wpDestFile=Foobar.jpg" class="new" title="File:Foobar.jpg"><span class="mw-broken-media" data-width="180">File:Foobar.jpg</span></a><figcaption></figcaption></figure>'
00:19:33.052 
00:19:33.052 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:19:33.052 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:69
00:19:33.052 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:69
00:19:33.052 === Logs generated by test case
00:19:33.052 [wfDebug] [debug] ParserTestRunner::runTest: running Fuzz testing: image with bogus manual thumbnail {"private":false}
00:19:33.052 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:19:33.052 [wfDebug] [debug] ContextSource::getContext (FormatMetadata): called and $context is null. Using RequestContext::getMain() {"private":false}
00:19:33.052 ===
00:19:33.052 
00:19:33.052 12) ParserIntegrationTest::testParse with data set "mediaParserTests.txt: Special characters in embedded file links (T29679)" ('legacy parser')
00:19:33.052 Failed asserting that two strings are equal.
00:19:33.052 --- Expected
00:19:33.052 +++ Actual
00:19:33.052 @@ @@
00:19:33.052 -'<p><span class="mw-default-size" typeof="mw:Error mw:Image"><a href="/index.php?title=Special:Upload&amp;wpDestFile=Contains_%26_ampersand.jpg" class="new" title="File:Contains &amp; ampersand.jpg"><span>File:Contains &amp; ampersand.jpg</span></a></span>\n
00:19:33.052 -<span class="mw-default-size" typeof="mw:Error mw:Image"><a href="/index.php?title=Special:Upload&amp;wpDestFile=Does_not_exist.jpg" class="new" title="File:Does not exist.jpg"><span>File:Does not exist.jpg</span></a></span>\n
00:19:33.052 +'<p><span class="mw-default-size" typeof="mw:Error mw:Image"><a href="/index.php?title=Special:Upload&amp;wpDestFile=Contains_%26_ampersand.jpg" class="new" title="File:Contains &amp; ampersand.jpg"><span class="mw-broken-media">File:Contains &amp; ampersand.jpg</span></a></span>\n
00:19:33.052 +<span class="mw-default-size" typeof="mw:Error mw:Image"><a href="/index.php?title=Special:Upload&amp;wpDestFile=Does_not_exist.jpg" class="new" title="File:Does not exist.jpg"><span class="mw-broken-media">File:Does not exist.jpg</span></a></span>\n
00:19:33.052  </p>'
00:19:33.052 
00:19:33.052 /workspace/src/tests/phpunit/suites/ParserIntegrationTest.php:64
00:19:33.052 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:69
00:19:33.053 /workspace/src/tests/phpunit/suites/SuiteEventsTrait.php:69
00:19:33.053 === Logs generated by test case
00:19:33.053 [wfDebug] [debug] ParserTestRunner::runTest: running Special characters in embedded file links (T29679) {"private":false}
00:19:33.053 [wfDebug] [debug] ParserFactory: using default preprocessor {"private":false}
00:19:33.053 ===

All GrowthExperiments builds with PHPUnit tests are failing.

This is the case that we have here: Growth-Experiments has an explicit dependency on Parsoid in the CI: see https://gerrit.wikimedia.org/r/plugins/gitiles/integration/config/+/refs/heads/master/zuul/parameter_functions.py#348 - that's since December: https://phabricator.wikimedia.org/rCICF91612b8841a17903726eec9b9d27bd4d1fcd4f3c. Whether that's actually necessary for that purpose or whether there's a way around that, I'm not enough of a Selenium user to say :)

For GrowthExperiments, we need VisualEditor to work, and VisualEditor needs a functioning Parsoid service to talk to. I don't know if the dependency on Parsoid in CI is necessary; we could try removing it to see if it makes a difference. We also currently rely on this hack https://github.com/wikimedia/mediawiki-extensions-GrowthExperiments/blob/master/tests/selenium/fixtures/GrowthExperiments.LocalSettings.php#L61-L66 to make things work as well. I'd love for VisualEditor + Parsoid to "just work" for extensions that want to rely on VE+Parsoid in browser tests in CI.

I tried to remove the parsoid dependency from GrowthExperiments (https://gerrit.wikimedia.org/r/c/integration/config/+/771827) but it seems something else is pulling it as a dependency.

Fixed, thanks.

Is this something specific to GrowthExperiments + CI, and if so, is there something we can do to avoid these types of issues in the future?

Is this something specific to GrowthExperiments + CI

No, not specific to GrowthExperiments. Any extension with a dependency on Parsoid would have been affected.

is there something we can do to avoid these types of issues in the future?

Unfortunately, CI for Parsoid breaks every once and a while when changes to parserTests are merged either in core or extensions to core, and that's not always triggered by our team. Fixing it is pretty straightforward, it just requires sync'ing a few files to Parsoid's repo. To this point, it hasn't been an issue since it was only disrupting our team but it no longer seems sustainable. I'll raise this with the team.

kostajh claimed this task.

Is this something specific to GrowthExperiments + CI

No, not specific to GrowthExperiments. Any extension with a dependency on Parsoid would have been affected.

is there something we can do to avoid these types of issues in the future?

Unfortunately, CI for Parsoid breaks every once and a while when changes to parserTests are merged either in core or extensions to core, and that's not always triggered by our team. Fixing it is pretty straightforward, it just requires sync'ing a few files to Parsoid's repo. To this point, it hasn't been an issue since it was only disrupting our team but it no longer seems sustainable. I'll raise this with the team.

OK, thank you!

Is this something specific to GrowthExperiments + CI

No, not specific to GrowthExperiments. Any extension with a dependency on Parsoid would have been affected.

is there something we can do to avoid these types of issues in the future?

Unfortunately, CI for Parsoid breaks every once and a while when changes to parserTests are merged either in core or extensions to core, and that's not always triggered by our team. Fixing it is pretty straightforward, it just requires sync'ing a few files to Parsoid's repo. To this point, it hasn't been an issue since it was only disrupting our team but it no longer seems sustainable. I'll raise this with the team.

OK, thank you!

Btw, I tried removing the dependency on Parsoid in CI for GrowthExperiments but it gets pulled in because of some other chain of dependencies. From GrowthExperiments, what we need is for VisualEditor and Parsoid (the version in vendor is fine) to be able to talk to each other so that browser tests can verify actions involving VisualEditor editing.

Change 779967 had a related patch set uploaded (by Arlolra; author: Arlolra):

[integration/config@master] Make extension-quibble non-voting for parsoid

https://gerrit.wikimedia.org/r/779967

Change 779967 abandoned by Arlolra:

[integration/config@master] Make extension-quibble non-voting for parsoid

Reason:

Nevermind

https://gerrit.wikimedia.org/r/779967