This run took 37 seconds.
$ date
--- stdout ---
Wed Jan 28 06:28:13 UTC 2026
--- end ---
$ git clone file:///srv/git/mediawiki-libs-LangConv.git /src/repo --depth=1 -b master
--- stderr ---
Cloning into '/src/repo'...
Updating files: 71% (126/176)
Updating files: 72% (127/176)
Updating files: 73% (129/176)
Updating files: 74% (131/176)
Updating files: 75% (132/176)
Updating files: 76% (134/176)
Updating files: 77% (136/176)
Updating files: 78% (138/176)
Updating files: 79% (140/176)
Updating files: 80% (141/176)
Updating files: 81% (143/176)
Updating files: 82% (145/176)
Updating files: 83% (147/176)
Updating files: 84% (148/176)
Updating files: 85% (150/176)
Updating files: 86% (152/176)
Updating files: 87% (154/176)
Updating files: 88% (155/176)
Updating files: 89% (157/176)
Updating files: 90% (159/176)
Updating files: 91% (161/176)
Updating files: 92% (162/176)
Updating files: 93% (164/176)
Updating files: 94% (166/176)
Updating files: 95% (168/176)
Updating files: 96% (169/176)
Updating files: 97% (171/176)
Updating files: 98% (173/176)
Updating files: 99% (175/176)
Updating files: 100% (176/176)
Updating files: 100% (176/176), done.
--- stdout ---
--- end ---
$ git config user.name libraryupgrader
--- stdout ---
--- end ---
$ git config user.email tools.libraryupgrader@tools.wmflabs.org
--- stdout ---
--- end ---
$ git submodule update --init
--- stdout ---
--- end ---
$ grr init
--- stdout ---
Installed commit-msg hook.
--- end ---
$ git show-ref refs/heads/master
--- stdout ---
436ef6eab4a56e71e1c41e252d4bff92f8df88f2 refs/heads/master
--- end ---
$ /usr/bin/npm audit --json
--- stdout ---
{
"auditReportVersion": 2,
"vulnerabilities": {
"diff": {
"name": "diff",
"severity": "low",
"isDirect": false,
"via": [
{
"source": 1112490,
"name": "diff",
"dependency": "diff",
"title": "jsdiff has a Denial of Service vulnerability in parsePatch and applyPatch",
"url": "https://github.com/advisories/GHSA-73rr-hh4g-fpgx",
"severity": "low",
"cwe": [
"CWE-400",
"CWE-1333"
],
"cvss": {
"score": 0,
"vectorString": null
},
"range": ">=5.0.0 <5.2.2"
}
],
"effects": [],
"range": "5.0.0 - 5.2.1",
"nodes": [
"node_modules/diff"
],
"fixAvailable": true
},
"lodash": {
"name": "lodash",
"severity": "moderate",
"isDirect": false,
"via": [
{
"source": 1112455,
"name": "lodash",
"dependency": "lodash",
"title": "Lodash has Prototype Pollution Vulnerability in `_.unset` and `_.omit` functions",
"url": "https://github.com/advisories/GHSA-xxjr-mmjv-4gpg",
"severity": "moderate",
"cwe": [
"CWE-1321"
],
"cvss": {
"score": 6.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:L"
},
"range": ">=4.0.0 <=4.17.22"
}
],
"effects": [],
"range": "4.0.0 - 4.17.21",
"nodes": [
"node_modules/lodash"
],
"fixAvailable": true
}
},
"metadata": {
"vulnerabilities": {
"info": 0,
"low": 1,
"moderate": 1,
"high": 0,
"critical": 0,
"total": 2
},
"dependencies": {
"prod": 1,
"dev": 451,
"optional": 3,
"peer": 1,
"peerOptional": 0,
"total": 451
}
}
}
--- end ---
$ /usr/bin/composer install
--- stderr ---
No composer.lock file present. Updating dependencies to latest instead of installing from lock file. See https://getcomposer.org/install for more information.
Loading composer repositories with package information
Updating dependencies
Lock file operations: 67 installs, 0 updates, 0 removals
- Locking composer/pcre (3.3.2)
- Locking composer/semver (3.4.4)
- Locking composer/spdx-licenses (1.5.9)
- Locking composer/xdebug-handler (3.0.5)
- Locking dealerdirect/phpcodesniffer-composer-installer (v1.2.0)
- Locking doctrine/deprecations (1.1.5)
- Locking felixfbecker/advanced-json-rpc (v3.2.1)
- Locking mediawiki/mediawiki-codesniffer (v48.0.0)
- Locking mediawiki/mediawiki-phan-config (0.18.0)
- Locking mediawiki/minus-x (1.1.3)
- Locking mediawiki/phan-taint-check-plugin (8.0.0)
- Locking microsoft/tolerant-php-parser (v0.1.2)
- Locking myclabs/deep-copy (1.13.4)
- Locking netresearch/jsonmapper (v4.5.0)
- Locking nikic/php-parser (v5.7.0)
- Locking ockcyp/covers-validator (v1.7.0)
- Locking phan/phan (5.5.2)
- Locking phar-io/manifest (2.0.4)
- Locking phar-io/version (3.2.1)
- Locking php-parallel-lint/php-console-color (v1.0.1)
- Locking php-parallel-lint/php-console-highlighter (v1.0.0)
- Locking php-parallel-lint/php-parallel-lint (v1.4.0)
- Locking phpcsstandards/phpcsextra (1.4.0)
- Locking phpcsstandards/phpcsutils (1.1.1)
- Locking phpdocumentor/reflection-common (2.2.0)
- Locking phpdocumentor/reflection-docblock (5.6.6)
- Locking phpdocumentor/type-resolver (1.12.0)
- Locking phpstan/phpdoc-parser (2.3.2)
- Locking phpunit/php-code-coverage (10.1.16)
- Locking phpunit/php-file-iterator (4.1.0)
- Locking phpunit/php-invoker (4.0.0)
- Locking phpunit/php-text-template (3.0.1)
- Locking phpunit/php-timer (6.0.0)
- Locking phpunit/phpunit (10.5.63)
- Locking psr/container (2.0.2)
- Locking psr/log (3.0.2)
- Locking sabre/event (5.1.7)
- Locking sebastian/cli-parser (2.0.1)
- Locking sebastian/code-unit (2.0.0)
- Locking sebastian/code-unit-reverse-lookup (3.0.0)
- Locking sebastian/comparator (5.0.5)
- Locking sebastian/complexity (3.2.0)
- Locking sebastian/diff (5.1.1)
- Locking sebastian/environment (6.1.0)
- Locking sebastian/exporter (5.1.4)
- Locking sebastian/global-state (6.0.2)
- Locking sebastian/lines-of-code (2.0.2)
- Locking sebastian/object-enumerator (5.0.0)
- Locking sebastian/object-reflector (3.0.0)
- Locking sebastian/recursion-context (5.0.1)
- Locking sebastian/type (4.0.0)
- Locking sebastian/version (4.0.1)
- Locking squizlabs/php_codesniffer (3.13.2)
- Locking symfony/console (v6.4.32)
- Locking symfony/deprecation-contracts (v3.6.0)
- Locking symfony/polyfill-ctype (v1.33.0)
- Locking symfony/polyfill-intl-grapheme (v1.33.0)
- Locking symfony/polyfill-intl-normalizer (v1.33.0)
- Locking symfony/polyfill-mbstring (v1.33.0)
- Locking symfony/polyfill-php80 (v1.33.0)
- Locking symfony/service-contracts (v3.6.1)
- Locking symfony/string (v7.4.4)
- Locking theseer/tokenizer (1.3.1)
- Locking tysonandre/var_representation_polyfill (0.1.3)
- Locking webmozart/assert (2.1.2)
- Locking wikimedia/assert (v0.5.1)
- Locking wikimedia/update-history (1.0.3)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 67 installs, 0 updates, 0 removals
0 [>---------------------------] 0 [->--------------------------]
- Installing squizlabs/php_codesniffer (3.13.2): Extracting archive
- Installing dealerdirect/phpcodesniffer-composer-installer (v1.2.0): Extracting archive
- Installing composer/pcre (3.3.2): Extracting archive
- Installing phpcsstandards/phpcsutils (1.1.1): Extracting archive
- Installing phpcsstandards/phpcsextra (1.4.0): Extracting archive
- Installing symfony/polyfill-mbstring (v1.33.0): Extracting archive
- Installing composer/spdx-licenses (1.5.9): Extracting archive
- Installing composer/semver (3.4.4): Extracting archive
- Installing mediawiki/mediawiki-codesniffer (v48.0.0): Extracting archive
- Installing tysonandre/var_representation_polyfill (0.1.3): Extracting archive
- Installing symfony/polyfill-php80 (v1.33.0): Extracting archive
- Installing symfony/polyfill-intl-normalizer (v1.33.0): Extracting archive
- Installing symfony/polyfill-intl-grapheme (v1.33.0): Extracting archive
- Installing symfony/polyfill-ctype (v1.33.0): Extracting archive
- Installing symfony/deprecation-contracts (v3.6.0): Extracting archive
- Installing symfony/string (v7.4.4): Extracting archive
- Installing psr/container (2.0.2): Extracting archive
- Installing symfony/service-contracts (v3.6.1): Extracting archive
- Installing symfony/console (v6.4.32): Extracting archive
- Installing sabre/event (5.1.7): Extracting archive
- Installing netresearch/jsonmapper (v4.5.0): Extracting archive
- Installing microsoft/tolerant-php-parser (v0.1.2): Extracting archive
- Installing webmozart/assert (2.1.2): Extracting archive
- Installing phpstan/phpdoc-parser (2.3.2): Extracting archive
- Installing phpdocumentor/reflection-common (2.2.0): Extracting archive
- Installing doctrine/deprecations (1.1.5): Extracting archive
- Installing phpdocumentor/type-resolver (1.12.0): Extracting archive
- Installing phpdocumentor/reflection-docblock (5.6.6): Extracting archive
- Installing felixfbecker/advanced-json-rpc (v3.2.1): Extracting archive
- Installing psr/log (3.0.2): Extracting archive
- Installing composer/xdebug-handler (3.0.5): Extracting archive
- Installing phan/phan (5.5.2): Extracting archive
- Installing mediawiki/phan-taint-check-plugin (8.0.0): Extracting archive
- Installing mediawiki/mediawiki-phan-config (0.18.0): Extracting archive
- Installing mediawiki/minus-x (1.1.3): Extracting archive
- Installing sebastian/version (4.0.1): Extracting archive
- Installing sebastian/type (4.0.0): Extracting archive
- Installing sebastian/recursion-context (5.0.1): Extracting archive
- Installing sebastian/object-reflector (3.0.0): Extracting archive
- Installing sebastian/object-enumerator (5.0.0): Extracting archive
- Installing sebastian/global-state (6.0.2): Extracting archive
- Installing sebastian/exporter (5.1.4): Extracting archive
- Installing sebastian/environment (6.1.0): Extracting archive
- Installing sebastian/diff (5.1.1): Extracting archive
- Installing sebastian/comparator (5.0.5): Extracting archive
- Installing sebastian/code-unit (2.0.0): Extracting archive
- Installing sebastian/cli-parser (2.0.1): Extracting archive
- Installing phpunit/php-timer (6.0.0): Extracting archive
- Installing phpunit/php-text-template (3.0.1): Extracting archive
- Installing phpunit/php-invoker (4.0.0): Extracting archive
- Installing phpunit/php-file-iterator (4.1.0): Extracting archive
- Installing theseer/tokenizer (1.3.1): Extracting archive
- Installing nikic/php-parser (v5.7.0): Extracting archive
- Installing sebastian/lines-of-code (2.0.2): Extracting archive
- Installing sebastian/complexity (3.2.0): Extracting archive
- Installing sebastian/code-unit-reverse-lookup (3.0.0): Extracting archive
- Installing phpunit/php-code-coverage (10.1.16): Extracting archive
- Installing phar-io/version (3.2.1): Extracting archive
- Installing phar-io/manifest (2.0.4): Extracting archive
- Installing myclabs/deep-copy (1.13.4): Extracting archive
- Installing phpunit/phpunit (10.5.63): Extracting archive
- Installing ockcyp/covers-validator (v1.7.0): Extracting archive
- Installing php-parallel-lint/php-console-color (v1.0.1): Extracting archive
- Installing php-parallel-lint/php-console-highlighter (v1.0.0): Extracting archive
- Installing php-parallel-lint/php-parallel-lint (v1.4.0): Extracting archive
- Installing wikimedia/assert (v0.5.1): Extracting archive
- Installing wikimedia/update-history (1.0.3): Extracting archive
0/65 [>---------------------------] 0%
28/65 [============>---------------] 43%
45/65 [===================>--------] 69%
60/65 [=========================>--] 92%
65/65 [============================] 100%
3 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating optimized autoload files
Class Wikimedia\LangConv\Test\FstReplacementMachineTest located in ./tests/phpunit/FstReplacementMachineTest.php does not comply with psr-4 autoloading standard (rule: Wikimedia\LangConv\Tests\ => ./tests/phpunit). Skipping.
Class Wikimedia\LangConv\Test\Construct\GenReplFstTest located in ./tests/phpunit/Construct/GenReplFstTest.php does not comply with psr-4 autoloading standard (rule: Wikimedia\LangConv\Tests\ => ./tests/phpunit). Skipping.
Class Wikimedia\LangConv\Test\NullReplacementMachineTest located in ./tests/phpunit/NullReplacementMachineTest.php does not comply with psr-4 autoloading standard (rule: Wikimedia\LangConv\Tests\ => ./tests/phpunit). Skipping.
41 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
--- stdout ---
PHP CodeSniffer Config installed_paths set to ../../mediawiki/mediawiki-codesniffer,../../phpcsstandards/phpcsextra,../../phpcsstandards/phpcsutils
--- end ---
Upgrading c:mediawiki/mediawiki-codesniffer from 48.0.0 -> 49.0.0
$ /usr/bin/composer update
--- stderr ---
Loading composer repositories with package information
Updating dependencies
Lock file operations: 0 installs, 3 updates, 0 removals
- Upgrading mediawiki/mediawiki-codesniffer (v48.0.0 => v49.0.0)
- Upgrading phpcsstandards/phpcsutils (1.1.1 => 1.2.2)
- Upgrading squizlabs/php_codesniffer (3.13.2 => 3.13.5)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 0 installs, 3 updates, 0 removals
0 [>---------------------------] 0 [->--------------------------]
- Upgrading squizlabs/php_codesniffer (3.13.2 => 3.13.5): Extracting archive
- Upgrading phpcsstandards/phpcsutils (1.1.1 => 1.2.2): Extracting archive
- Upgrading mediawiki/mediawiki-codesniffer (v48.0.0 => v49.0.0): Extracting archive
0/3 [>---------------------------] 0%
2/3 [==================>---------] 66%
3/3 [============================] 100%
Generating optimized autoload files
Class Wikimedia\LangConv\Test\FstReplacementMachineTest located in ./tests/phpunit/FstReplacementMachineTest.php does not comply with psr-4 autoloading standard (rule: Wikimedia\LangConv\Tests\ => ./tests/phpunit). Skipping.
Class Wikimedia\LangConv\Test\Construct\GenReplFstTest located in ./tests/phpunit/Construct/GenReplFstTest.php does not comply with psr-4 autoloading standard (rule: Wikimedia\LangConv\Tests\ => ./tests/phpunit). Skipping.
Class Wikimedia\LangConv\Test\NullReplacementMachineTest located in ./tests/phpunit/NullReplacementMachineTest.php does not comply with psr-4 autoloading standard (rule: Wikimedia\LangConv\Tests\ => ./tests/phpunit). Skipping.
41 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
No security vulnerability advisories found.
--- stdout ---
PHP CodeSniffer Config installed_paths set to ../../mediawiki/mediawiki-codesniffer,../../phpcsstandards/phpcsextra,../../phpcsstandards/phpcsutils
--- end ---
Previously failing phpcs rules: {'MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment'}
$ vendor/bin/phpcs --report=json
--- stdout ---
{"totals":{"errors":0,"warnings":20,"fixable":0},"files":{"\/src\/repo\/tools\/BadEscapeException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tools\/BadRegexException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/src\/ZhReplacementMachine.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tools\/Maintenance.php":{"errors":0,"warnings":1,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":12,"column":55}]},"\/src\/repo\/src\/BacktrackState.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/.phan\/config.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/src\/BracketResult.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/src\/Construct\/State.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/FstReplacementMachineTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/Construct\/GenReplFstTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/src\/Construct\/Edge.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/src\/NullReplacementMachine.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/src\/ReplacementMachine.php":{"errors":0,"warnings":2,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":65,"column":27},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":70,"column":40}]},"\/src\/repo\/tools\/genReplFst.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/NullReplacementMachineTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/src\/FstReplacementMachine.php":{"errors":0,"warnings":1,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":156,"column":34}]},"\/src\/repo\/tools\/dumpZh.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/src\/FST.php":{"errors":0,"warnings":10,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":12,"column":36},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":20,"column":41},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":21,"column":41},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":50,"column":55},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":105,"column":25},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":123,"column":48},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":178,"column":60},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":197,"column":72},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":208,"column":40},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":231,"column":43}]},"\/src\/repo\/src\/Construct\/MutableFST.php":{"errors":0,"warnings":3,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":175,"column":44},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":179,"column":31},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":190,"column":54}]},"\/src\/repo\/src\/Construct\/GenReplFst.php":{"errors":0,"warnings":3,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":290,"column":44},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":465,"column":49},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":469,"column":49}]},"\/src\/repo\/tools\/dumpCrh.php":{"errors":0,"warnings":0,"messages":[]}}}
--- end ---
PHPCS run failed
$ vendor/bin/phpcs --report=json
--- stdout ---
{"totals":{"errors":0,"warnings":20,"fixable":0},"files":{"\/src\/repo\/tools\/BadRegexException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/src\/NullReplacementMachine.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tools\/Maintenance.php":{"errors":0,"warnings":1,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":12,"column":55}]},"\/src\/repo\/src\/ZhReplacementMachine.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/src\/Construct\/Edge.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/src\/BracketResult.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/NullReplacementMachineTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tools\/BadEscapeException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/src\/Construct\/State.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/src\/ReplacementMachine.php":{"errors":0,"warnings":2,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":65,"column":27},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":70,"column":40}]},"\/src\/repo\/tests\/phpunit\/Construct\/GenReplFstTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/.phan\/config.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/FstReplacementMachineTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/src\/BacktrackState.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tools\/genReplFst.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tools\/dumpZh.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/src\/FstReplacementMachine.php":{"errors":0,"warnings":1,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":156,"column":34}]},"\/src\/repo\/src\/FST.php":{"errors":0,"warnings":10,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":12,"column":36},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":20,"column":41},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":21,"column":41},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":50,"column":55},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":105,"column":25},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":123,"column":48},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":178,"column":60},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":197,"column":72},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":208,"column":40},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":231,"column":43}]},"\/src\/repo\/src\/Construct\/MutableFST.php":{"errors":0,"warnings":3,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":175,"column":44},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":179,"column":31},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":190,"column":54}]},"\/src\/repo\/src\/Construct\/GenReplFst.php":{"errors":0,"warnings":3,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":290,"column":44},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":465,"column":49},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":469,"column":49}]},"\/src\/repo\/tools\/dumpCrh.php":{"errors":0,"warnings":0,"messages":[]}}}
--- end ---
$ git checkout .phpcs.xml
--- stderr ---
Updated 1 path from the index
--- stdout ---
--- end ---
Tests still failing. Skipping
$ /usr/bin/composer install
--- stderr ---
Installing dependencies from lock file (including require-dev)
Verifying lock file contents can be installed on current platform.
Nothing to install, update or remove
Generating optimized autoload files
Class Wikimedia\LangConv\Test\FstReplacementMachineTest located in ./tests/phpunit/FstReplacementMachineTest.php does not comply with psr-4 autoloading standard (rule: Wikimedia\LangConv\Tests\ => ./tests/phpunit). Skipping.
Class Wikimedia\LangConv\Test\Construct\GenReplFstTest located in ./tests/phpunit/Construct/GenReplFstTest.php does not comply with psr-4 autoloading standard (rule: Wikimedia\LangConv\Tests\ => ./tests/phpunit). Skipping.
Class Wikimedia\LangConv\Test\NullReplacementMachineTest located in ./tests/phpunit/NullReplacementMachineTest.php does not comply with psr-4 autoloading standard (rule: Wikimedia\LangConv\Tests\ => ./tests/phpunit). Skipping.
41 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
--- stdout ---
--- end ---
$ /usr/bin/composer test
--- stderr ---
> parallel-lint . --exclude vendor --exclude node_modules
> phpunit
> covers-validator
> phpcs -sp
> phan --allow-polyfill-parser
ERROR: Phan 5.x requires php-ast 1.1.3+ to properly analyze ASTs for php 8.4+. php-ast 1.1.2 and php 8.4.11 is installed.
php-ast can be installed in the following ways:
1. Unix (PECL): Run 'pecl install ast' and add extension=ast.so to your php.ini.
2. Unix (Compile): Download https://github.com/nikic/php-ast then compile and install the extension as follows:
cd path/to/php-ast
phpize
./configure
make
sudo make install
Additionally, add extension=ast.so to your php.ini file.
For more information, see https://github.com/phan/phan/wiki/Getting-Started#installing-dependencies
Exiting without analyzing files.
Script phan --allow-polyfill-parser handling the phan event returned with error code 1
Script @phan was called via test
--- stdout ---
PHP 8.4.11 | 10 parallel jobs
..................... 21/21 (100%)
Checked 21 files in 0.1 seconds
No syntax error found
PHPUnit 10.5.63 by Sebastian Bergmann and contributors.
Runtime: PHP 8.4.11
Configuration: /src/repo/phpunit.xml.dist
... 3 / 3 (100%)
Time: 00:00.013, Memory: 8.00 MB
OK (3 tests, 4 assertions)
CoversValidator 1.7.0
Validation complete. All @covers tags are valid.
..................... 21 / 21 (100%)
Time: 434ms; Memory: 8MB
--- end ---
Traceback (most recent call last):
File "/venv/lib/python3.13/site-packages/runner/__init__.py", line 1304, in main
libup.run()
~~~~~~~~~^^
File "/venv/lib/python3.13/site-packages/runner/__init__.py", line 1239, in run
self.composer_upgrade(plan)
~~~~~~~~~~~~~~~~~~~~~^^^^^^
File "/venv/lib/python3.13/site-packages/runner/__init__.py", line 1024, in composer_upgrade
self.composer_test()
~~~~~~~~~~~~~~~~~~^^
File "/venv/lib/python3.13/site-packages/runner/__init__.py", line 326, in composer_test
self.check_call(["composer", "test"])
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
File "/venv/lib/python3.13/site-packages/runner/shell2.py", line 66, in check_call
res.check_returncode()
~~~~~~~~~~~~~~~~~~~~^^
File "/usr/lib/python3.13/subprocess.py", line 508, in check_returncode
raise CalledProcessError(self.returncode, self.args, self.stdout,
self.stderr)
subprocess.CalledProcessError: Command '['/usr/bin/composer', 'test']' returned non-zero exit status 1.