11:08:54INFO:quibble.commands:>>> Start: Start backends: <MySQL (no socket)>
11:08:54INFO:backend.MySQL:Starting MySQL
11:08:54INFO:backend.MySQL:Initializing MySQL data directory
11:08:56INFO:backend.MySQL:Waiting for MySQL socket
11:08:57INFO:backend.MySQL:Creating the wiki database and grant
11:08:57INFO:backend.MySQL:MySQL is ready
11:08:57INFO:quibble.commands:<<< Finish: Start backends: <MySQL (no socket)>, in 3.460 s
Run Post-dependency install
11:08:57INFO:quibble.commands:>>> Start: Run Post-dependency install, pre-database dependent steps in parallel (concurrency=2):
11:08:57* Install MediaWiki, db=<MySQL /workspace/db/quibble-mysql-7xbpmmy5/socket>
11:08:57* npm install in /workspace/src
Install MediaWiki
11:09:00INFO:quibble.commands:>>> Start: Install MediaWiki, db=<MySQL /workspace/db/quibble-mysql-7xbpmmy5/socket>
11:09:00php maintenance/install.php --scriptpath= --server=http://127.0.0.1:9413 --dbtype=mysql --dbname=wikidb --dbuser=wikiuser --dbpass=secret --dbserver=localhost:/workspace/db/quibble-mysql-7xbpmmy5/socket --with-extensions --pass=testwikijenkinspass TestWiki WikiAdmin
11:09:00PHP 7.4.33 is installed.
11:09:00ICU 67.1 is installed (supports Unicode 13.0.0).
11:09:00Found ImageMagick: /usr/bin/convert. Image thumbnailing will be enabled if you enable uploads.
11:09:00Found the Git version control software: /usr/bin/git.
11:09:00Using server name "http://localhost".
11:09:00Using server URL "http://127.0.0.1:9413".
11:09:00Warning: Your default directory for uploads (/workspace/src/images/) is not checked for vulnerability to arbitrary script execution during the CLI install.
11:09:00Warning: Requests for images in your uploads directory should answer with the HTTP header X-Content-Type-Options: nosniff to protect browsers from potentially unsafe files. It is highly recommended to configure appropriate response headers on your webserver before enabling uploads.
11:09:00The environment has been checked. You can install MediaWiki.
11:09:00Including extensions
11:09:00done
11:09:00Setting up database
11:09:00done
11:09:00Creating tables
11:09:00done
11:09:00Initializing statistics
11:09:00done
11:09:00Populating default interwiki table
11:09:00done
11:09:00Prevent running unneeded updates
11:09:00done
11:09:00Restoring MediaWiki services
11:09:00done
11:09:00Creating tables for enabled extensions
11:09:00done
11:09:00Creating main page with default content
11:09:00done
11:09:00Creating administrator user account
11:09:00done
11:09:00Database was successfully set up
11:09:00MediaWiki has been successfully installed. You can now visit <http://127.0.0.1:9413> to view your wiki. If you have questions, check out our frequently asked questions list: <https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ> or use one of the support forums linked on that page.
11:09:00Copying /workspace/src/LocalSettings.php to /workspace/log/LocalSettings.php
11:09:00Copying /workspace/src/LocalSettings-installer.php to /workspace/log/LocalSettings-installer.php
11:09:00No syntax errors detected in /workspace/src/LocalSettings.php
11:09:00php maintenance/addSite.php wikidb CI --filepath=http://127.0.0.1:9413/$1 --pagepath=http://127.0.0.1:9413/index.php?title=$111:09:00Done. Reload the web server and other long-running PHP processes to refresh the local-server cache of the sites table.
11:09:00php maintenance/update.php --quick
11:09:00MediaWiki 1.44.0-alpha Updater
11:09:0011:09:00Your composer.lock file is up to date with current dependencies!
11:09:00Going to run database updates for wikidb
11:09:00Depending on the size of your database this may take a while!
11:09:00Updating category collations...
11:09:00Selecting next 100 pages from cl_from = 0... processing... 0 done.
11:09:000 rows processed
11:09:00...done.
11:09:00Modifying rd_title field of table redirect...done.
11:09:00...pl_title field does not exist in pagelinks table, skipping modify field patch.
11:09:00...tl_title field does not exist in templatelinks table, skipping modify field patch.
11:09:00Modifying il_to field of table imagelinks...done.
11:09:00Modifying ll_title field of table langlinks...done.
11:09:00Modifying iwl_title field of table iwlinks...done.
11:09:00Modifying cat_title field of table category...done.
11:09:00Modifying qc_title field of table querycache...done.
11:09:00Modifying qcc_title field of table querycachetwo...done.
11:09:00Modifying wl_title field of table watchlist...done.
11:09:00Modifying user_last_timestamp field of table user_newtalk...done.
11:09:00Modifying pt_title field of table protected_titles...done.
11:09:00Removing 'protected_titles.pt_expiry' default value.
11:09:00Removing 'ip_changes.ipc_rev_timestamp' default value.
11:09:00Modifying ir_type field of table ipblocks_restrictions...done.
11:09:00...index wl_namespace_title already set on watchlist table.
11:09:00Modifying job_title field of table job...done.
11:09:00Modifying job_timestamp field of table job...done.
11:09:00Modifying job_token_timestamp field of table job...done.
11:09:00Modifying wl_notificationtimestamp field of table watchlist...done.
11:09:00Modifying role_id field of table slot_roles...done.
11:09:00Modifying model_id field of table content_models...done.
11:09:00Modifying cl_to field of table categorylinks...done.
11:09:00Modifying log_title field of table logging...done.
11:09:00Modifying us_timestamp field of table uploadstash...done.
11:09:00...index up_property already set on user_properties table.
11:09:00...index site_global_key already set on sites table.
11:09:00...index log_type_time already set on logging table.
11:09:00Modifying fa_name field of table filearchive...done.
11:09:00Removing 'filearchive.fa_deleted_timestamp' default value.
11:09:00Removing 'filearchive.fa_timestamp' default value.
11:09:00Modifying oi_name field of table oldimage...done.
11:09:00Removing 'oldimage.oi_timestamp' default value.
11:09:00Modifying exptime field of table objectcache...done.
11:09:00...index ar_name_title_timestamp already set on archive table.
11:09:00Modifying img_name field of table image...done.
11:09:00Removing 'image.img_timestamp' default value.
11:09:00Modifying img_timestamp field of table image...done.
11:09:00...index si_key already set on site_identifiers table.
11:09:00Modifying rc_title field of table recentchanges...done.
11:09:00Removing 'recentchanges.rc_timestamp' default value.
11:09:00Modifying rc_timestamp field of table recentchanges...done.
11:09:00Modifying rc_id field of table recentchanges...done.
11:09:00...index rc_new_name_timestamp already set on recentchanges table.
11:09:00Removing 'archive.ar_timestamp' default value.
11:09:00Modifying ar_title field of table archive...done.
11:09:00Modifying page_title field of table page...done.
11:09:00Removing 'page.page_touched' default value.
11:09:00Modifying user_name field of table user...done.
11:09:00...index rev_page_timestamp already set on revision table.
11:09:00...have modtoken field in objectcache table.
11:09:00Removing 'revision.rev_timestamp' default value.
11:09:00...index oi_timestamp already set on oldimage table.
11:09:00...index page_name_title already set on page table.
11:09:00...index ct_rc_tag_id already set on change_tag table.
11:09:00Converting djvu metadata...
11:09:00Finished refreshing file metadata for 0 files. 0 needed to be refreshed, 0 did not need to be but were refreshed anyways, and 0 refreshes were suspicious.
11:09:00...done.
11:09:00...page_restrictions table does not contain pr_user field.
11:09:00Modifying fa_id field of table filearchive...done.
11:09:00Modifying img_major_mime field of table image...done.
11:09:00...linktarget table already exists.
11:09:00...rev_page_id key doesn't exist.
11:09:00Modifying pr_page field of table page_restrictions...done.
11:09:00Modifying pp_page field of table page_props...done.
11:09:00Modifying ir_value field of table ipblocks_restrictions...done.
11:09:00...have tl_target_id field in templatelinks table.
11:09:00...user_autocreate_serial table already exists.
11:09:00Modifying ir_ipb_id field of table ipblocks_restrictions...done.
11:09:00...ipblocks table does not exist, skipping modify field patch.
11:09:00Modifying user_editcount field of table user...done.
11:09:00Running MigrateRevisionActorTemp...
11:09:00revision_actor_temp does not exist, so nothing to do.
11:09:00done.
11:09:00...revision_actor_temp doesn't exist.
11:09:00Running UpdateRestrictions...
11:09:00Migration is not needed.
11:09:00done.
11:09:00...page table does not contain page_restrictions field.
11:09:00Running migrateLinksTable.php on templatelinks...
11:09:00Old fields don't exist. There is no need to run this script
11:09:00done.
11:09:00...tl_namespace field does not exist in templatelinks table, skipping modify field patch.
11:09:00...templatelinks table does not contain tl_title field.
11:09:00...have el_to_path field in externallinks table.
11:09:00...have user_is_temp field in user table.
11:09:00Running MigrateRevisionCommentTemp...
11:09:00revision_comment_temp does not exist, so nothing to do.
11:09:00done.
11:09:00...revision_comment_temp doesn't exist.
11:09:00Running MigrateExternallinks...
11:09:00Old fields don't exist. There is no need to run this script
11:09:00done.
11:09:00...el_to field does not exist in externallinks table, skipping modify field patch.
11:09:00...have pl_target_id field in pagelinks table.
11:09:00...externallinks table does not contain el_to field.
11:09:00Running FixInconsistentRedirects...
11:09:00Fixing inconsistent redirects ...
11:09:00Estimated redirect page count: 1
11:09:000/0
11:09:00Done, updated 0 of 0 rows.
11:09:00done.
11:09:00Modifying img_size field of table image...done.
11:09:00Modifying fa_size field of table filearchive...done.
11:09:00Modifying oi_size field of table oldimage...done.
11:09:00Modifying us_size field of table uploadstash...done.
11:09:00...have uas_year field in user_autocreate_serial table.
11:09:00...block_target table already exists.
11:09:00...cl_collation_ext key doesn't exist.
11:09:00Running PopulateUserIsTemp...
11:09:00done.
11:09:00...site_type key doesn't exist.
11:09:00...iwl_prefix_from_title key doesn't exist.
11:09:00Running migrateLinksTable.php on pagelinks...
11:09:00Old fields don't exist. There is no need to run this script
11:09:00done.
11:09:00Modifying rev_id field of table revision...done.
11:09:00Modifying rc_id field of table recentchanges...done.
11:09:00Modifying ct_rc_id field of table change_tag...done.
11:09:00Running MigrateBlocks...
11:09:00No ipblocks table, skipping migration to block_target.
11:09:00done.
11:09:00...ipblocks doesn't exist.
11:09:00...pagelinks table does not contain pl_title field.
11:09:00Modifying page_links_updated field of table page...done.
11:09:00Changing table options of 'searchindex'.
11:09:00...index PRIMARY already set on searchindex table.
11:09:00...site_stats is populated...done.
11:09:00Checking existence of old default messages...done.
11:09:00Adding empty categories with description pages...
11:09:00Removing empty categories without description pages...
11:09:00Category cleanup complete.
11:09:00Fixing log entries with log_title starting with 'User:#'
11:09:00done.
11:09:00Purging caches...done.
11:09:0011:09:00Done in 1.2 s.
11:09:00php maintenance/rebuildLocalisationCache.php --lang en
11:09:00Rebuilding en...
11:09:001 languages rebuilt out of 1
11:09:00<<< Finish: Install MediaWiki, db=<MySQL /workspace/db/quibble-mysql-7xbpmmy5/socket>, in 2.931 s
11:09:0011:09:07DEBUG:quibble.util:Waiting for Post-dependency install, pre-database dependent steps: 10s elapsed, 1/2 completed
npm install in /workspace/src
11:09:07INFO:quibble.commands:>>> Start: npm install in /workspace/src
11:09:07npm warn deprecated @types/easy-table@1.2.0: This is a stub types definition. easy-table provides its own type definitions, so you do not need this installed.
11:09:07npm warn deprecated har-validator@5.1.5: this library is no longer supported
11:09:07npm warn deprecated date-format@0.0.2: 0.x is no longer supported. Please upgrade to 4.x or higher.
11:09:07npm warn deprecated abab@2.0.6: Use your platform's native atob() and btoa() methods instead
11:09:07npm warn deprecated formidable@1.2.6: Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau11:09:07npm warn deprecated domexception@4.0.0: Use your platform's native DOMException instead
11:09:07npm warn deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
11:09:07npm warn deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/314211:09:07npm warn deprecated superagent@6.1.0: Please upgrade to v7.0.2+ of superagent. We have fixed numerous issues with streams, form-data, attach(), filesystem errors not bubbling up (ENOENT on attach()), and all tests are now passing. See the releases tab for more information at <https://github.com/visionmedia/superagent/releases>. Thanks to @shadowgate15, @spence-s, and @niftylettuce. Superagent is sponsored by Forward Email at <https://forwardemail.net>.
11:09:0711:09:07added 1449 packages, and audited 1451 packages in 10s
11:09:0711:09:07160 packages are looking for funding
11:09:07 run `npm fund` for details
11:09:0711:09:0716 vulnerabilities (1 low, 4 moderate, 11 high)
11:09:0711:09:07To address issues that do not require attention, run:
11:09:07 npm audit fix
11:09:0711:09:07To address all issues (including breaking changes), run:
11:09:07 npm audit fix --force
11:09:0711:09:07Run `npm audit` for details.
11:09:07<<< Finish: npm install in /workspace/src, in 10.112 s
11:09:0711:09:07INFO:quibble.commands:<<< Finish: Run Post-dependency install, pre-database dependent steps in parallel (concurrency=2):
11:09:07* Install MediaWiki, db=<MySQL /workspace/db/quibble-mysql-7xbpmmy5/socket>
11:09:07* npm install in /workspace/src, in 10.156 s
PHPUnit unit tests
11:09:16INFO:quibble.commands:>>> Start: PHPUnit Prepare Parallel Run (Composer)
11:09:16> MediaWiki\Composer\PhpUnitSplitter\PhpUnitXmlManager::listTestsNotice
11:09:1611:09:16Running `phpunit --list-tests-xml` to get a list of expected tests ...
11:09:1611:09:17> phpunit '--list-tests-xml=tests-list-extensions.xml' '--testsuite=extensions'
11:09:17Using PHP 7.4.33
11:09:17Running with MediaWiki settings because there might be integration tests
11:09:17PHPUnit 9.6.19 by Sebastian Bergmann and contributors.
11:09:1711:09:17Wrote list of tests that would have been run to tests-list-extensions.xml
11:09:17> MediaWiki\Composer\PhpUnitSplitter\PhpUnitXmlManager::splitTestsListExtensions
11:09:1811:09:18Created modified `phpunit.xml` with test suite groups
11:09:18INFO:quibble.util:Copying /workspace/src/phpunit.xml to /workspace/log/phpunit-parallel.xml
11:09:18INFO:quibble.commands:<<< Finish: PHPUnit Prepare Parallel Run (Composer), in 1.782 s
PHPUnit extensions suite (without database or standalone) parallel run (Composer)
11:09:18INFO:quibble.commands:>>> Start: PHPUnit extensions suite (without database or standalone) parallel run (Composer)
11:09:18> MediaWiki\Composer\ComposerLaunchParallel::launchTestsDatabaseless
11:09:18Running command ''composer' 'run' '--timeout=0' 'phpunit:entrypoint' '--' '--testsuite' 'split_group_2' '--exclude-group' 'Broken,ParserFuzz,Stub,Standalone,Database' '--cache-result-file=.phpunit_group_2_databaseless.result.cache'' ...
11:09:18Running command ''composer' 'run' '--timeout=0' 'phpunit:entrypoint' '--' '--testsuite' 'split_group_5' '--exclude-group' 'Broken,ParserFuzz,Stub,Standalone,Database' '--cache-result-file=.phpunit_group_5_databaseless.result.cache'' ...
11:09:18Running command ''composer' 'run' '--timeout=0' 'phpunit:entrypoint' '--' '--testsuite' 'split_group_0' '--exclude-group' 'Broken,ParserFuzz,Stub,Standalone,Database' '--cache-result-file=.phpunit_group_0_databaseless.result.cache'' ...
11:09:18Running command ''composer' 'run' '--timeout=0' 'phpunit:entrypoint' '--' '--testsuite' 'split_group_1' '--exclude-group' 'Broken,ParserFuzz,Stub,Standalone,Database' '--cache-result-file=.phpunit_group_1_databaseless.result.cache'' ...
11:09:18Running command ''composer' 'run' '--timeout=0' 'phpunit:entrypoint' '--' '--testsuite' 'split_group_3' '--exclude-group' 'Broken,ParserFuzz,Stub,Standalone,Database' '--cache-result-file=.phpunit_group_3_databaseless.result.cache'' ...
11:09:18Running command ''composer' 'run' '--timeout=0' 'phpunit:entrypoint' '--' '--testsuite' 'split_group_4' '--exclude-group' 'Broken,ParserFuzz,Stub,Standalone,Database' '--cache-result-file=.phpunit_group_4_databaseless.result.cache'' ...
11:09:18Running command ''composer' 'run' '--timeout=0' 'phpunit:entrypoint' '--' '--testsuite' 'split_group_6' '--exclude-group' 'Broken,ParserFuzz,Stub,Standalone,Database' '--cache-result-file=.phpunit_group_6_databaseless.result.cache'' ...
11:09:20> phpunit '--testsuite' 'split_group_4' '--exclude-group' 'Broken,ParserFuzz,Stub,Standalone,Database' '--cache-result-file=.phpunit_group_4_databaseless.result.cache'
11:09:20Using PHP 7.4.33
11:09:20Running with MediaWiki settings because there might be integration tests
11:09:20PHPUnit 9.6.19 by Sebastian Bergmann and contributors.
11:09:2011:09:20..................... 21 / 21 (100%)
11:09:2011:09:20Time: 00:00.045, Memory: 32.50 MB
11:09:2011:09:20OK (21 tests, 31 assertions)
11:09:20Worker exited with status 0
11:09:20> phpunit '--testsuite' 'split_group_3' '--exclude-group' 'Broken,ParserFuzz,Stub,Standalone,Database' '--cache-result-file=.phpunit_group_3_databaseless.result.cache'
11:09:20Using PHP 7.4.33
11:09:20Running with MediaWiki settings because there might be integration tests
11:09:20PHPUnit 9.6.19 by Sebastian Bergmann and contributors.
11:09:2011:09:20................................ 32 / 32 (100%)
11:09:2011:09:20Time: 00:00.126, Memory: 38.50 MB
11:09:2011:09:20OK (32 tests, 34 assertions)
11:09:20Worker exited with status 0
11:09:20> phpunit '--testsuite' 'split_group_2' '--exclude-group' 'Broken,ParserFuzz,Stub,Standalone,Database' '--cache-result-file=.phpunit_group_2_databaseless.result.cache'
11:09:20Using PHP 7.4.33
11:09:20Running with MediaWiki settings because there might be integration tests
11:09:20PHPUnit 9.6.19 by Sebastian Bergmann and contributors.
11:09:2011:09:20............................................ 44 / 44 (100%)
11:09:2011:09:20Time: 00:00.203, Memory: 48.50 MB
11:09:2011:09:20OK (44 tests, 124 assertions)
11:09:2011:09:2011:09:20You should really speed up these slow tests (>100ms)...
11:09:20 1. 140ms to run MediaWiki\\Skins\\Vector\\Tests\\Integration\\SkinVectorTest::testGetTemplateData
11:09:20Worker exited with status 0
11:09:20> phpunit '--testsuite' 'split_group_0' '--exclude-group' 'Broken,ParserFuzz,Stub,Standalone,Database' '--cache-result-file=.phpunit_group_0_databaseless.result.cache'
11:09:20Using PHP 7.4.33
11:09:20Running with MediaWiki settings because there might be integration tests
11:09:20PHPUnit 9.6.19 by Sebastian Bergmann and contributors.
11:09:2011:09:20................................................................. 65 / 69 ( 94%)
11:09:20.... 69 / 69 (100%)
11:09:2011:09:20Time: 00:00.463, Memory: 40.50 MB
11:09:2011:09:20OK (69 tests, 89 assertions)
11:09:2011:09:2011:09:20You should really speed up these slow tests (>100ms)...
11:09:20 1. 104ms to run AbstractSchemaValidationTest::testSchemasPassValidation with data set "maintenance/tables.json"
11:09:20Worker exited with status 0
11:09:21> phpunit '--testsuite' 'split_group_1' '--exclude-group' 'Broken,ParserFuzz,Stub,Standalone,Database' '--cache-result-file=.phpunit_group_1_databaseless.result.cache'
11:09:21Using PHP 7.4.33
11:09:21Running with MediaWiki settings because there might be integration tests
11:09:21PHPUnit 9.6.19 by Sebastian Bergmann and contributors.
11:09:2111:09:21................................ 32 / 32 (100%)
11:09:2111:09:21Time: 00:01.351, Memory: 52.50 MB
11:09:2111:09:21OK (32 tests, 54 assertions)
11:09:2111:09:2111:09:21You should really speed up these slow tests (>100ms)...
11:09:21 1. 573ms to run MediaWiki\\Skins\\Vector\\Tests\\Structure\\BundleSizeTest::testBundleSize with data set "skins.vector.styles.legacy"
11:09:21 2. 498ms to run MediaWiki\\Skins\\Vector\\Tests\\Structure\\BundleSizeTest::testBundleSize with data set "skins.vector.styles"
11:09:21Worker exited with status 0
11:09:22> phpunit '--testsuite' 'split_group_6' '--exclude-group' 'Broken,ParserFuzz,Stub,Standalone,Database' '--cache-result-file=.phpunit_group_6_databaseless.result.cache'
11:09:22Using PHP 7.4.33
11:09:22Running with MediaWiki settings because there might be integration tests
11:09:22PHPUnit 9.6.19 by Sebastian Bergmann and contributors.
11:09:2211:09:22............................................................... 63 / 800 ( 7%)
11:09:22............................................................... 126 / 800 ( 15%)
11:09:22............................................................... 189 / 800 ( 23%)
11:09:22............................................................... 252 / 800 ( 31%)
11:09:22............................................................... 315 / 800 ( 39%)
11:09:22............................................................... 378 / 800 ( 47%)
11:09:22............................................................... 441 / 800 ( 55%)
11:09:22............................................................... 504 / 800 ( 63%)
11:09:22............................................................... 567 / 800 ( 70%)
11:09:22............................................................... 630 / 800 ( 78%)
11:09:22............................................................... 693 / 800 ( 86%)
11:09:22............................................................... 756 / 800 ( 94%)
11:09:22............................................ 800 / 800 (100%)
11:09:2211:09:22Time: 00:02.161, Memory: 42.50 MB
11:09:2211:09:22OK (800 tests, 8649 assertions)
11:09:2211:09:2211:09:22You should really speed up these slow tests (>100ms)...
11:09:22 1. 234ms to run MediaWiki\\Tests\\Structure\\SettingsTest::testConfigGeneration with data set "docs/config-schema.yaml"
11:09:22 2. 212ms to run MediaWiki\\Tests\\Structure\\SettingsTest::testConfigGeneration with data set "includes/MainConfigNames.php"
11:09:22 3. 208ms to run AutoLoaderStructureTest::testAutoloadOrder
11:09:22 4. 206ms to run MediaWiki\\Tests\\Structure\\SettingsTest::testConfigGeneration with data set "includes/config-schema.php"
11:09:22 5. 197ms to run MediaWiki\\Tests\\Structure\\SettingsTest::testConfigGeneration with data set "docs/config-vars.php"
11:09:22 6. 163ms to run AutoLoaderStructureTest::testAutoLoadConfig
11:09:22Worker exited with status 0
11:09:34> phpunit '--testsuite' 'split_group_5' '--exclude-group' 'Broken,ParserFuzz,Stub,Standalone,Database' '--cache-result-file=.phpunit_group_5_databaseless.result.cache'
11:09:34Using PHP 7.4.33
11:09:34Running with MediaWiki settings because there might be integration tests
11:09:34PHPUnit 9.6.19 by Sebastian Bergmann and contributors.
11:09:3411:09:34............................................................. 61 / 3036 ( 2%)
11:09:34............................................................. 122 / 3036 ( 4%)
11:09:34............................................................. 183 / 3036 ( 6%)
11:09:34............................................................. 244 / 3036 ( 8%)
11:09:34............................................................. 305 / 3036 ( 10%)
11:09:34............................................................. 366 / 3036 ( 12%)
11:09:34............................................................. 427 / 3036 ( 14%)
11:09:34............................................................. 488 / 3036 ( 16%)
11:09:34............................................................. 549 / 3036 ( 18%)
11:09:34............................................................. 610 / 3036 ( 20%)
11:09:34............................................................. 671 / 3036 ( 22%)
11:09:34............................................................. 732 / 3036 ( 24%)
11:09:34............................................................. 793 / 3036 ( 26%)
11:09:34............................................................. 854 / 3036 ( 28%)
11:09:34............................................................. 915 / 3036 ( 30%)
11:09:34............................................................. 976 / 3036 ( 32%)
11:09:34............................................................. 1037 / 3036 ( 34%)
11:09:34............................................................. 1098 / 3036 ( 36%)
11:09:34............................................................. 1159 / 3036 ( 38%)
11:09:34............................................................. 1220 / 3036 ( 40%)
11:09:34............................................................. 1281 / 3036 ( 42%)
11:09:34............................................................. 1342 / 3036 ( 44%)
11:09:34............................................................. 1403 / 3036 ( 46%)
11:09:34............................................................. 1464 / 3036 ( 48%)
11:09:34............................................................. 1525 / 3036 ( 50%)
11:09:34............................................................. 1586 / 3036 ( 52%)
11:09:34............................................................. 1647 / 3036 ( 54%)
11:09:34............................................................. 1708 / 3036 ( 56%)
11:09:34............................................................. 1769 / 3036 ( 58%)
11:09:34............................................................. 1830 / 3036 ( 60%)
11:09:34............................................................. 1891 / 3036 ( 62%)
11:09:34............................................................. 1952 / 3036 ( 64%)
11:09:34............................................................. 2013 / 3036 ( 66%)
11:09:34............................................................. 2074 / 3036 ( 68%)
11:09:34............................................................. 2135 / 3036 ( 70%)
11:09:34............................................................. 2196 / 3036 ( 72%)
11:09:34............................................................. 2257 / 3036 ( 74%)
11:09:34............................................................. 2318 / 3036 ( 76%)
11:09:34............................................................. 2379 / 3036 ( 78%)
11:09:34............................................................. 2440 / 3036 ( 80%)
11:09:34............................................................. 2501 / 3036 ( 82%)
11:09:34............................................................. 2562 / 3036 ( 84%)
11:09:34............................................................. 2623 / 3036 ( 86%)
11:09:34............................................................. 2684 / 3036 ( 88%)
11:09:34............................................................. 2745 / 3036 ( 90%)
11:09:34............................................................. 2806 / 3036 ( 92%)
11:09:34............................................................. 2867 / 3036 ( 94%)
11:09:34............................................................. 2928 / 3036 ( 96%)
11:09:34............................................................. 2989 / 3036 ( 98%)
11:09:34............................................... 3036 / 3036 (100%)
11:09:3411:09:34Time: 00:14.373, Memory: 178.50 MB
11:09:3411:09:34OK (3036 tests, 3047 assertions)
11:09:3411:09:3411:09:34You should really speed up these slow tests (>100ms)...
11:09:34 1. 414ms to run ScopeStructureTest::testAutoloadNoFileScope with data set "/workspace/src/includes/languages/data/ZhConversion.php"
11:09:34 2. 192ms to run ScopeStructureTest::testAutoloadNoFileScope with data set "/workspace/src/includes/HookContainer/HookRunner.php"
11:09:34 3. 162ms to run ScopeStructureTest::testAutoloadNoFileScope with data set "/workspace/src/includes/parser/Parser.php"
11:09:34 4. 115ms to run ScopeStructureTest::testAutoloadNoFileScope with data set "/workspace/src/includes/editpage/EditPage.php"
11:09:34 5. 111ms to run ScopeStructureTest::testAutoloadNoFileScope with data set "/workspace/src/includes/MediaWikiServices.php"
11:09:34Worker exited with status 0
11:09:34INFO:quibble.commands:<<< Finish: PHPUnit extensions suite (without database or standalone) parallel run (Composer), in 16.414 s
Run phpbench
11:09:34INFO:quibble.commands:>>> Start: Run phpbench
11:09:34INFO:quibble.commands:Run phpbench
11:09:34INFO:quibble.commands:No phpbench entry found in composer.json
11:09:34INFO:quibble.commands:<<< Finish: Run phpbench, in 0.001 s
11:09:34INFO:quibble.commands:>>> Start: Run Qunit tests
11:09:34INFO:quibble.use_headless:Display: <None>
11:09:34DEBUG:quibble.chromium_flags:Flags: ['--autoplay-policy=no-user-gesture-required', '--disable-pushstate-throttle', '--no-sandbox', '--headless', '--disable-gpu', '--remote-debugging-port=9222']
11:09:34WARNING:backend.ChromeWebDriver:[1730545774.635][SEVERE]: bind() failed: Cannot assign requested address (99)
11:09:35Running "assert-mw-env" task
11:09:3511:09:35Running "karma:firefox" (karma) task
11:09:3502 11 2024 11:09:35.187:DEBUG [config]: No config file specified.
11:09:3502 11 2024 11:09:35.190:WARN [config]: "/" is proxied, you should probably change urlRoot to avoid conflicts
11:09:3502 11 2024 11:09:35.192:DEBUG [karma-server]: Final config Config {
11:09:35 LOG_DISABLE: 'OFF',
11:09:35 LOG_ERROR: 'ERROR',
11:09:35 LOG_WARN: 'WARN',
11:09:35 LOG_INFO: 'INFO',
11:09:35 LOG_DEBUG: 'DEBUG',
11:09:35 frameworks: [ 'qunit' ],
11:09:35 protocol: 'http:',
11:09:35 port: 9876,
11:09:35 listenAddress: '0.0.0.0',
11:09:35 hostname: 'localhost',
11:09:35 httpsServerConfig: {},
11:09:35 basePath: '/workspace/src',
11:09:35 files: [
11:09:35 UrlPattern {
11:09:35 pattern: 'http://127.0.0.1:9413//index.php?title=Special:JavaScriptTest/qunit/export',
11:09:35 served: false,
11:09:35 included: true,
11:09:35 watched: false,
11:09:35 nocache: false,
11:09:35 weight: [ 1, 0, 0, 0, 0, 1 ],
11:09:35 type: 'js',
11:09:35 isBinary: undefined,
11:09:35 integrity: undefined
11:09:35 }
11:09:35 ],
11:09:35 browserConsoleLogOptions: { level: 'debug', format: '%b %T: %m', terminal: true },
11:09:35 customContextFile: null,
11:09:35 customDebugFile: null,
11:09:35 customClientContextFile: null,
11:09:35 exclude: [],
11:09:35 logLevel: 'DEBUG',
11:09:35 colors: true,
11:09:35 autoWatch: false,
11:09:35 autoWatchBatchDelay: 250,
11:09:35 restartOnFileChange: false,
11:09:35 usePolling: true,
11:09:35 reporters: [ 'mocha' ],
11:09:35 singleRun: true,
11:09:35 browsers: [ 'FirefoxHeadless' ],
11:09:35 captureTimeout: 60000,
11:09:35 pingTimeout: 5000,
11:09:35 proxies: { '/': { target: 'http://127.0.0.1:9413/', changeOrigin: true } },
11:09:35 proxyValidateSSL: true,
11:09:35 preprocessors: [Object: null prototype] {},
11:09:35 preprocessor_priority: {},
11:09:35 urlRoot: '/',
11:09:35 upstreamProxy: undefined,
11:09:35 reportSlowerThan: 0,
11:09:35 loggers: [
11:09:35 {
11:09:35 type: 'console',
11:09:35 layout: { type: 'pattern', pattern: '%[%d{DATETIME}:%p [%c]: %]%m' }
11:09:35 }
11:09:35 ],
11:09:35 transports: [ 'polling', 'websocket' ],
11:09:35 forceJSONP: false,
11:09:35 plugins: [
11:09:35 '@wikimedia/karma-firefox-launcher',
11:09:35 'karma-*',
11:09:35 [Object: null prototype] {
11:09:35 'launcher:ChromeCustom': [ 'factory', [Function (anonymous)] ]
11:09:35 }
11:09:35 ],
11:09:35 client: {
11:09:35 args: [],
11:09:35 useIframe: true,
11:09:35 runInParent: false,
11:09:35 captureConsole: true,
11:09:35 clearContext: true,
11:09:35 allowedReturnUrlPatterns: [ '^https?://' ],
11:09:35 qunit: { autostart: false }
11:09:35 },
11:09:35 defaultClient: {
11:09:35 args: [],
11:09:35 useIframe: true,
11:09:35 runInParent: false,
11:09:35 captureConsole: true,
11:09:35 clearContext: true,
11:09:35 allowedReturnUrlPatterns: [ '^https?://' ],
11:09:35 qunit: { autostart: false }
11:09:35 },
11:09:35 browserDisconnectTimeout: 2000,
11:09:35 browserDisconnectTolerance: 0,
11:09:35 browserNoActivityTimeout: 60000,
11:09:35 processKillTimeout: 2000,
11:09:35 concurrency: Infinity,
11:09:35 failOnEmptyTestSuite: true,
11:09:35 retryLimit: 2,
11:09:35 detached: false,
11:09:35 crossOriginAttribute: false,
11:09:35 browserSocketTimeout: 20000,
11:09:35 background: false,
11:09:35 customLaunchers: {
11:09:35 ChromeCustom: {
11:09:35 base: 'ChromeHeadless',
11:09:35 flags: [
11:09:35 '--autoplay-policy=no-user-gesture-required',
11:09:35 '--disable-pushstate-throttle',
11:09:35 '--no-sandbox',
11:09:35 '--headless',
11:09:35 '--disable-gpu',
11:09:35 '--remote-debugging-port=9222'
11:09:35 ]
11:09:35 }
11:09:35 }
11:09:35}
11:09:3502 11 2024 11:09:35.192:DEBUG [plugin]: Loading plugin @wikimedia/karma-firefox-launcher.
11:09:3502 11 2024 11:09:35.196:DEBUG [plugin]: Loading karma-* from /workspace/src/node_modules
11:09:3502 11 2024 11:09:35.209:DEBUG [plugin]: Loading plugin /workspace/src/node_modules/karma-chrome-launcher.
11:09:3502 11 2024 11:09:35.215:DEBUG [plugin]: Loading plugin /workspace/src/node_modules/karma-mocha-reporter.
11:09:3502 11 2024 11:09:35.234:DEBUG [plugin]: Loading plugin /workspace/src/node_modules/karma-qunit.
11:09:3502 11 2024 11:09:35.234:DEBUG [plugin]: Loading inline plugin defining launcher:ChromeCustom.
11:09:3502 11 2024 11:09:35.240:DEBUG [web-server]: Instantiating middleware
11:09:3502 11 2024 11:09:35.240:DEBUG [reporter]: Trying to load reporter: mocha
11:09:3502 11 2024 11:09:35.242:DEBUG [reporter]: Trying to load color-version of reporter: mocha (mocha_color)
11:09:3502 11 2024 11:09:35.242:DEBUG [reporter]: Couldn't load color-version.
11:09:3511:09:35START:11:09:3502 11 2024 11:09:35.255:INFO [karma-server]: Karma v6.4.1 server started at http://localhost:9876/11:09:3502 11 2024 11:09:35.255:INFO [launcher]: Launching browsers FirefoxHeadless with concurrency unlimited
11:09:3502 11 2024 11:09:35.261:INFO [launcher]: Starting browser FirefoxHeadless
11:09:3502 11 2024 11:09:35.261:DEBUG [launcher]: null -> BEING_CAPTURED
11:09:3502 11 2024 11:09:35.261:DEBUG [temp-dir]: Creating temp dir at /tmp/karma-28754508
11:09:3502 11 2024 11:09:35.262:DEBUG [launcher]: firefox http://localhost:9876/?id=28754508 -profile /tmp/karma-28754508 -no-remote -wait-for-browser -headless --start-debugger-server 6000
11:09:3802 11 2024 11:09:38.333:DEBUG [web-server]: serving: /workspace/src/node_modules/karma/static/client.html
11:09:3802 11 2024 11:09:38.876:DEBUG [web-server]: serving: /workspace/src/node_modules/karma/static/karma.js
11:09:3802 11 2024 11:09:38.970:DEBUG [web-server]: serving: /workspace/src/node_modules/karma/static/favicon.ico
11:09:3802 11 2024 11:09:38.996:DEBUG [karma-server]: A browser has connected on socket VGUbAKVyeg1Vd7PIAAAB
11:09:3902 11 2024 11:09:38.998:DEBUG [web-server]: upgrade /socket.io/?EIO=4&transport=websocket&sid=rbuY6anedoFlznVMAAAA
11:09:3902 11 2024 11:09:38.999:DEBUG [proxy]: NOT upgrading proxyWebSocketRequest /socket.io/?EIO=4&transport=websocket&sid=rbuY6anedoFlznVMAAAA
11:09:3902 11 2024 11:09:39.078:DEBUG [Firefox 115.0 (Linux x86_64)]: undefined -> CONNECTED
11:09:3902 11 2024 11:09:39.078:INFO [Firefox 115.0 (Linux x86_64)]: Connected on socket VGUbAKVyeg1Vd7PIAAAB with id 28754508
11:09:3902 11 2024 11:09:39.080:DEBUG [launcher]: BEING_CAPTURED -> CAPTURED
11:09:3902 11 2024 11:09:39.080:DEBUG [launcher]: FirefoxHeadless (id 28754508) captured in 3.823 secs
11:09:3902 11 2024 11:09:39.080:DEBUG [Firefox 115.0 (Linux x86_64)]: CONNECTED -> CONFIGURING
11:09:3902 11 2024 11:09:39.123:DEBUG [middleware:karma]: custom files null null null
11:09:3902 11 2024 11:09:39.124:DEBUG [middleware:karma]: Serving static request /context.html
11:09:3902 11 2024 11:09:39.126:DEBUG [web-server]: serving: /workspace/src/node_modules/karma/static/context.html
11:09:3902 11 2024 11:09:39.178:DEBUG [middleware:source-files]: Requesting /base/node_modules/qunit/qunit/qunit.css?dbaee396ca3e6cd14067471c048590f9d650be87
11:09:3902 11 2024 11:09:39.179:DEBUG [middleware:source-files]: Fetching /workspace/src/node_modules/qunit/qunit/qunit.css
11:09:3902 11 2024 11:09:39.180:DEBUG [web-server]: serving (cached): /workspace/src/node_modules/qunit/qunit/qunit.css
11:09:3902 11 2024 11:09:39.183:DEBUG [middleware:source-files]: Requesting /base/node_modules/qunit/qunit/qunit.js?8235115d2e299369f216e0e1f7919be9faadf32d
11:09:3902 11 2024 11:09:39.183:DEBUG [middleware:source-files]: Fetching /workspace/src/node_modules/qunit/qunit/qunit.js
11:09:3902 11 2024 11:09:39.184:DEBUG [web-server]: serving (cached): /workspace/src/node_modules/qunit/qunit/qunit.js
11:09:3902 11 2024 11:09:39.189:DEBUG [middleware:source-files]: Requesting /base/node_modules/karma-qunit/lib/adapter.js?5e1aa67d9adc9aab151547c9cc815cbb9ddfb70e
11:09:3902 11 2024 11:09:39.189:DEBUG [middleware:source-files]: Fetching /workspace/src/node_modules/karma-qunit/lib/adapter.js
11:09:3902 11 2024 11:09:39.189:DEBUG [web-server]: serving (cached): /workspace/src/node_modules/karma-qunit/lib/adapter.js
11:09:3902 11 2024 11:09:39.190:DEBUG [web-server]: serving: /workspace/src/node_modules/karma/static/context.js
11:09:3902 11 2024 11:09:39.973:DEBUG [middleware:source-files]: Requesting /load.php?modules=jquery%7Cmediawiki.base&version=82ujr
11:09:3902 11 2024 11:09:39.973:DEBUG [middleware:source-files]: Fetching /load.php
11:09:3902 11 2024 11:09:39.974:DEBUG [proxy]: proxying request - /load.php?modules=jquery%7Cmediawiki.base&version=82ujr to 127.0.0.1:9413
11:09:3902 11 2024 11:09:39.987:DEBUG [middleware:source-files]: Requesting /load.php?modules=jquery.client%2ChighlightText%2ClengthLimit%2CmakeCollapsible%2Ctablesorter%2CtextSelection%7Cjquery.makeCollapsible.styles%7Cjquery.tablesorter.styles%7Cmediawiki.ForeignApi%2CString%2CTitle%2CUri%2Capi%2Ccldr%2Ccookie%2Cdeflate%2Cexperiments%2Cinspect%2CjqueryMsg%2Clanguage%2CmessagePoster%2Cqunit-testrunner%2Crouter%2Cstorage%2Ctemplate%2Ctoc%2Cuser%2Cutil%2CvisibleTimeout%2Cwidgets%7Cmediawiki.ForeignApi.core%7Cmediawiki.language.months%2Ctestdata%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.page.ready%7Cmediawiki.rcfilters.filters.ui%7Cmediawiki.template.mustache%7Cmediawiki.widgets.MediaSearch%2CTable%2Cstyles%7Coojs%2Coojs-ui-core%2Coojs-ui-widgets%2Csinonjs%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui-widgets.icons%7Coojs-ui-windows.icons%7Coojs-ui.styles.icons-content%2Cicons-editing-advanced%2Cicons-editing-core%2Cicons-editing-styling%2Cicons-interactions%2Cicons-layout%2Cicons-media%2Cicons-moderation%2Cindicators%7Cskins.vector.clientPreferences%7Ctest.MediaWiki%2CVector&version=93ymv
11:09:3902 11 2024 11:09:39.987:DEBUG [middleware:source-files]: Fetching /load.php
11:09:3902 11 2024 11:09:39.987:DEBUG [proxy]: proxying request - /load.php?modules=jquery.client%2ChighlightText%2ClengthLimit%2CmakeCollapsible%2Ctablesorter%2CtextSelection%7Cjquery.makeCollapsible.styles%7Cjquery.tablesorter.styles%7Cmediawiki.ForeignApi%2CString%2CTitle%2CUri%2Capi%2Ccldr%2Ccookie%2Cdeflate%2Cexperiments%2Cinspect%2CjqueryMsg%2Clanguage%2CmessagePoster%2Cqunit-testrunner%2Crouter%2Cstorage%2Ctemplate%2Ctoc%2Cuser%2Cutil%2CvisibleTimeout%2Cwidgets%7Cmediawiki.ForeignApi.core%7Cmediawiki.language.months%2Ctestdata%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.page.ready%7Cmediawiki.rcfilters.filters.ui%7Cmediawiki.template.mustache%7Cmediawiki.widgets.MediaSearch%2CTable%2Cstyles%7Coojs%2Coojs-ui-core%2Coojs-ui-widgets%2Csinonjs%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui-widgets.icons%7Coojs-ui-windows.icons%7Coojs-ui.styles.icons-content%2Cicons-editing-advanced%2Cicons-editing-core%2Cicons-editing-styling%2Cicons-interactions%2Cicons-layout%2Cicons-media%2Cicons-moderation%2Cindicators%7Cskins.vector.clientPreferences%7Ctest.MediaWiki%2CVector&version=93ymv to 127.0.0.1:9413
11:09:41Firefox 115.0 (Linux x86_64) WARN: 'This page is using the deprecated ResourceLoader module "mediawiki.Uri".
11:09:41[1.43] Please use browser native URL.'
11:09:4102 11 2024 11:09:41.937:DEBUG [Firefox 115.0 (Linux x86_64)]: CONFIGURING -> EXECUTING
11:09:41 testrunner11:09:41✔ assert.htmlEqual11:09:41 Vector (integration)11:09:41✔ Client preferences: Behaves same for all users11:09:41 mediawiki11:09:41✔ Initial check11:09:41✔ mw.format11:09:41✔ mw.now11:09:41 mw.Message11:09:41✔ Construct11:09:41✔ plain()11:09:41✔ escaped()11:09:41✔ parse()11:09:41✔ exists()11:09:41✔ toString() non-existing11:09:41✔ jqueryMsg / Magic words11:09:41✔ mw.msg()11:09:41 mw.Map11:09:41✔ Store simple string key11:09:41✔ Store number-like key11:09:41✔ get()11:09:41✔ values11:09:41✔ set()11:09:41✔ exists()11:09:41✔ Avoid prototype pollution11:09:41 mw.loader11:09:41✔ .using( .., Function callback ) Promise11:09:41✔ Prototype method as module name11:09:41✔ .using() - Error: Circular dependency [Set]11:09:41WARN: 'Skipped unavailable module test.load.circleC'
11:09:41✔ .load() - Error: Circular dependency11:09:41WARN: 'Skipped unavailable module test.load.circleDirect'
11:09:41✔ .load() - Error: Circular dependency (direct)11:09:42✔ .using() - Error: Unregistered11:09:42✔ .load() - Error: Unregistered11:09:42WARN: 'Skipped unavailable module test.load.missingdep'
11:09:42✔ .load() - Error: Missing dependency11:09:42✔ .implement( styles={ "css": [text, ..] } )11:09:4202 11 2024 11:09:42.064:DEBUG [middleware:source-files]: Requesting /api.php
11:09:4202 11 2024 11:09:42.064:DEBUG [middleware:source-files]: Fetching /api.php
11:09:4202 11 2024 11:09:42.065:DEBUG [proxy]: proxying request - /api.php to 127.0.0.1:9413
11:09:42✔ .implement( styles={ "url": { <media>: [url, ..] } } )11:09:42✔ .implement( messages before script )11:09:42✔ .implement( styles with @import )11:09:42✔ .implement( dependency with styles )11:09:42✔ .implement( only scripts )11:09:42✔ .implement( only messages )11:09:42✔ .implement( empty )11:09:42✔ .implement() [packageFiles long paths]11:09:42✔ .implement() [packageFiles with parent files]11:09:42✔ .implement( name with @ )11:09:42✔ .addSource()11:09:42✔ .register() - ES6 support always true11:09:42✔ .batchRequest() - Module version combines for given batch11:09:42✔ .batchRequest() - Module version combined based on sorted order11:09:42✔ Broken indirect dependency11:09:42✔ Out-of-order implementation11:09:42✔ Missing dependency11:09:42✔ Dependency handling11:09:42✔ Network failure11:09:42✔ Skip-function handling11:09:42✔ .load() [protocol-relative URL T32825]11:09:42✔ .load() [absolute URL]11:09:42✔ importScript()11:09:42✔ importStylesheet()11:09:42✔ Empty string module name - T2880411:09:42✔ Executing race - T11223211:09:42✔ Stale response caching - T11758711:09:42✔ No storing of group=private responses11:09:42✔ No storing of group=user responses11:09:42✔ mw.loader.store.load - Disallowed localStorage11:09:42✔ mw.loader.store.load - Invalid JSON11:09:42✔ mw.loader.store.load - Unusable JSON11:09:42✔ mw.loader.store.load - Expired JSON11:09:42✔ mw.loader.store.load - Good JSON11:09:42✔ require()11:09:42✔ require() in debug mode11:09:4202 11 2024 11:09:42.544:DEBUG [middleware:source-files]: Requesting /load.php?modules=site.styles&version=131ff
11:09:4202 11 2024 11:09:42.544:DEBUG [middleware:source-files]: Fetching /load.php
11:09:4202 11 2024 11:09:42.544:DEBUG [proxy]: proxying request - /load.php?modules=site.styles&version=131ff to 127.0.0.1:9413
11:09:42✔ Implicit dependencies11:09:42✔ .getScript() - success11:09:4202 11 2024 11:09:42.602:DEBUG [middleware:source-files]: Requesting /this-is-not-found.txt
11:09:4202 11 2024 11:09:42.603:DEBUG [middleware:source-files]: Fetching /this-is-not-found.txt
11:09:4202 11 2024 11:09:42.603:DEBUG [proxy]: proxying request - /this-is-not-found.txt to 127.0.0.1:9413
11:09:42✔ .getScript() - failure11:09:42 mw.requestIdleCallback11:09:42✔ callback11:09:42✔ nested11:09:42✔ timeRemaining11:09:42✔ native11:09:42 startup/jscompat11:09:42✔ Unicode variable name11:09:42✔ textarea strips newline (T14130) [0]11:09:42✔ textarea strips newline (T14130) [1]11:09:42✔ textarea strips newline (T14130) [2]11:09:42✔ textarea strips newline (T14130) [3]11:09:42 startup/clientprefs11:09:42✔ clientprefs() [default behaviour]11:09:42✔ clientprefs() [default behaviour on skin with clientprefs]11:09:42✔ clientprefs() [toggle feature with boolean suffix]11:09:42✔ clientprefs() [toggle feature with number suffix]11:09:42✔ clientprefs() [toggle feature with word suffix]11:09:42✔ clientprefs() [ignore key without clientpref suffix]11:09:42✔ clientprefs() [ignore value with dashes]11:09:42✔ clientprefs() [toggle multiple features]11:09:42 jquery.highlightText11:09:42✔ highlightText() [0]11:09:42✔ highlightText() [1]11:09:42✔ highlightText() [2]11:09:42✔ highlightText() [3]11:09:42✔ highlightText() [4]11:09:42✔ highlightText() [5]11:09:42✔ highlightText() [6]11:09:42✔ highlightText() [7]11:09:42✔ highlightText() [8]11:09:42✔ highlightText() [9]11:09:42✔ highlightText() [10]11:09:42✔ highlightText() [11]11:09:42✔ highlightText() [12]11:09:42✔ highlightText() [13]11:09:42✔ highlightText() [14]11:09:42✔ highlightText() [15]11:09:42✔ highlightText() [16]11:09:42✔ highlightText() [17]11:09:42✔ highlightText() [18]11:09:42✔ highlightText() [19]11:09:42✔ highlightText() [20]11:09:42✔ highlightText() [21]11:09:42✔ highlightText() [22]11:09:42✔ highlightText() [23]11:09:42✔ highlightText() [24]11:09:42✔ highlightText() [25]11:09:42✔ highlightText() [26]11:09:42✔ highlightText() [27]11:09:42✔ highlightText() [28]11:09:42✔ highlightText() [29]11:09:42✔ highlightText() [30]11:09:42✔ highlightText() [31]11:09:42✔ highlightText() [32]11:09:42✔ highlightText() [33]11:09:42✔ highlightText() [34]11:09:42✔ highlightText() [35]11:09:42 jquery.lengthLimit11:09:42✔ byteLimit() [Plain text input]11:09:42✔ byteLimit() [Plain text input. Calling byteLimit with no parameters and no maxlength attribute (T38310)]11:09:42✔ byteLimit() [Limit using the maxlength attribute]11:09:42✔ byteLimit() [Limit using a custom value]11:09:42✔ byteLimit() [Limit using a custom value, overriding maxlength attribute]11:09:42✔ byteLimit() [Limit using a custom value (multibyte)]11:09:42✔ byteLimit() [Limit using a custom value (multibyte, outside BMP)]11:09:42✔ byteLimit() [Limit using a custom value (multibyte) overlapping a byte]11:09:42✔ byteLimit() [Pass the limit and a callback as input filter]11:09:42✔ byteLimit() [Limit using the maxlength attribute and pass a callback as input filter]11:09:42✔ byteLimit() [Truncate with exceeded limit and filter callback]11:09:42✔ byteLimit() [Input filter that increases the length]11:09:42✔ byteLimit() [Input filter of which the base exceeds the limit]11:09:42✔ byteLimit() [Unpaired surrogates do not crash]11:09:42✔ Confirm properties and attributes set11:09:42✔ Trim from insertion when limit exceeded11:09:42✔ Do not cut up false matching substrings in emoji insertions11:09:42 jquery.makeCollapsible11:09:42✔ testing hooks/triggers11:09:42✔ basic div operation11:09:42✔ basic table operation11:09:42✔ table support [table with caption]11:09:42✔ table support [table with caption and thead]11:09:42✔ basic list operation [ul]11:09:42✔ basic list operation [ol]11:09:42✔ basic operation when synchronous (options.instantHide)11:09:42✔ mw-made-collapsible data added11:09:42✔ mw-collapsible added when missing11:09:42✔ mw-collapsed added when missing11:09:42✔ initial collapse (mw-collapsed class)11:09:42✔ initial collapse (options.collapsed)11:09:42✔ clicks on links inside toggler pass through11:09:42✔ click on non-link inside toggler counts as trigger11:09:42✔ collapse/expand text (data-collapsetext, data-expandtext)11:09:42✔ collapse/expand text (options.collapseText, options.expandText)11:09:42✔ predefined toggle button and text (.mw-collapsible-toggle/.mw-collapsible-text)11:09:42✔ cloned collapsibles can be made collapsible again11:09:42✔ collapsibles in cloned elements are controlled by toggle clones11:09:42✔ reveal hash fragment11:09:42✔ T168689 - nested collapsible divs should keep independent state11:09:42✔ placeholder element for toggle11:09:42✔ T364712 - toggle moved outside of collapsible should still work11:09:42 jquery.tablesorter11:09:42✔ Planets: initial sort ascending by name11:09:42✔ Planets: initial sort descending by radius11:09:42✔ Planets: ascending by name11:09:42✔ Planets: ascending by name (again)11:09:42✔ Planets: ascending by name (multiple clicks)11:09:42✔ Planets: descending by name11:09:42✔ Planets: return to initial sort11:09:42✔ Planets: ascending radius11:09:42✔ Planets: descending radius11:09:42✔ Sorting multiple columns by passing sort list11:09:42✔ Sorting multiple columns by programmatically triggering sort()11:09:42✔ Reset to initial sorting by triggering sort() without any parameters11:09:42✔ Sort via click event after having initialized the tablesorter with initial sorting11:09:42✔ Multi-sort via click event after having initialized the tablesorter with initial sorting11:09:42✔ Reset sorting making table appear unsorted11:09:42✔ Sorting with colspanned headers: spanned column11:09:42✔ Sorting with colspanned headers: sort spanned column twice11:09:42✔ Sorting with colspanned headers: subsequent column11:09:42✔ Sorting with colspanned headers: sort subsequent column twice11:09:42✔ Basic planet table: one unsortable column11:09:42✔ T30775: German-style (dmy) short numeric dates11:09:42✔ T30775: American-style (mdy) short numeric dates11:09:42✔ IPv4 address sorting (T19141)11:09:42✔ IPv4 address reverse sorting (T19141)11:09:42✔ Accented Characters with custom collation11:09:42✔ Accented Characters Swedish locale11:09:42✔ Digraphs with custom collation11:09:42✔ Rowspan not exploded on init11:09:42✔ Basic planet table: same value for multiple rows via rowspan11:09:42✔ Basic planet table: same value for multiple rows via rowspan (sorting initially)11:09:42✔ Basic planet table: Same value for multiple rows via rowspan II11:09:42✔ Complex date parsing I11:09:42✔ Currency parsing I11:09:42✔ Handling of .sortbottom11:09:42✔ Handling of .sorttop11:09:42WARN: '(sort-rowspan-error)'
11:09:42✔ Rowspan invalid value (T265503)11:09:42✔ Test sort buttons not added to .sorttop row11:09:42✔ Test detection routine11:09:42✔ T34047 - caption must be before thead11:09:42✔ data-sort-value attribute, when available, should override sorting position11:09:42✔ T10115: sort numbers with commas (ascending)11:09:42✔ T10115: sort numbers with commas (descending)11:09:42✔ T34888 - Tables inside a tableheader cell11:09:42✔ Correct date sorting I11:09:42✔ Correct date sorting II11:09:42✔ ISO date sorting11:09:42✔ Sorting images using alt text11:09:42✔ Sorting images using alt text (complex)11:09:42✔ Sorting images using alt text (with format autodetection)11:09:42✔ T40911 - The row with the largest amount of columns should receive the sort indicators11:09:42✔ rowspans in table headers should prefer the last row when rows are equal in length11:09:42✔ holes in the table headers should not throw JS errors11:09:42✔ td cells in thead should not be taken into account for longest row calculation11:09:42✔ Rowspan exploding with row headers11:09:42✔ Rowspan exploding with row headers and colspans11:09:42✔ Rowspan exploding with colspanned cells11:09:42✔ Rowspan exploding with colspanned cells (2)11:09:42✔ Rowspan exploding with rightmost rows spanning most11:09:42✔ Rowspan exploding with rightmost rows spanning most (2)11:09:42✔ Rowspan exploding with row-and-colspanned cells11:09:42✔ Rowspan exploding with uneven rowspan layout11:09:42✔ T105731 - incomplete rows in table body11:09:42✔ bug T114721 - use of expand-child class11:09:42✔ T29745 - References ignored in sortkey11:09:42✔ T311145 - style tags ignored in sortkey11:09:42 jquery.tablesorter > parsers11:09:42✔ Textual keys11:09:42✔ IPv411:09:42✔ MDY Dates using mdy content language11:09:42✔ MDY Dates using dmy content language11:09:42✔ Very old MDY dates11:09:42✔ MDY Dates11:09:42✔ DMY Dates11:09:42✔ Clobbered Dates11:09:42✔ MY Dates11:09:42✔ Y Dates11:09:42✔ Currency11:09:42✔ Currency with european separators11:09:42✔ T114604 - Breaking tfoot with rowspans11:09:42 jquery.textSelection11:09:42✔ encapsulateText [Adding sig to end of text]11:09:42✔ encapsulateText [Adding bold to empty]11:09:42✔ encapsulateText [Adding bold to existing text]11:09:42✔ encapsulateText [ownline option: adding new h2]11:09:42✔ encapsulateText [ownline option: turn a whole line into new h2]11:09:42✔ encapsulateText [ownline option: turn a partial line into new h2]11:09:42✔ encapsulateText [splitlines option: no selection, insert new list item]11:09:42✔ encapsulateText [splitlines option: single partial line selection, insert new list item]11:09:42✔ encapsulateText [splitlines option: multiple lines]11:09:42✔ getCaretPosition [initial]11:09:42✔ getCaretPosition [forced empty selection]11:09:42✔ getCaretPosition [small selection]11:09:42 mediawiki.base/errorLogger11:09:42✔ installGlobalHandler11:09:42✔ logError11:09:42 mediawiki.base11:09:42✔ mw.hook - add() and fire()11:09:42✔ mw.hook - "hasOwnProperty" as hook name11:09:42✔ mw.hook - Number of arguments11:09:42✔ mw.hook - Variadic firing data and array data type11:09:42✔ mw.hook - Chainable11:09:42✔ mw.hook - Memory from before11:09:42✔ mw.hook - functions always registered before firing11:09:42✔ mw.hook - Multiple consumers with memory between fires11:09:42✔ mw.hook - Memory is not wiped when consumed.11:09:42✔ mw.hook - Unregistering handler.11:09:42✔ mw.hook - Limit impact of consumer errors T22335211:09:42✔ mw.hook - Variadic add and remove11:09:42✔ mw.log.makeDeprecated()11:09:42✔ mw.log.deprecate()11:09:42✔ RLQ.push11:09:42 mediawiki.base/html11:09:42✔ escape11:09:42✔ element()11:09:42✔ element( tagName )11:09:42✔ element( tagName, attrs )11:09:42✔ element( tagName, attrs, content )11:09:42 mediawiki.base/track11:09:42✔ track11:09:42✔ trackSubscribe11:09:42✔ trackUnsubscribe11:09:42✔ trackError11:09:43 mediawiki.jqueryMsg11:09:43✔ Replace11:09:43✔ Plural11:09:43✔ Gender11:09:43✔ Case changing11:09:43✔ Grammar11:09:43✔ Formal11:09:43✔ Variables11:09:43✔ Bi-di11:09:43✔ Match PHP parser11:09:43✔ Links11:09:43✔ CaseSensitiveNamespaces11:09:43✔ LocalizedNamespaces11:09:43✔ Replacements in links11:09:43✔ Curly brace transformation11:09:43✔ Int11:09:43✔ Ns11:09:43✔ mw.Message.prototype.parser monkey-patch11:09:43✔ mw.Message.prototype.parser monkey-patch HTML-escape11:09:43✔ formatnum11:09:43✔ HTML11:09:43✔ Nowiki11:09:43✔ Behavior in case of invalid wikitext11:09:43✔ Non-string parameters to various functions11:09:43✔ Do not allow javascript: urls11:09:43✔ Do not allow arbitrary style11:09:43✔ Integration11:09:43✔ setParserDefaults11:09:43 mediawiki.messagePoster11:09:43✔ register11:09:43 mediawiki.String11:09:43✔ byteLength() [lowercase a-z]11:09:43✔ byteLength() [uppercase A-Z]11:09:43✔ byteLength() [numbers 0-9]11:09:43✔ byteLength() [an asterisk]11:09:43✔ byteLength() [3 spaces]11:09:43✔ byteLength() [U+0024 Dollar]11:09:43✔ byteLength() [U+00A2 Cent]11:09:43✔ byteLength() [U+20AC Euro]11:09:43✔ byteLength() [U+24B62 Han surrogate]11:09:43✔ charAt() [simple]11:09:43✔ charAt() UTF-16 text11:09:43✔ lcFirst() [empty string]11:09:43✔ lcFirst() [slash is unchanged]11:09:43✔ lcFirst() [ASCII uppercase]11:09:43✔ lcFirst() [ASCII lowercase unchanged]11:09:43✔ lcFirst() [first surrogate only]11:09:43✔ lcFirst() [first surrogate with char]11:09:43✔ lcFirst() [second surrogate only]11:09:43✔ lcFirst() [second surrogate with char]11:09:43✔ lcFirst() [from U+10C80 (Old Hungarian capital A) to U+10CC0 (Old Hungarian small A)]11:09:43✔ ucFirst() [empty string]11:09:43✔ ucFirst() [slash is unchanged]11:09:43✔ ucFirst() [ASCII uppercase unchanged]11:09:43✔ ucFirst() [ASCII lowercase]11:09:43✔ ucFirst() [first surrogate only]11:09:43✔ ucFirst() [first surrogate with char]11:09:43✔ ucFirst() [second surrogate only]11:09:43✔ ucFirst() [second surrogate with char]11:09:43✔ ucFirst() [from U+10CC0 (Old Hungarian small A) to U+10C80 (Old Hungarian capital A)]11:09:43✔ trimByteLength() [simple ASCII]11:09:43✔ trimByteLength() [multibyte input]11:09:43✔ trimByteLength() [multibyte outside BMP]11:09:43✔ trimByteLength() [multibyte overlapping a byte]11:09:43✔ trimByteLength() [at limit with shortening input filter]11:09:43✔ trimByteLength() [exceed limit with shortening input filter]11:09:43✔ trimByteLength() [below limit with expanding input filter]11:09:43✔ trimByteLength() [trim from insertion point 0]11:09:43✔ trimByteLength() [trim from insertion point 1]11:09:43✔ trimByteLength() [Do not cut up false matching substrings in emoji insertions]11:09:43✔ trimByteLength() [Unpaired surrogates do not crash]11:09:43 mediawiki.storage11:09:43✔ set/get(Object) with storage support11:09:43✔ set/get(Object) with storage methods disabled11:09:43✔ set/get(Object) with storage object disabled11:09:43✔ set/get with expiry - partial failure11:09:43 mediawiki.template11:09:43✔ add11:09:43✔ compile11:09:43✔ get11:09:43 mediawiki.template.mustache11:09:43✔ render11:09:43 mediawiki.inspect11:09:43✔ .getModuleSize() - scripts11:09:43 mediawiki.router11:09:43✔ instance11:09:43 mediawiki.Title11:09:43✔ constructor11:09:43✔ newFromText11:09:43✔ makeTitle11:09:43✔ Basic parsing11:09:43✔ Transformation11:09:43✔ Namespace detection and conversion11:09:43✔ isTalkPage/getTalkPage/getSubjectPage11:09:43✔ wantSignaturesNamespace11:09:43✔ Throw error on invalid title11:09:43✔ phpCharToUpper11:09:43✔ Case-sensivity11:09:43✔ toString / toText11:09:43✔ getExtension11:09:43✔ exists11:09:43✔ getUrl11:09:43✔ newFromImg11:09:43✔ getRelativeText11:09:43✔ normalizeExtension11:09:43✔ newFromUserInput11:09:43✔ newFromUserInput with invalid file name for upload11:09:43✔ newFromUserInput with misplaced parameter11:09:43✔ newFromUserInput with invalid file name, but not for upload11:09:43✔ newFromFileName11:09:43✔ makeTitle for non existent namespace11:09:43 mediawiki.toc11:09:43✔ Use toggle11:09:43✔ Initially hidden11:09:43 mediawiki.Uri11:09:43✔ new mw.Uri( string ) with HTTP value [strict mode]11:09:43✔ new mw.Uri( string ) with HTTP value [non-strict mode]11:09:43✔ new mw.Uri( string ) with overrideKeys [0]11:09:43✔ new mw.Uri( string ) with overrideKeys [1]11:09:43✔ new mw.Uri( string ) with non-HTTP values11:09:43✔ new mw.Uri( Object )11:09:43✔ new mw.Uri( empty )11:09:43✔ Setting properties11:09:43✔ .getQueryString()11:09:43✔ arrayParams11:09:43✔ .clone()11:09:43✔ .toString() after query manipulation11:09:43✔ Variable defaultUri11:09:43✔ Advanced URL11:09:43✔ Parse a uri with an @ symbol in the path and query11:09:43✔ Handle protocol-relative URLs11:09:43✔ T3765811:09:43 mediawiki.user11:09:43✔ options11:09:43✔ getters (anonymous)11:09:43✔ getters (logged-in)11:09:43✔ getGroups (callback)11:09:43✔ getGroups (Promise)11:09:43✔ getRights (callback)11:09:43✔ getRights (Promise)11:09:43✔ generateRandomSessionId11:09:43✔ generateRandomSessionId (fallback)11:09:43✔ getPageviewToken11:09:43✔ sessionId11:09:43 mediawiki.user > clientPrefs11:09:43✔ get() [from HTML element]11:09:43✔ get() [never read from cookie]11:09:43✔ set() [valid preferences]11:09:43✔ set() [invalid preferences]11:09:43✔ set() [invalid characters]11:09:43✔ set() [create cookie on change]11:09:43✔ set() [always store values]11:09:43✔ set() [throw if registered user]11:09:43 mediawiki.util11:09:43✔ rawurlencode11:09:43✔ escapeIdForAttribute11:09:43✔ escapeIdForLink11:09:43✔ percentDecodeFragment [0]11:09:43✔ percentDecodeFragment [1]11:09:43✔ percentDecodeFragment [2]11:09:43✔ percentDecodeFragment [3]11:09:43✔ percentDecodeFragment [4]11:09:43✔ percentDecodeFragment [5]11:09:43✔ percentDecodeFragment [6]11:09:43✔ percentDecodeFragment [7]11:09:43✔ percentDecodeFragment [8]11:09:43✔ percentDecodeFragment [9]11:09:43✔ percentDecodeFragment [10]11:09:43✔ percentDecodeFragment [11]11:09:43✔ percentDecodeFragment [12]11:09:43✔ wikiUrlencode [0]11:09:43✔ wikiUrlencode [1]11:09:43✔ wikiUrlencode [2]11:09:43✔ wikiUrlencode [3]11:09:43✔ wikiUrlencode [4]11:09:43✔ wikiUrlencode [5]11:09:43✔ wikiUrlencode [6]11:09:43✔ wikiUrlencode [7]11:09:43✔ wikiUrlencode [8]11:09:43✔ wikiUrlencode [9]11:09:43✔ wikiUrlencode [10]11:09:43✔ getUrl11:09:43✔ wikiScript11:09:43✔ addCSS11:09:43✔ getParamValue11:09:43✔ getArrayParam11:09:43✔ messageBox11:09:43✔ addPortlet does not append to DOM if no `before` is provided11:09:43✔ addPortlet returns null if bad selector given11:09:43✔ addPortlet appends to DOM if before provided11:09:43✔ addPortletLink (Vector list)11:09:43✔ addPortletLink (Minerva list)11:09:43✔ addPortletLink (nextNode option)11:09:43✔ addPortletLink (accesskey option)11:09:43✔ addPortletLink (nested list)11:09:43✔ validateEmail11:09:43✔ isIPv4Address invalid [0]11:09:43✔ isIPv4Address invalid [1]11:09:43✔ isIPv4Address invalid [2]11:09:43✔ isIPv4Address invalid [3]11:09:43✔ isIPv4Address invalid [4]11:09:43✔ isIPv4Address invalid [5]11:09:43✔ isIPv4Address invalid [6]11:09:43✔ isIPv4Address invalid [7]11:09:43✔ isIPv4Address invalid [8]11:09:43✔ isIPv4Address valid [0]11:09:43✔ isIPv4Address valid [1]11:09:43✔ isIPv6Address invalid [0]11:09:43✔ isIPv6Address invalid [1]11:09:43✔ isIPv6Address invalid [2]11:09:43✔ isIPv6Address invalid [3]11:09:43✔ isIPv6Address invalid [4]11:09:43✔ isIPv6Address invalid [5]11:09:43✔ isIPv6Address invalid [6]11:09:43✔ isIPv6Address invalid [7]11:09:43✔ isIPv6Address invalid [8]11:09:43✔ isIPv6Address invalid [9]11:09:43✔ isIPv6Address invalid [10]11:09:43✔ isIPv6Address invalid [11]11:09:43✔ isIPv6Address invalid [12]11:09:43✔ isIPv6Address invalid [13]11:09:43✔ isIPv6Address invalid [14]11:09:43✔ isIPv6Address invalid [15]11:09:43✔ isIPv6Address invalid [16]11:09:43✔ isIPv6Address valid [0]11:09:43✔ isIPv6Address valid [1]11:09:43✔ isIPv6Address valid [2]11:09:43✔ isIPv6Address valid [3]11:09:43✔ isIPv6Address valid [4]11:09:43✔ isIPv6Address valid [5]11:09:43✔ isIPv6Address valid [6]11:09:43✔ isIPv6Address valid [7]11:09:43✔ isIPv6Address valid [8]11:09:43✔ isIPv6Address valid [9]11:09:43✔ isIPv6Address valid [10]11:09:43✔ isIPv6Address valid [11]11:09:43✔ isIPv6Address valid [12]11:09:43✔ isIPv6Address valid [13]11:09:43✔ isIPv6Address valid [14]11:09:43✔ isIPv6Address valid [15]11:09:43✔ isIPv6Address valid [16]11:09:43✔ isIPv6Address valid [17]11:09:43✔ isIPv6Address valid [18]11:09:43✔ isIPv6Address valid [19]11:09:43✔ isIPv6Address valid [20]11:09:43✔ isIPv6Address valid [21]11:09:43✔ isIPv6Address valid [22]11:09:43✔ isIPv6Address valid [23]11:09:43✔ isIPv6Address valid [24]11:09:43✔ parseImageUrl [Hashed thumb with shortened path]11:09:43✔ parseImageUrl [Hashed thumb with sha1-ed path]11:09:43✔ parseImageUrl [Normal hashed directory thumbnail]11:09:43✔ parseImageUrl [Normal hashed directory thumbnail with complex thumbnail parameters]11:09:43✔ parseImageUrl [Width-like filename component]11:09:43✔ parseImageUrl [Width-like filename component in non-ASCII filename]11:09:43✔ parseImageUrl [Commons thumbnail]11:09:43✔ parseImageUrl [Full image]11:09:43✔ parseImageUrl [thumb.php-based thumbnail]11:09:43✔ parseImageUrl [thumb.php-based thumbnail with px width]11:09:43✔ parseImageUrl [thumb.php-based BC thumbnail]11:09:43✔ parseImageUrl [Commons unhashed thumbnail]11:09:43✔ parseImageUrl [Commons unhashed thumbnail with complex thumbnail parameters]11:09:43✔ parseImageUrl [Unhashed local file]11:09:43✔ parseImageUrl [Empty string]11:09:43✔ parseImageUrl [String with only alphabet characters]11:09:43✔ parseImageUrl [Not a file path]11:09:43✔ parseImageUrl [Space characters]11:09:43✔ parseImageUrl [no dynamic thumbnail generation]11:09:43✔ escapeRegExp [normal]11:09:43✔ escapeRegExp [specials] [0]11:09:43✔ escapeRegExp [specials] [1]11:09:43✔ escapeRegExp [specials] [2]11:09:43✔ escapeRegExp [specials] [3]11:09:43✔ escapeRegExp [specials] [4]11:09:43✔ escapeRegExp [specials] [5]11:09:43✔ escapeRegExp [specials] [6]11:09:43✔ escapeRegExp [specials] [7]11:09:43✔ escapeRegExp [specials] [8]11:09:43✔ escapeRegExp [specials] [9]11:09:43✔ escapeRegExp [specials] [10]11:09:43✔ escapeRegExp [specials] [11]11:09:43✔ escapeRegExp [specials] [12]11:09:43✔ escapeRegExp [specials] [13]11:09:43✔ escapeRegExp [specials] [14]11:09:43✔ debounce(Function, timeout)11:09:43✔ debounce(Function, timeout, immediate=true)11:09:43✔ debounce(timeout, Function) [old signature]11:09:43✔ init (.mw-body-primary)11:09:43✔ init (first of multiple .mw-body)11:09:43✔ init (#mw-content-text fallback)11:09:43✔ init (body fallback)11:09:43✔ sanitizeIP [IPv6 with "::" and 2 words]11:09:43✔ sanitizeIP [IPv6 with "::" and 3 words]11:09:43✔ sanitizeIP [IPv6 with "::" and 4 words]11:09:43✔ sanitizeIP [IPv6 with "::" and 5 words]11:09:43✔ sanitizeIP [IPv6 with "::" and 6 words]11:09:43✔ sanitizeIP [IPv6 with "::" and 7 words]11:09:43✔ sanitizeIP [IPv6 with "::" and 2 words (Teredo)]11:09:43✔ sanitizeIP [IPv6 with "::" and 5 words (Teredo)]11:09:43✔ sanitizeIP [IPv6 with "::" and 6 words (Teredo)]11:09:43✔ sanitizeIP [IPv6 range with "::" and 6 words (Teredo)]11:09:43✔ sanitizeIP [IPv4 no change]11:09:43✔ sanitizeIP [IPv4 strip leading 0s]11:09:43✔ sanitizeIP [IPv4 strip multiple leading 0s]11:09:43✔ sanitizeIP [IPv4 don't strip meaningful trailing 0s]11:09:43✔ sanitizeIP [IPv4 strip meaningless multiple 0s]11:09:43✔ sanitizeIP [IPv4 range strip meaningless multiple 0s]11:09:43✔ sanitizeIP [Not an IP]11:09:43✔ sanitizeIP [Empty string]11:09:43✔ sanitizeIP [IPv4 trim whitespace from start and end of the string]11:09:43✔ sanitizeIP [IPv6 starts with ::]11:09:43✔ sanitizeIP [IPv6 remove leading zeros from each block.]11:09:43✔ sanitizeIP [IPv6 :: at the end]11:09:43✔ sanitizeIP [Non-IP string]11:09:43✔ sanitizeIP [Non-string]11:09:43✔ prettifyIP [IPv6 change to lowercase]11:09:43✔ prettifyIP [IPv4 no change]11:09:43✔ prettifyIP [IPv4 range strip meaningless multiple 0s]11:09:43✔ prettifyIP [Empty string]11:09:43✔ prettifyIP [IPv6 range Replace consecutive zeros with :: ]11:09:43✔ prettifyIP [IPv6 middle only consecutive zeros with ::]11:09:43✔ prettifyIP [IPv6 first longer consecutive zeros with ::]11:09:43✔ prettifyIP [IPv6 last longer consecutive zeros with ::]11:09:43✔ prettifyIP [IPv6 first of equal length consecutive zeros with ::]11:09:43✔ isTemporaryUser [prefix mismatch]11:09:43✔ isTemporaryUser [prefix match]11:09:43✔ isTemporaryUser [suffix only match]11:09:43✔ isTemporaryUser [suffix only mismatch]11:09:43✔ isTemporaryUser [prefix and suffix match]11:09:43✔ isTemporaryUser [prefix and suffix mismatch]11:09:43✔ isTemporaryUser [prefix and suffix zero length match]11:09:43✔ isTemporaryUser [prefix and suffix overlapping]11:09:43✔ isTemporaryUser [multiple patterns prefix match]11:09:43✔ isTemporaryUser [multiple patterns prefix mismatch]11:09:43✔ isTemporaryUser [multiple patterns suffix match]11:09:43✔ isTemporaryUser [multiple patterns suffix mismatch]11:09:43✔ isTemporaryUser [multiple patterns prefix and suffix match]11:09:43✔ isTemporaryUser [Auto create temporary user disabled]11:09:43✔ isTemporaryUser [null username]11:09:43✔ isTemporaryUser matchPattern null [prefix mismatch]11:09:43✔ isTemporaryUser matchPattern null [prefix match]11:09:43✔ isInfinity11:09:43 mediawiki.util: jquery.accessKeyLabel11:09:43✔ getAccessKeyPrefix11:09:43✔ updateTooltipAccessKeys - current browser11:09:43✔ updateTooltipAccessKeys - no access key11:09:43✔ updateTooltipAccessKeys - with access key11:09:43✔ updateTooltipAccessKeys with label element11:09:43✔ updateTooltipAccessKeys with label element as parent11:09:43 mediawiki.api11:09:43✔ get()11:09:43✔ post()11:09:43✔ API error errorformat=bc11:09:43✔ API error errorformat!=bc11:09:43✔ FormData support11:09:43✔ Converting arrays to pipe-separated (string)11:09:43✔ Converting arrays to pipe-separated (mw.Title)11:09:43✔ Converting arrays to pipe-separated (misc primitives)11:09:43✔ Omitting false booleans11:09:43✔ getToken() - cached11:09:43✔ getToken() - uncached11:09:43✔ getToken() - error11:09:43✔ getToken() - no query11:09:43WARN: 'Use of the "email" token is deprecated. Use "csrf" instead.'
11:09:43✔ getToken() - deprecated11:09:43✔ badToken()11:09:43WARN: 'Use of the "options" token is deprecated. Use "csrf" instead.'
11:09:43WARN: 'Use of the "options" token is deprecated. Use "csrf" instead.'
11:09:43WARN: 'Use of the "options" token is deprecated. Use "csrf" instead.'
11:09:43✔ badToken( legacy )11:09:43✔ postWithToken( tokenType, params )11:09:43✔ postWithToken( tokenType, params with assert )11:09:43✔ postWithToken( tokenType, params, ajaxOptions )11:09:44✔ postWithToken() - badtoken11:09:44✔ postWithToken() - badtoken-cached11:09:44✔ #abort11:09:44 mediawiki.api.category11:09:44✔ .getCategoriesByPrefix()11:09:44✔ .isCategory("")11:09:44✔ .isCategory("#")11:09:44✔ .isCategory("mw:")11:09:44✔ .isCategory("|")11:09:44✔ .getCategories("")11:09:44✔ .getCategories("#")11:09:44✔ .getCategories("mw:")11:09:44✔ .getCategories("|")11:09:44 mediawiki.api.edit11:09:44✔ edit( title, transform String )11:09:44✔ edit( mw.Title, transform String )11:09:44✔ edit( title, transform Promise )11:09:44✔ edit( title, transform Object )11:09:44✔ edit( invalid-title, transform String )11:09:44✔ create( title, content )11:09:44 mediawiki.api.messages11:09:44✔ .getMessages()11:09:44✔ .getMessages() with a long string11:09:44 mediawiki.api.options11:09:44✔ saveOption11:09:44✔ saveOptions without Unit Separator11:09:45✔ saveOptions with Unit Separator11:09:45✔ saveOptions (anonymous)11:09:45✔ .parse( string )11:09:45✔ .parse( Object.toString )11:09:45✔ .parse( mw.Title )11:09:45 mediawiki.api.upload11:09:45✔ Basic functionality11:09:45 mediawiki.api.watch11:09:45✔ .watch( string )11:09:45✔ .watch( Array ) - single11:09:45✔ .watch( Array ) - multi11:09:45 mediawiki.rest11:09:45✔ get()11:09:45✔ get() respects ajaxOptions url11:09:45✔ post()11:09:45✔ put()11:09:45✔ delete()11:09:45✔ http error11:09:45✔ #abort11:09:45 mediawiki.ForeignApi11:09:45✔ origin is included in GET requests11:09:45✔ origin is included in POST requests11:09:45✔ origin is not included in same-origin GET requests11:09:45✔ origin is not included in same-origin POST requests11:09:45 mediawiki.ForeignRest11:09:45✔ get()11:09:45✔ post()11:09:45✔ http error11:09:45 mediawiki.rcfilters - FiltersViewModel11:09:45✔ Setting up filters11:09:45✔ Default filters11:09:45✔ Parameter minimal state11:09:45✔ Parameter states11:09:45✔ Cleaning up parameter states11:09:45✔ Finding matching filters11:09:45✔ getParametersFromFilters11:09:45✔ getParametersFromFilters (custom object)11:09:45✔ getFiltersFromParameters11:09:45✔ sanitizeStringOptionGroup11:09:45✔ Filter interaction: subsets11:09:45✔ Filter interaction: full coverage11:09:45✔ Filter interaction: conflicts11:09:45✔ Filter highlights11:09:45✔ emptyAllFilters11:09:45✔ areVisibleFiltersEmpty11:09:45 mediawiki.rcfilters - FilterItem11:09:45✔ Initializing filter item11:09:45✔ Emitting events11:09:45✔ get/set boolean value11:09:45✔ get/set any value11:09:45 mediawiki.rcfilters - SavedQueryItemModel11:09:45✔ Initializing and getters11:09:45✔ Default11:09:45 mediawiki.rcfilters - SavedQueriesModel11:09:45✔ Initializing queries11:09:45✔ Adding new queries11:09:45✔ Manipulating queries11:09:45✔ Testing invert property11:09:45 mediawiki.rcfilters - UriProcessor11:09:45✔ getVersion11:09:45✔ getUpdatedUri11:09:45✔ updateModelBasedOnQuery11:09:45✔ isNewState11:09:45✔ _getNormalizedQueryParams11:09:45✔ _normalizeTargetInUri11:09:45 mediawiki.widgets.APIResultsQueue11:09:45✔ Query providers11:09:45✔ Abort providers11:09:45 mediawiki.widgets.NamespaceInputWidget11:09:45✔ NamespaceInputWidget initialization11:09:45✔ NamespaceInputWidget 'include' config parameter11:09:45 mediawiki.widgets.TableWidget11:09:45✔ TableWidgetModel initialization11:09:45✔ TableWidgetModel#getRowProperties11:09:45✔ TableWidget#setValue11:09:45 ✔ TableWidget#insertColumn/insertRow (skipped)11:09:45 ✔ TableWidget#removeColumn (skipped)11:09:45 ✔ TableWidget#removeRow by index (skipped)11:09:45 ✔ TableWidget#removeRow by key (skipped)11:09:45✔ TableWidget populate text inputs11:09:45 mediawiki.language11:09:45✔ mw.language getData and setData11:09:45✔ mw.language.convertNumber11:09:45✔ mw.language.convertNumber - digitTransformTable11:09:45✔ List to text test11:09:45✔ mw.language.bcp4711:09:45 mediawiki.cookie11:09:45✔ set( key, value )11:09:45✔ set( key, value, expires )11:09:45✔ set( key, value, options )11:09:45✔ get( key ) - no values11:09:45✔ get( key ) - with value11:09:45✔ get( key, prefix )11:09:45 mediawiki.deflate11:09:45✔ deflate [foobar]11:09:45✔ deflate [Unicode]11:09:45✔ deflate [Non BMP unicode]11:09:46✔ deflate [5MB data]11:09:46 mediawiki.experiments11:09:46✔ getBucket( experiment, token )11:09:46 mediawiki.visibleTimeout11:09:46✔ visibleTimeoutId is always a positive integer11:09:46✔ basic usage when visible11:09:46✔ basic usage - fallback assumes visible11:09:46✔ can cancel timeout11:09:46✔ start hidden and become visible11:09:46✔ timeout is cumulative11:09:4602 11 2024 11:09:46.686:DEBUG [Firefox 115.0 (Linux x86_64)]: EXECUTING -> CONNECTED
11:09:4602 11 2024 11:09:46.687:DEBUG [launcher]: CAPTURED -> BEING_KILLED
11:09:4602 11 2024 11:09:46.687:DEBUG [launcher]: BEING_KILLED -> BEING_FORCE_KILLED
11:09:4602 11 2024 11:09:46.687:DEBUG [Firefox 115.0 (Linux x86_64)]: CONNECTED -> DISCONNECTED
11:09:4611:09:46Finished in 4.749 secs / 4.433 secs @ 11:09:46 GMT+0000 (Coordinated Universal Time)11:09:4611:09:46SUMMARY:11:09:46✔ 738 tests completed11:09:46ℹ 4 tests skipped11:09:4602 11 2024 11:09:46.689:DEBUG [karma-server]: Run complete, exiting.
11:09:4602 11 2024 11:09:46.689:DEBUG [launcher]: Disconnecting all browsers
11:09:4602 11 2024 11:09:46.689:DEBUG [launcher]: BEING_FORCE_KILLED -> BEING_FORCE_KILLED
11:09:4602 11 2024 11:09:46.689:DEBUG [proxy]: Destroying proxy agents
11:09:4602 11 2024 11:09:46.743:DEBUG [launcher]: Process FirefoxHeadless exited with code null and signal SIGTERM
11:09:4602 11 2024 11:09:46.743:DEBUG [temp-dir]: Cleaning temp dir /tmp/karma-28754508
11:09:4602 11 2024 11:09:46.789:DEBUG [launcher]: Finished all browsers
11:09:4602 11 2024 11:09:46.790:DEBUG [launcher]: BEING_FORCE_KILLED -> FINISHED
11:09:4602 11 2024 11:09:46.790:DEBUG [launcher]: FINISHED -> FINISHED
11:09:4611:09:46Done.
11:09:46INFO:quibble.commands:<<< Finish: Run Qunit tests, in 12.181 s
PHPUnit extensions suite (with database) parallel run (Composer)
11:09:46INFO:quibble.commands:>>> Start: PHPUnit extensions suite (with database) parallel run (Composer)
11:09:47> MediaWiki\Composer\ComposerLaunchParallel::launchTestsDatabase
11:09:47Running command ''composer' 'run' '--timeout=0' 'phpunit:entrypoint' '--' '--testsuite' 'split_group_0' '--exclude-group' 'Broken,ParserFuzz,Stub,Standalone' '--group' 'Database' '--cache-result-file=.phpunit_group_0_database.result.cache'' ...
11:09:47Running command ''composer' 'run' '--timeout=0' 'phpunit:entrypoint' '--' '--testsuite' 'split_group_1' '--exclude-group' 'Broken,ParserFuzz,Stub,Standalone' '--group' 'Database' '--cache-result-file=.phpunit_group_1_database.result.cache'' ...
11:09:47Running command ''composer' 'run' '--timeout=0' 'phpunit:entrypoint' '--' '--testsuite' 'split_group_7' '--exclude-group' 'Broken,ParserFuzz,Stub,Standalone' '--group' 'Database' '--cache-result-file=.phpunit_group_7_database.result.cache'' ...
11:09:47Running command ''composer' 'run' '--timeout=0' 'phpunit:entrypoint' '--' '--testsuite' 'split_group_2' '--exclude-group' 'Broken,ParserFuzz,Stub,Standalone' '--group' 'Database' '--cache-result-file=.phpunit_group_2_database.result.cache'' ...
11:09:47Running command ''composer' 'run' '--timeout=0' 'phpunit:entrypoint' '--' '--testsuite' 'split_group_5' '--exclude-group' 'Broken,ParserFuzz,Stub,Standalone' '--group' 'Database' '--cache-result-file=.phpunit_group_5_database.result.cache'' ...
11:09:47Running command ''composer' 'run' '--timeout=0' 'phpunit:entrypoint' '--' '--testsuite' 'split_group_6' '--exclude-group' 'Broken,ParserFuzz,Stub,Standalone' '--group' 'Database' '--cache-result-file=.phpunit_group_6_database.result.cache'' ...
11:09:47Running command ''composer' 'run' '--timeout=0' 'phpunit:entrypoint' '--' '--testsuite' 'split_group_3' '--exclude-group' 'Broken,ParserFuzz,Stub,Standalone' '--group' 'Database' '--cache-result-file=.phpunit_group_3_database.result.cache'' ...
11:09:47Running command ''composer' 'run' '--timeout=0' 'phpunit:entrypoint' '--' '--testsuite' 'split_group_4' '--exclude-group' 'Broken,ParserFuzz,Stub,Standalone' '--group' 'Database' '--cache-result-file=.phpunit_group_4_database.result.cache'' ...
11:09:48> phpunit '--testsuite' 'split_group_2' '--exclude-group' 'Broken,ParserFuzz,Stub,Standalone' '--group' 'Database' '--cache-result-file=.phpunit_group_2_database.result.cache'
11:09:48Using PHP 7.4.33
11:09:48Running with MediaWiki settings because there might be integration tests
11:09:48PHPUnit 9.6.19 by Sebastian Bergmann and contributors.
11:09:4811:09:48No tests executed!
11:09:48> phpunit '--testsuite' 'split_group_7' '--exclude-group' 'Broken,ParserFuzz,Stub,Standalone' '--group' 'Database' '--cache-result-file=.phpunit_group_7_database.result.cache'
11:09:48Using PHP 7.4.33
11:09:48Running with MediaWiki settings because there might be integration tests
11:09:48PHPUnit 9.6.19 by Sebastian Bergmann and contributors.
11:09:4811:09:48No tests executed!
11:09:48> phpunit '--testsuite' 'split_group_6' '--exclude-group' 'Broken,ParserFuzz,Stub,Standalone' '--group' 'Database' '--cache-result-file=.phpunit_group_6_database.result.cache'
11:09:48Using PHP 7.4.33
11:09:48Running with MediaWiki settings because there might be integration tests
11:09:48PHPUnit 9.6.19 by Sebastian Bergmann and contributors.
11:09:4811:09:48No tests executed!
11:09:48Worker exited with status 0
11:09:48Worker exited with status 0
11:09:48Worker exited with status 0
11:09:48> phpunit '--testsuite' 'split_group_1' '--exclude-group' 'Broken,ParserFuzz,Stub,Standalone' '--group' 'Database' '--cache-result-file=.phpunit_group_1_database.result.cache'
11:09:48Using PHP 7.4.33
11:09:48Running with MediaWiki settings because there might be integration tests
11:09:48PHPUnit 9.6.19 by Sebastian Bergmann and contributors.
11:09:4811:09:48No tests executed!
11:09:48Worker exited with status 0
11:09:49> phpunit '--testsuite' 'split_group_4' '--exclude-group' 'Broken,ParserFuzz,Stub,Standalone' '--group' 'Database' '--cache-result-file=.phpunit_group_4_database.result.cache'
11:09:49Using PHP 7.4.33
11:09:49Running with MediaWiki settings because there might be integration tests
11:09:49PHPUnit 9.6.19 by Sebastian Bergmann and contributors.
11:09:4911:09:49............................................................... 63 / 160 ( 39%)
11:09:49............................................................... 126 / 160 ( 78%)
11:09:49.................................. 160 / 160 (100%)
11:09:4911:09:49Time: 00:01.161, Memory: 70.50 MB
11:09:4911:09:49OK (160 tests, 1414 assertions)
11:09:4911:09:4911:09:49You should really speed up these slow tests (>100ms)...
11:09:49 1. 268ms to run ContentHandlerFunctionalTest::testGetParserOutput
11:09:49 2. 167ms to run ContentHandlerFunctionalTest::testPreSaveTransform
11:09:49 3. 167ms to run ContentHandlerFunctionalTest::testPreloadTransform
11:09:49 4. 154ms to run ContentHandlerFunctionalTest::testMakeEmptyContent
11:09:49Worker exited with status 0
11:09:50> phpunit '--testsuite' 'split_group_0' '--exclude-group' 'Broken,ParserFuzz,Stub,Standalone' '--group' 'Database' '--cache-result-file=.phpunit_group_0_database.result.cache'
11:09:50Using PHP 7.4.33
11:09:50Running with MediaWiki settings because there might be integration tests
11:09:50PHPUnit 9.6.19 by Sebastian Bergmann and contributors.
11:09:5011:09:50............................................................... 63 / 138 ( 45%)
11:09:50............................................................... 126 / 138 ( 91%)
11:09:50............ 138 / 138 (100%)
11:09:5011:09:50Time: 00:01.936, Memory: 77.50 MB
11:09:5011:09:50OK (138 tests, 138 assertions)
11:09:5011:09:5011:09:50You should really speed up these slow tests (>100ms)...
11:09:50 1. 204ms to run SpecialPageFatalTest::testSpecialPageDoesNotFatal with data set "Version"
11:09:50 2. 173ms to run SpecialPageFatalTest::testSpecialPageDoesNotFatal with data set "BrokenRedirects"
11:09:50 3. 154ms to run SpecialPageFatalTest::testSpecialPageDoesNotFatal with data set "Preferences"
11:09:50Worker exited with status 0
11:09:50> phpunit '--testsuite' 'split_group_5' '--exclude-group' 'Broken,ParserFuzz,Stub,Standalone' '--group' 'Database' '--cache-result-file=.phpunit_group_5_database.result.cache'
11:09:50Using PHP 7.4.33
11:09:50Running with MediaWiki settings because there might be integration tests
11:09:50PHPUnit 9.6.19 by Sebastian Bergmann and contributors.
11:09:5011:09:50............................................................... 63 / 505 ( 12%)
11:09:50............................................................... 126 / 505 ( 24%)
11:09:50............................................................... 189 / 505 ( 37%)
11:09:50............................................................... 252 / 505 ( 49%)
11:09:50............................................................... 315 / 505 ( 62%)
11:09:50............................................................... 378 / 505 ( 74%)
11:09:50............................................................... 441 / 505 ( 87%)
11:09:50............................................................... 504 / 505 ( 99%)
11:09:50. 505 / 505 (100%)
11:09:5011:09:50Time: 00:01.763, Memory: 70.50 MB
11:09:5011:09:50OK (505 tests, 8792 assertions)
11:09:5011:09:5011:09:50You should really speed up these slow tests (>100ms)...
11:09:50 1. 208ms to run DatabaseIntegrationTest::testAutomaticSqlGeneration with data set #0
11:09:50 2. 191ms to run DatabaseIntegrationTest::testAutomaticSqlGeneration with data set #1
11:09:50 3. 181ms to run DatabaseIntegrationTest::testAutomaticSqlGeneration with data set #2
11:09:50Worker exited with status 0
11:10:19> phpunit '--testsuite' 'split_group_3' '--exclude-group' 'Broken,ParserFuzz,Stub,Standalone' '--group' 'Database' '--cache-result-file=.phpunit_group_3_database.result.cache'
11:10:19Using PHP 7.4.33
11:10:19Running with MediaWiki settings because there might be integration tests
11:10:19PHPUnit 9.6.19 by Sebastian Bergmann and contributors.
11:10:1911:10:19............................................................. 61 / 1461 ( 4%)
11:10:19............................................................. 122 / 1461 ( 8%)
11:10:19............................................................. 183 / 1461 ( 12%)
11:10:19............................................................. 244 / 1461 ( 16%)
11:10:19............................................................. 305 / 1461 ( 20%)
11:10:19............................................................. 366 / 1461 ( 25%)
11:10:19............................................................. 427 / 1461 ( 29%)
11:10:19............................................................. 488 / 1461 ( 33%)
11:10:19............................................................. 549 / 1461 ( 37%)
11:10:19............................................................. 610 / 1461 ( 41%)
11:10:19............................................................. 671 / 1461 ( 45%)
11:10:19............................................................. 732 / 1461 ( 50%)
11:10:19............................................................. 793 / 1461 ( 54%)
11:10:19............................................................. 854 / 1461 ( 58%)
11:10:19............................................................. 915 / 1461 ( 62%)
11:10:19............................................................. 976 / 1461 ( 66%)
11:10:19............................................................. 1037 / 1461 ( 70%)
11:10:19............................................................. 1098 / 1461 ( 75%)
11:10:19............................................................. 1159 / 1461 ( 79%)
11:10:19............................................................. 1220 / 1461 ( 83%)
11:10:19............................................................. 1281 / 1461 ( 87%)
11:10:19............................................................. 1342 / 1461 ( 91%)
11:10:19............................................................. 1403 / 1461 ( 96%)
11:10:19.......................................................... 1461 / 1461 (100%)
11:10:1911:10:19Time: 00:30.260, Memory: 153.00 MB
11:10:1911:10:19OK (1461 tests, 3377 assertions)
11:10:1911:10:1911:10:19You should really speed up these slow tests (>100ms)...
11:10:19 1. 2630ms to run ResourcesTest::testResourceFiles
11:10:19 2. 901ms to run ResourcesTest::testRespond with data set #360
11:10:19 3. 898ms to run ResourcesTest::testRespond with data set #118
11:10:19 4. 620ms to run ResourcesTest::testRespond with data set #123
11:10:19 5. 615ms to run ResourcesTest::testRespond with data set #849
11:10:19 6. 602ms to run ResourcesTest::testRespond with data set #1091
11:10:19 7. 599ms to run ResourcesTest::testRespond with data set #1333
11:10:19 8. 597ms to run ResourcesTest::testRespond with data set #365
11:10:19 9. 592ms to run ResourcesTest::testRespond with data set #607
11:10:19 10. 499ms to run ResourcesTest::testRespond with data set #472
11:10:19...and there are 28 more above your threshold hidden from view
11:10:19Worker exited with status 0
11:10:19INFO:quibble.commands:<<< Finish: PHPUnit extensions suite (with database) parallel run (Composer), in 32.282 s
PHPUnit Parallel Notice
11:10:19INFO:quibble.commands:>>> Start: PHPUnit Parallel Notice
11:10:19INFO:quibble.commands:NOTICE: These tests have been executed with PHPUnit Parallel enabled.
11:10:19INFO:quibble.commands:If you encounter unexpected test failures or notice incomplete execution of test suites, please let us know!
11:10:19INFO:quibble.commands:For more information, and to report parallel-testing-related failures, please visit https://phabricator.wikimedia.org/T36119011:10:19INFO:quibble.commands:<<< Finish: PHPUnit Parallel Notice, in 0.000 s