From 44b79efee7547860e4c2022f1645ec290090e86a Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Sat, 18 Oct 2025 12:11:29 +0200 Subject: [PATCH 1/7] initial commit --- .editorconfig | 27 + .gitattributes | 15 + .github/renovate.json | 19 + .github/workflows/build.yml | 149 +++ .github/workflows/create-tag.yml | 53 + .github/workflows/release-toot.yml | 21 + .github/workflows/release-tweet.yml | 24 + .github/workflows/release.yml | 33 + .gitignore | 6 + LICENSE | 22 + Makefile | 34 + composer.json | 37 + infection.json5 | 17 + phpstan.neon | 7 + phpunit.xml | 38 + src/Infection/TrinaryLogicMutator.php | 69 + tests/Infection/TrinaryLogicMutatorTest.php | 74 ++ tmp/resultCache.php | 1253 +++++++++++++++++++ 18 files changed, 1898 insertions(+) create mode 100644 .editorconfig create mode 100644 .gitattributes create mode 100644 .github/renovate.json create mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/create-tag.yml create mode 100644 .github/workflows/release-toot.yml create mode 100644 .github/workflows/release-tweet.yml create mode 100644 .github/workflows/release.yml create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 Makefile create mode 100644 composer.json create mode 100644 infection.json5 create mode 100644 phpstan.neon create mode 100644 phpunit.xml create mode 100644 src/Infection/TrinaryLogicMutator.php create mode 100644 tests/Infection/TrinaryLogicMutatorTest.php create mode 100644 tmp/resultCache.php diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..5d66bc4 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,27 @@ +root = true + +[*] +end_of_line = lf +insert_final_newline = true +charset = utf-8 +trim_trailing_whitespace = true + +[*.{php,phpt}] +indent_style = tab +indent_size = 4 + +[*.xml] +indent_style = tab +indent_size = 4 + +[*.neon] +indent_style = tab +indent_size = 4 + +[*.{yaml,yml}] +indent_style = space +indent_size = 2 + +[composer.json] +indent_style = tab +indent_size = 4 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..a1d69c9 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,15 @@ +*.php text eol=lf + +.github export-ignore +tests export-ignore +compatibility export-ignore +tmp export-ignore +.gitattributes export-ignore +.gitignore export-ignore +Makefile export-ignore +phpstan.neon export-ignore +phpstan-baseline.neon export-ignore +phpstan-baseline-dbal-3.neon export-ignore +phpunit.xml export-ignore +stubs/runtime/Enum/UnitEnum.php export-ignore +stubs/runtime/Enum/BackedEnum.php export-ignore diff --git a/.github/renovate.json b/.github/renovate.json new file mode 100644 index 0000000..d3f5961 --- /dev/null +++ b/.github/renovate.json @@ -0,0 +1,19 @@ +{ + "extends": [ + "config:base", + "schedule:weekly" + ], + "rangeStrategy": "update-lockfile", + "packageRules": [ + { + "matchPaths": ["+(composer.json)"], + "enabled": true, + "groupName": "root-composer" + }, + { + "matchPaths": [".github/**"], + "enabled": true, + "groupName": "github-actions" + } + ] +} diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..5c0db02 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,149 @@ +# https://help.github.com/en/categories/automating-your-workflow-with-github-actions + +name: "Build" + +on: + pull_request: + push: + branches: + - "1.0.x" + +jobs: + lint: + name: "Lint" + runs-on: "ubuntu-latest" + + strategy: + fail-fast: false + matrix: + php-version: + - "8.2" + - "8.3" + - "8.4" + + steps: + - name: "Checkout" + uses: actions/checkout@v5 + + - name: "Install PHP" + uses: "shivammathur/setup-php@v2" + with: + coverage: "none" + php-version: "${{ matrix.php-version }}" + ini-file: development + extensions: "mongodb" + + - name: "Validate Composer" + run: "composer validate" + + - name: "Allow installing on PHP 8.4" + if: matrix.php-version == '8.4' + run: "composer config platform.php 8.3.99" + + - name: "Install dependencies" + run: "composer install --no-interaction --no-progress" + + - name: "Lint" + run: "make lint" + + coding-standard: + name: "Coding Standard" + + runs-on: "ubuntu-latest" + + steps: + - name: "Checkout" + uses: actions/checkout@v5 + + - name: "Checkout build-cs" + uses: actions/checkout@v5 + with: + repository: "phpstan/build-cs" + path: "build-cs" + ref: "2.x" + + - name: "Install PHP" + uses: "shivammathur/setup-php@v2" + with: + coverage: "none" + php-version: "8.2" + ini-file: development + + - name: "Validate Composer" + run: "composer validate" + + - name: "Install dependencies" + run: "composer install --no-interaction --no-progress" + + - name: "Install build-cs dependencies" + working-directory: "build-cs" + run: "composer install --no-interaction --no-progress" + + - name: "Lint" + run: "make lint" + + - name: "Coding Standard" + run: "make cs" + + tests: + name: "Tests" + runs-on: "ubuntu-latest" + + strategy: + fail-fast: false + matrix: + php-version: + - "8.2" + - "8.3" + - "8.4" + + steps: + - name: "Checkout" + uses: actions/checkout@v5 + + - name: "Install PHP" + uses: "shivammathur/setup-php@v2" + with: + coverage: "none" + php-version: "${{ matrix.php-version }}" + ini-file: development + extensions: "mongodb" + + - name: "Allow installing on PHP 8.4" + if: matrix.php-version == '8.4' + run: "composer config platform.php 8.3.99" + + - name: "Update packages" + run: ${{ matrix.update-packages }} + + - name: "Tests" + run: "make tests" + + static-analysis: + name: "PHPStan" + runs-on: "ubuntu-latest" + + strategy: + fail-fast: false + matrix: + php-version: + - "8.2" + - "8.3" + - "8.4" + + steps: + - name: "Checkout" + uses: actions/checkout@v5 + + - name: "Install PHP" + uses: "shivammathur/setup-php@v2" + with: + coverage: "none" + php-version: "${{ matrix.php-version }}" + ini-file: development + + - name: "Update packages" + run: ${{ matrix.update-packages }} + + - name: "PHPStan" + run: "make phpstan" diff --git a/.github/workflows/create-tag.yml b/.github/workflows/create-tag.yml new file mode 100644 index 0000000..fd91816 --- /dev/null +++ b/.github/workflows/create-tag.yml @@ -0,0 +1,53 @@ +# https://help.github.com/en/categories/automating-your-workflow-with-github-actions + +name: "Create tag" + +on: + # https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#workflow_dispatch + workflow_dispatch: + inputs: + version: + description: 'Next version' + required: true + default: 'patch' + type: choice + options: + - patch + - minor + +jobs: + create-tag: + name: "Create tag" + runs-on: "ubuntu-latest" + steps: + - name: "Checkout" + uses: actions/checkout@v5 + with: + fetch-depth: 0 + token: ${{ secrets.PHPSTAN_BOT_TOKEN }} + + - name: 'Get Previous tag' + id: previoustag + uses: "WyriHaximus/github-action-get-previous-tag@v1" + env: + GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + + - name: 'Get next versions' + id: semvers + uses: "WyriHaximus/github-action-next-semvers@v1" + with: + version: ${{ steps.previoustag.outputs.tag }} + + - name: "Create new minor tag" + uses: rickstaa/action-create-tag@v1 + if: inputs.version == 'minor' + with: + tag: ${{ steps.semvers.outputs.minor }} + message: ${{ steps.semvers.outputs.minor }} + + - name: "Create new patch tag" + uses: rickstaa/action-create-tag@v1 + if: inputs.version == 'patch' + with: + tag: ${{ steps.semvers.outputs.patch }} + message: ${{ steps.semvers.outputs.patch }} diff --git a/.github/workflows/release-toot.yml b/.github/workflows/release-toot.yml new file mode 100644 index 0000000..1ba4fd7 --- /dev/null +++ b/.github/workflows/release-toot.yml @@ -0,0 +1,21 @@ +name: Toot release + +# More triggers +# https://docs.github.com/en/actions/learn-github-actions/events-that-trigger-workflows#release +on: + release: + types: [published] + +jobs: + toot: + runs-on: ubuntu-latest + steps: + - uses: cbrgm/mastodon-github-action@v2 + if: ${{ !github.event.repository.private }} + with: + # GitHub event payload + # https://docs.github.com/en/developers/webhooks-and-events/webhooks/webhook-events-and-payloads#release + message: "New release: ${{ github.event.repository.name }} ${{ github.event.release.tag_name }} ${{ github.event.release.html_url }} #phpstan" + env: + MASTODON_URL: https://phpc.social + MASTODON_ACCESS_TOKEN: ${{ secrets.MASTODON_ACCESS_TOKEN }} diff --git a/.github/workflows/release-tweet.yml b/.github/workflows/release-tweet.yml new file mode 100644 index 0000000..d81f34c --- /dev/null +++ b/.github/workflows/release-tweet.yml @@ -0,0 +1,24 @@ +name: Tweet release + +# More triggers +# https://docs.github.com/en/actions/learn-github-actions/events-that-trigger-workflows#release +on: + release: + types: [published] + +jobs: + tweet: + runs-on: ubuntu-latest + steps: + - uses: Eomm/why-don-t-you-tweet@v2 + if: ${{ !github.event.repository.private }} + with: + # GitHub event payload + # https://docs.github.com/en/developers/webhooks-and-events/webhooks/webhook-events-and-payloads#release + tweet-message: "New release: ${{ github.event.repository.name }} ${{ github.event.release.tag_name }} ${{ github.event.release.html_url }} #phpstan" + env: + # Get your tokens from https://developer.twitter.com/apps + TWITTER_CONSUMER_API_KEY: ${{ secrets.TWITTER_CONSUMER_API_KEY }} + TWITTER_CONSUMER_API_SECRET: ${{ secrets.TWITTER_CONSUMER_API_SECRET }} + TWITTER_ACCESS_TOKEN: ${{ secrets.TWITTER_ACCESS_TOKEN }} + TWITTER_ACCESS_TOKEN_SECRET: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..ed7e51a --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,33 @@ +# https://help.github.com/en/categories/automating-your-workflow-with-github-actions + +name: "Create release" + +on: + push: + tags: + - '*' + +jobs: + deploy: + name: "Deploy" + runs-on: "ubuntu-latest" + + steps: + - name: "Checkout" + uses: actions/checkout@v5 + + - name: Generate changelog + id: changelog + uses: metcalfc/changelog-generator@v4.6.2 + with: + myToken: ${{ secrets.PHPSTAN_BOT_TOKEN }} + + - name: "Create release" + id: create-release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.PHPSTAN_BOT_TOKEN }} + with: + tag_name: ${{ github.ref }} + release_name: ${{ github.ref }} + body: ${{ steps.changelog.outputs.changelog }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e3d740a --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +/tests/tmp +/build-cs +/vendor +/composer.lock +/.env +.phpunit.result.cache diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..e5f34e6 --- /dev/null +++ b/LICENSE @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2016 Ondřej Mirtes +Copyright (c) 2025 PHPStan s.r.o. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..8c11203 --- /dev/null +++ b/Makefile @@ -0,0 +1,34 @@ +.PHONY: check +check: lint cs tests phpstan + +.PHONY: tests +tests: + php vendor/bin/phpunit + +.PHONY: lint +lint: + php vendor/bin/parallel-lint --colors \ + --exclude tests/Rules/DeadCode/data/bug-383.php \ + src tests + +.PHONY: cs-install +cs-install: + git clone https://github.com/phpstan/build-cs.git || true + git -C build-cs fetch origin && git -C build-cs reset --hard origin/2.x + composer install --working-dir build-cs + +.PHONY: cs +cs: + php build-cs/vendor/bin/phpcs --standard=build-cs/phpcs.xml src tests + +.PHONY: cs-fix +cs-fix: + php build-cs/vendor/bin/phpcbf --standard=build-cs/phpcs.xml src tests + +.PHONY: phpstan +phpstan: + php vendor/bin/phpstan analyse -c phpstan.neon + +.PHONY: phpstan-generate-baseline +phpstan-generate-baseline: + php vendor/bin/phpstan analyse -c phpstan.neon -b phpstan-baseline.neon diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..b89d689 --- /dev/null +++ b/composer.json @@ -0,0 +1,37 @@ +{ + "name": "phpstan/build-infection", + "description": "Infection extensions for PHPStan", + "license": [ + "MIT" + ], + "require": { + "php": "^7.4 || ^8.0", + "infection/infection": "^0.31.6" + }, + "require-dev": { + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/phpstan": "^2.1.13", + "phpstan/phpstan-deprecation-rules": "^2.0.2", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^11.5.23" + }, + "config": { + "sort-packages": true, + "allow-plugins": { + "infection/extension-installer": true + } + }, + "autoload": { + "psr-4": { + "PHPStan\\": "src/" + } + }, + "autoload-dev": { + "classmap": [ + "tests/" + ] + }, + "minimum-stability": "dev", + "prefer-stable": true +} diff --git a/infection.json5 b/infection.json5 new file mode 100644 index 0000000..7afd723 --- /dev/null +++ b/infection.json5 @@ -0,0 +1,17 @@ +{ + "$schema": "vendor/infection/infection/resources/schema.json", + "timeout": 30, + "source": { + "directories": [ + "src" + ] + }, + "staticAnalysisTool": "phpstan", + "logs": { + "text": "tmp/infection.log" + }, + "mutators": { + "@default": false, + "PHPStan\\Infection\\TrinaryLogicMutator": true + } +} diff --git a/phpstan.neon b/phpstan.neon new file mode 100644 index 0000000..6d7c0fd --- /dev/null +++ b/phpstan.neon @@ -0,0 +1,7 @@ +parameters: + level: 8 + paths: + - src + - tests + + resultCachePath: tmp/resultCache.php diff --git a/phpunit.xml b/phpunit.xml new file mode 100644 index 0000000..539b98d --- /dev/null +++ b/phpunit.xml @@ -0,0 +1,38 @@ + + + + + ./src + + + + + + + + + + tests + + + + + diff --git a/src/Infection/TrinaryLogicMutator.php b/src/Infection/TrinaryLogicMutator.php new file mode 100644 index 0000000..eb527a2 --- /dev/null +++ b/src/Infection/TrinaryLogicMutator.php @@ -0,0 +1,69 @@ + + */ +final class TrinaryLogicMutator implements Mutator +{ + + public static function getDefinition(): Definition + { + return new Definition( + <<<'TXT' + Replaces TrinaryLogic->yes() with !TrinaryLogic->no() and vice versa. + TXT + , + MutatorCategory::ORTHOGONAL_REPLACEMENT, + null, + <<<'DIFF' + - $type->isBoolean()->yes(); + + !$type->isBoolean()->no(); + DIFF, + ); + } + + public function getName(): string + { + return self::class; + } + + public function canMutate(Node $node): bool + { + if (!$node instanceof Node\Expr\MethodCall) { + return false; + } + + if (!$node->name instanceof Node\Identifier) { + return false; + } + + if (!in_array($node->name->name, ['yes', 'no'], true)) { + return false; + } + + return true; + } + + public function mutate(Node $node): iterable + { + if (!$node->name instanceof Node\Identifier) { + throw new LogicException(); + } + + if ($node->name->name === 'yes') { + yield new Node\Expr\BooleanNot(new Node\Expr\MethodCall($node->var, 'no')); + } else { + yield new Node\Expr\BooleanNot(new Node\Expr\MethodCall($node->var, 'yes')); + } + } + +} diff --git a/tests/Infection/TrinaryLogicMutatorTest.php b/tests/Infection/TrinaryLogicMutatorTest.php new file mode 100644 index 0000000..bff2bde --- /dev/null +++ b/tests/Infection/TrinaryLogicMutatorTest.php @@ -0,0 +1,74 @@ +assertMutatesInput($input, $expected); + } + + /** + * @return iterable + */ + public static function mutationsProvider(): iterable + { + yield 'It mutates trinary yes' => [ + <<<'PHP' + yes(); + PHP +, + <<<'PHP' + no(); + PHP +, + ]; + + yield 'It mutates trinary no' => [ + <<<'PHP' + no(); + PHP +, + <<<'PHP' + yes(); + PHP +, + ]; + + yield 'It mutates skips maybe' => [ + <<<'PHP' + maybe(); + PHP +, + ]; + } + + protected function getTestedMutatorClassName(): string + { + return TrinaryLogicMutator::class; + } + +} diff --git a/tmp/resultCache.php b/tmp/resultCache.php new file mode 100644 index 0000000..84d76c4 --- /dev/null +++ b/tmp/resultCache.php @@ -0,0 +1,1253 @@ + 1760782214, + 'meta' => array ( + 'cacheVersion' => 'v12-linesToIgnore', + 'phpstanVersion' => '2.1.31', + 'metaExtensions' => + array ( + ), + 'phpVersion' => 80326, + 'projectConfig' => '{parameters: {level: 8, paths: [/Users/staabm/workspace/build-infection/src, /Users/staabm/workspace/build-infection/tests], resultCachePath: tmp/resultCache.php}}', + 'analysedPaths' => + array ( + 0 => '/Users/staabm/workspace/build-infection/src', + 1 => '/Users/staabm/workspace/build-infection/tests', + ), + 'scannedFiles' => + array ( + ), + 'composerLocks' => + array ( + '/Users/staabm/workspace/build-infection/composer.lock' => 'b2dc229901418de9078317e2fbb0d8d31cdcb9fa', + ), + 'composerInstalled' => + array ( + '/Users/staabm/workspace/build-infection/vendor/composer/installed.php' => + array ( + 'versions' => + array ( + 'colinodell/json5' => + array ( + 'pretty_version' => 'v3.0.0', + 'version' => '3.0.0.0', + 'reference' => '5724d21bc5c910c2560af1b8915f0cc0163579c8', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../colinodell/json5', + 'aliases' => + array ( + ), + 'dev_requirement' => false, + ), + 'composer/pcre' => + array ( + 'pretty_version' => '3.3.2', + 'version' => '3.3.2.0', + 'reference' => 'b2bed4734f0cc156ee1fe9c0da2550420d99a21e', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/./pcre', + 'aliases' => + array ( + ), + 'dev_requirement' => false, + ), + 'composer/xdebug-handler' => + array ( + 'pretty_version' => '3.0.5', + 'version' => '3.0.5.0', + 'reference' => '6c1925561632e83d60a44492e0b344cf48ab85ef', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/./xdebug-handler', + 'aliases' => + array ( + ), + 'dev_requirement' => false, + ), + 'fidry/cpu-core-counter' => + array ( + 'pretty_version' => '1.3.0', + 'version' => '1.3.0.0', + 'reference' => 'db9508f7b1474469d9d3c53b86f817e344732678', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../fidry/cpu-core-counter', + 'aliases' => + array ( + ), + 'dev_requirement' => false, + ), + 'grogy/php-parallel-lint' => + array ( + 'dev_requirement' => true, + 'replaced' => + array ( + 0 => '*', + ), + ), + 'infection/abstract-testframework-adapter' => + array ( + 'pretty_version' => '0.5.0', + 'version' => '0.5.0.0', + 'reference' => '18925e20d15d1a5995bb85c9dc09e8751e1e069b', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../infection/abstract-testframework-adapter', + 'aliases' => + array ( + ), + 'dev_requirement' => false, + ), + 'infection/extension-installer' => + array ( + 'pretty_version' => '0.1.2', + 'version' => '0.1.2.0', + 'reference' => '9b351d2910b9a23ab4815542e93d541e0ca0cdcf', + 'type' => 'composer-plugin', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../infection/extension-installer', + 'aliases' => + array ( + ), + 'dev_requirement' => false, + ), + 'infection/include-interceptor' => + array ( + 'pretty_version' => '0.2.5', + 'version' => '0.2.5.0', + 'reference' => '0cc76d95a79d9832d74e74492b0a30139904bdf7', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../infection/include-interceptor', + 'aliases' => + array ( + ), + 'dev_requirement' => false, + ), + 'infection/infection' => + array ( + 'pretty_version' => '0.31.7', + 'version' => '0.31.7.0', + 'reference' => 'a66e38972304f5c742d4ee19adec132c45bb5a46', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../infection/infection', + 'aliases' => + array ( + ), + 'dev_requirement' => false, + ), + 'infection/mutator' => + array ( + 'pretty_version' => '0.4.1', + 'version' => '0.4.1.0', + 'reference' => '3c976d721b02b32f851ee4e15d553ef1e9186d1d', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../infection/mutator', + 'aliases' => + array ( + ), + 'dev_requirement' => false, + ), + 'jakub-onderka/php-parallel-lint' => + array ( + 'dev_requirement' => true, + 'replaced' => + array ( + 0 => '*', + ), + ), + 'justinrainbow/json-schema' => + array ( + 'pretty_version' => '6.6.0', + 'version' => '6.6.0.0', + 'reference' => '68ba7677532803cc0c5900dd5a4d730537f2b2f3', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../justinrainbow/json-schema', + 'aliases' => + array ( + ), + 'dev_requirement' => false, + ), + 'marc-mabe/php-enum' => + array ( + 'pretty_version' => 'v4.7.2', + 'version' => '4.7.2.0', + 'reference' => 'bb426fcdd65c60fb3638ef741e8782508fda7eef', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../marc-mabe/php-enum', + 'aliases' => + array ( + ), + 'dev_requirement' => false, + ), + 'myclabs/deep-copy' => + array ( + 'pretty_version' => '1.13.4', + 'version' => '1.13.4.0', + 'reference' => '07d290f0c47959fd5eed98c95ee5602db07e0b6a', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../myclabs/deep-copy', + 'aliases' => + array ( + ), + 'dev_requirement' => true, + ), + 'nikic/php-parser' => + array ( + 'pretty_version' => 'v5.6.1', + 'version' => '5.6.1.0', + 'reference' => 'f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../nikic/php-parser', + 'aliases' => + array ( + ), + 'dev_requirement' => false, + ), + 'ondram/ci-detector' => + array ( + 'pretty_version' => '4.2.0', + 'version' => '4.2.0.0', + 'reference' => '8b0223b5ed235fd377c75fdd1bfcad05c0f168b8', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../ondram/ci-detector', + 'aliases' => + array ( + ), + 'dev_requirement' => false, + ), + 'phar-io/manifest' => + array ( + 'pretty_version' => '2.0.4', + 'version' => '2.0.4.0', + 'reference' => '54750ef60c58e43759730615a392c31c80e23176', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../phar-io/manifest', + 'aliases' => + array ( + ), + 'dev_requirement' => true, + ), + 'phar-io/version' => + array ( + 'pretty_version' => '3.2.1', + 'version' => '3.2.1.0', + 'reference' => '4f7fd7836c6f332bb2933569e566a0d6c4cbed74', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../phar-io/version', + 'aliases' => + array ( + ), + 'dev_requirement' => true, + ), + 'php-parallel-lint/php-parallel-lint' => + array ( + 'pretty_version' => 'v1.4.0', + 'version' => '1.4.0.0', + 'reference' => '6db563514f27e19595a19f45a4bf757b6401194e', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../php-parallel-lint/php-parallel-lint', + 'aliases' => + array ( + ), + 'dev_requirement' => true, + ), + 'phpstan/phpstan' => + array ( + 'pretty_version' => '2.1.31', + 'version' => '2.1.31.0', + 'reference' => 'ead89849d879fe203ce9292c6ef5e7e76f867b96', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../phpstan/phpstan', + 'aliases' => + array ( + ), + 'dev_requirement' => true, + ), + 'phpstan/phpstan-deprecation-rules' => + array ( + 'pretty_version' => '2.0.3', + 'version' => '2.0.3.0', + 'reference' => '468e02c9176891cc901143da118f09dc9505fc2f', + 'type' => 'phpstan-extension', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../phpstan/phpstan-deprecation-rules', + 'aliases' => + array ( + ), + 'dev_requirement' => true, + ), + 'phpstan/phpstan-phpunit' => + array ( + 'pretty_version' => '2.0.7', + 'version' => '2.0.7.0', + 'reference' => '9a9b161baee88a5f5c58d816943cff354ff233dc', + 'type' => 'phpstan-extension', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../phpstan/phpstan-phpunit', + 'aliases' => + array ( + ), + 'dev_requirement' => true, + ), + 'phpstan/phpstan-strict-rules' => + array ( + 'pretty_version' => '2.0.7', + 'version' => '2.0.7.0', + 'reference' => 'd6211c46213d4181054b3d77b10a5c5cb0d59538', + 'type' => 'phpstan-extension', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../phpstan/phpstan-strict-rules', + 'aliases' => + array ( + ), + 'dev_requirement' => true, + ), + 'phpunit/php-code-coverage' => + array ( + 'pretty_version' => '11.0.11', + 'version' => '11.0.11.0', + 'reference' => '4f7722aa9a7b76aa775e2d9d4e95d1ea16eeeef4', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../phpunit/php-code-coverage', + 'aliases' => + array ( + ), + 'dev_requirement' => true, + ), + 'phpunit/php-file-iterator' => + array ( + 'pretty_version' => '5.1.0', + 'version' => '5.1.0.0', + 'reference' => '118cfaaa8bc5aef3287bf315b6060b1174754af6', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../phpunit/php-file-iterator', + 'aliases' => + array ( + ), + 'dev_requirement' => true, + ), + 'phpunit/php-invoker' => + array ( + 'pretty_version' => '5.0.1', + 'version' => '5.0.1.0', + 'reference' => 'c1ca3814734c07492b3d4c5f794f4b0995333da2', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../phpunit/php-invoker', + 'aliases' => + array ( + ), + 'dev_requirement' => true, + ), + 'phpunit/php-text-template' => + array ( + 'pretty_version' => '4.0.1', + 'version' => '4.0.1.0', + 'reference' => '3e0404dc6b300e6bf56415467ebcb3fe4f33e964', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../phpunit/php-text-template', + 'aliases' => + array ( + ), + 'dev_requirement' => true, + ), + 'phpunit/php-timer' => + array ( + 'pretty_version' => '7.0.1', + 'version' => '7.0.1.0', + 'reference' => '3b415def83fbcb41f991d9ebf16ae4ad8b7837b3', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../phpunit/php-timer', + 'aliases' => + array ( + ), + 'dev_requirement' => true, + ), + 'phpunit/phpunit' => + array ( + 'pretty_version' => '11.5.42', + 'version' => '11.5.42.0', + 'reference' => '1c6cb5dfe412af3d0dfd414cfd110e3b9cfdbc3c', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../phpunit/phpunit', + 'aliases' => + array ( + ), + 'dev_requirement' => true, + ), + 'psr/clock' => + array ( + 'pretty_version' => '1.0.0', + 'version' => '1.0.0.0', + 'reference' => 'e41a24703d4560fd0acb709162f73b8adfc3aa0d', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../psr/clock', + 'aliases' => + array ( + ), + 'dev_requirement' => false, + ), + 'psr/clock-implementation' => + array ( + 'dev_requirement' => false, + 'provided' => + array ( + 0 => '1.0', + ), + ), + 'psr/container' => + array ( + 'pretty_version' => '2.0.2', + 'version' => '2.0.2.0', + 'reference' => 'c71ecc56dfe541dbd90c5360474fbc405f8d5963', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../psr/container', + 'aliases' => + array ( + ), + 'dev_requirement' => false, + ), + 'psr/log' => + array ( + 'pretty_version' => '3.0.2', + 'version' => '3.0.2.0', + 'reference' => 'f16e1d5863e37f8d8c2a01719f5b34baa2b714d3', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../psr/log', + 'aliases' => + array ( + ), + 'dev_requirement' => false, + ), + 'psr/log-implementation' => + array ( + 'dev_requirement' => false, + 'provided' => + array ( + 0 => '1.0|2.0|3.0', + ), + ), + 'sanmai/di-container' => + array ( + 'pretty_version' => '0.1.5', + 'version' => '0.1.5.0', + 'reference' => '355534ad7970fc7dab4211ecaf2da5c546855ee8', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../sanmai/di-container', + 'aliases' => + array ( + ), + 'dev_requirement' => false, + ), + 'sanmai/duoclock' => + array ( + 'pretty_version' => '0.1.1', + 'version' => '0.1.1.0', + 'reference' => '30aa40092396dc96b68c8e8d49162619574477e2', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../sanmai/duoclock', + 'aliases' => + array ( + ), + 'dev_requirement' => false, + ), + 'sanmai/later' => + array ( + 'pretty_version' => '0.1.7', + 'version' => '0.1.7.0', + 'reference' => '72a82d783864bca90412d8a26c1878f8981fee97', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../sanmai/later', + 'aliases' => + array ( + ), + 'dev_requirement' => false, + ), + 'sanmai/pipeline' => + array ( + 'pretty_version' => '7.4', + 'version' => '7.4.0.0', + 'reference' => '6a73545f09b9b475a3735ecdee5e98476a063179', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../sanmai/pipeline', + 'aliases' => + array ( + ), + 'dev_requirement' => false, + ), + 'sebastian/cli-parser' => + array ( + 'pretty_version' => '3.0.2', + 'version' => '3.0.2.0', + 'reference' => '15c5dd40dc4f38794d383bb95465193f5e0ae180', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../sebastian/cli-parser', + 'aliases' => + array ( + ), + 'dev_requirement' => true, + ), + 'sebastian/code-unit' => + array ( + 'pretty_version' => '3.0.3', + 'version' => '3.0.3.0', + 'reference' => '54391c61e4af8078e5b276ab082b6d3c54c9ad64', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../sebastian/code-unit', + 'aliases' => + array ( + ), + 'dev_requirement' => true, + ), + 'sebastian/code-unit-reverse-lookup' => + array ( + 'pretty_version' => '4.0.1', + 'version' => '4.0.1.0', + 'reference' => '183a9b2632194febd219bb9246eee421dad8d45e', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../sebastian/code-unit-reverse-lookup', + 'aliases' => + array ( + ), + 'dev_requirement' => true, + ), + 'sebastian/comparator' => + array ( + 'pretty_version' => '6.3.2', + 'version' => '6.3.2.0', + 'reference' => '85c77556683e6eee4323e4c5468641ca0237e2e8', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../sebastian/comparator', + 'aliases' => + array ( + ), + 'dev_requirement' => true, + ), + 'sebastian/complexity' => + array ( + 'pretty_version' => '4.0.1', + 'version' => '4.0.1.0', + 'reference' => 'ee41d384ab1906c68852636b6de493846e13e5a0', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../sebastian/complexity', + 'aliases' => + array ( + ), + 'dev_requirement' => true, + ), + 'sebastian/diff' => + array ( + 'pretty_version' => '6.0.2', + 'version' => '6.0.2.0', + 'reference' => 'b4ccd857127db5d41a5b676f24b51371d76d8544', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../sebastian/diff', + 'aliases' => + array ( + ), + 'dev_requirement' => false, + ), + 'sebastian/environment' => + array ( + 'pretty_version' => '7.2.1', + 'version' => '7.2.1.0', + 'reference' => 'a5c75038693ad2e8d4b6c15ba2403532647830c4', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../sebastian/environment', + 'aliases' => + array ( + ), + 'dev_requirement' => true, + ), + 'sebastian/exporter' => + array ( + 'pretty_version' => '6.3.2', + 'version' => '6.3.2.0', + 'reference' => '70a298763b40b213ec087c51c739efcaa90bcd74', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../sebastian/exporter', + 'aliases' => + array ( + ), + 'dev_requirement' => true, + ), + 'sebastian/global-state' => + array ( + 'pretty_version' => '7.0.2', + 'version' => '7.0.2.0', + 'reference' => '3be331570a721f9a4b5917f4209773de17f747d7', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../sebastian/global-state', + 'aliases' => + array ( + ), + 'dev_requirement' => true, + ), + 'sebastian/lines-of-code' => + array ( + 'pretty_version' => '3.0.1', + 'version' => '3.0.1.0', + 'reference' => 'd36ad0d782e5756913e42ad87cb2890f4ffe467a', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../sebastian/lines-of-code', + 'aliases' => + array ( + ), + 'dev_requirement' => true, + ), + 'sebastian/object-enumerator' => + array ( + 'pretty_version' => '6.0.1', + 'version' => '6.0.1.0', + 'reference' => 'f5b498e631a74204185071eb41f33f38d64608aa', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../sebastian/object-enumerator', + 'aliases' => + array ( + ), + 'dev_requirement' => true, + ), + 'sebastian/object-reflector' => + array ( + 'pretty_version' => '4.0.1', + 'version' => '4.0.1.0', + 'reference' => '6e1a43b411b2ad34146dee7524cb13a068bb35f9', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../sebastian/object-reflector', + 'aliases' => + array ( + ), + 'dev_requirement' => true, + ), + 'sebastian/recursion-context' => + array ( + 'pretty_version' => '6.0.3', + 'version' => '6.0.3.0', + 'reference' => 'f6458abbf32a6c8174f8f26261475dc133b3d9dc', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../sebastian/recursion-context', + 'aliases' => + array ( + ), + 'dev_requirement' => true, + ), + 'sebastian/type' => + array ( + 'pretty_version' => '5.1.3', + 'version' => '5.1.3.0', + 'reference' => 'f77d2d4e78738c98d9a68d2596fe5e8fa380f449', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../sebastian/type', + 'aliases' => + array ( + ), + 'dev_requirement' => true, + ), + 'sebastian/version' => + array ( + 'pretty_version' => '5.0.2', + 'version' => '5.0.2.0', + 'reference' => 'c687e3387b99f5b03b6caa64c74b63e2936ff874', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../sebastian/version', + 'aliases' => + array ( + ), + 'dev_requirement' => true, + ), + 'staabm/side-effects-detector' => + array ( + 'pretty_version' => '1.0.5', + 'version' => '1.0.5.0', + 'reference' => 'd8334211a140ce329c13726d4a715adbddd0a163', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../staabm/side-effects-detector', + 'aliases' => + array ( + ), + 'dev_requirement' => true, + ), + 'symfony/console' => + array ( + 'pretty_version' => 'v7.3.4', + 'version' => '7.3.4.0', + 'reference' => '2b9c5fafbac0399a20a2e82429e2bd735dcfb7db', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../symfony/console', + 'aliases' => + array ( + ), + 'dev_requirement' => false, + ), + 'symfony/deprecation-contracts' => + array ( + 'pretty_version' => 'v3.6.0', + 'version' => '3.6.0.0', + 'reference' => '63afe740e99a13ba87ec199bb07bbdee937a5b62', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../symfony/deprecation-contracts', + 'aliases' => + array ( + ), + 'dev_requirement' => false, + ), + 'symfony/filesystem' => + array ( + 'pretty_version' => 'v7.3.2', + 'version' => '7.3.2.0', + 'reference' => 'edcbb768a186b5c3f25d0643159a787d3e63b7fd', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../symfony/filesystem', + 'aliases' => + array ( + ), + 'dev_requirement' => false, + ), + 'symfony/finder' => + array ( + 'pretty_version' => 'v7.3.2', + 'version' => '7.3.2.0', + 'reference' => '2a6614966ba1074fa93dae0bc804227422df4dfe', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../symfony/finder', + 'aliases' => + array ( + ), + 'dev_requirement' => false, + ), + 'symfony/polyfill-ctype' => + array ( + 'pretty_version' => 'v1.33.0', + 'version' => '1.33.0.0', + 'reference' => 'a3cc8b044a6ea513310cbd48ef7333b384945638', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../symfony/polyfill-ctype', + 'aliases' => + array ( + ), + 'dev_requirement' => false, + ), + 'symfony/polyfill-intl-grapheme' => + array ( + 'pretty_version' => 'v1.33.0', + 'version' => '1.33.0.0', + 'reference' => '380872130d3a5dd3ace2f4010d95125fde5d5c70', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../symfony/polyfill-intl-grapheme', + 'aliases' => + array ( + ), + 'dev_requirement' => false, + ), + 'symfony/polyfill-intl-normalizer' => + array ( + 'pretty_version' => 'v1.33.0', + 'version' => '1.33.0.0', + 'reference' => '3833d7255cc303546435cb650316bff708a1c75c', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../symfony/polyfill-intl-normalizer', + 'aliases' => + array ( + ), + 'dev_requirement' => false, + ), + 'symfony/polyfill-mbstring' => + array ( + 'pretty_version' => 'v1.33.0', + 'version' => '1.33.0.0', + 'reference' => '6d857f4d76bd4b343eac26d6b539585d2bc56493', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../symfony/polyfill-mbstring', + 'aliases' => + array ( + ), + 'dev_requirement' => false, + ), + 'symfony/process' => + array ( + 'pretty_version' => 'v7.3.4', + 'version' => '7.3.4.0', + 'reference' => 'f24f8f316367b30810810d4eb30c543d7003ff3b', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../symfony/process', + 'aliases' => + array ( + ), + 'dev_requirement' => false, + ), + 'symfony/service-contracts' => + array ( + 'pretty_version' => 'v3.6.0', + 'version' => '3.6.0.0', + 'reference' => 'f021b05a130d35510bd6b25fe9053c2a8a15d5d4', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../symfony/service-contracts', + 'aliases' => + array ( + ), + 'dev_requirement' => false, + ), + 'symfony/string' => + array ( + 'pretty_version' => 'v7.3.4', + 'version' => '7.3.4.0', + 'reference' => 'f96476035142921000338bad71e5247fbc138872', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../symfony/string', + 'aliases' => + array ( + ), + 'dev_requirement' => false, + ), + 'thecodingmachine/safe' => + array ( + 'pretty_version' => 'v3.3.0', + 'version' => '3.3.0.0', + 'reference' => '2cdd579eeaa2e78e51c7509b50cc9fb89a956236', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../thecodingmachine/safe', + 'aliases' => + array ( + ), + 'dev_requirement' => false, + ), + 'theseer/tokenizer' => + array ( + 'pretty_version' => '1.2.3', + 'version' => '1.2.3.0', + 'reference' => '737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../theseer/tokenizer', + 'aliases' => + array ( + ), + 'dev_requirement' => true, + ), + 'webmozart/assert' => + array ( + 'pretty_version' => '1.11.0', + 'version' => '1.11.0.0', + 'reference' => '11cb2199493b2f8a3b53e7f19068fc6aac760991', + 'type' => 'library', + 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../webmozart/assert', + 'aliases' => + array ( + ), + 'dev_requirement' => false, + ), + ), + ), + ), + 'executedFilesHashes' => + array ( + 'phar:///Users/staabm/workspace/build-infection/vendor/phpstan/phpstan/phpstan.phar/stubs/runtime/Attribute85.php' => '123dcd45f03f2463904087a66bfe2bc139760df0', + 'phar:///Users/staabm/workspace/build-infection/vendor/phpstan/phpstan/phpstan.phar/stubs/runtime/ReflectionAttribute.php' => '0b4b78277eb6545955d2ce5e09bff28f1f8052c8', + 'phar:///Users/staabm/workspace/build-infection/vendor/phpstan/phpstan/phpstan.phar/stubs/runtime/ReflectionIntersectionType.php' => 'a3e6299b87ee5d407dae7651758edfa11a74cb11', + 'phar:///Users/staabm/workspace/build-infection/vendor/phpstan/phpstan/phpstan.phar/stubs/runtime/ReflectionUnionType.php' => '1b349aa997a834faeafe05fa21bc31cae22bf2e2', + ), + 'phpExtensions' => + array ( + 0 => 'Core', + 1 => 'FFI', + 2 => 'PDO', + 3 => 'PDO_ODBC', + 4 => 'Phar', + 5 => 'Reflection', + 6 => 'SPL', + 7 => 'SimpleXML', + 8 => 'bcmath', + 9 => 'bz2', + 10 => 'calendar', + 11 => 'ctype', + 12 => 'curl', + 13 => 'date', + 14 => 'dba', + 15 => 'dom', + 16 => 'exif', + 17 => 'fileinfo', + 18 => 'filter', + 19 => 'ftp', + 20 => 'gd', + 21 => 'gettext', + 22 => 'gmp', + 23 => 'hash', + 24 => 'iconv', + 25 => 'intl', + 26 => 'json', + 27 => 'ldap', + 28 => 'libxml', + 29 => 'mbstring', + 30 => 'mysqli', + 31 => 'mysqlnd', + 32 => 'odbc', + 33 => 'openssl', + 34 => 'pcntl', + 35 => 'pcre', + 36 => 'pdo_dblib', + 37 => 'pdo_mysql', + 38 => 'pdo_pgsql', + 39 => 'pdo_sqlite', + 40 => 'pgsql', + 41 => 'posix', + 42 => 'pspell', + 43 => 'random', + 44 => 'readline', + 45 => 'session', + 46 => 'shmop', + 47 => 'soap', + 48 => 'sockets', + 49 => 'sodium', + 50 => 'sqlite3', + 51 => 'standard', + 52 => 'sysvmsg', + 53 => 'sysvsem', + 54 => 'sysvshm', + 55 => 'tidy', + 56 => 'tokenizer', + 57 => 'xml', + 58 => 'xmlreader', + 59 => 'xmlwriter', + 60 => 'xsl', + 61 => 'zip', + 62 => 'zlib', + ), + 'stubFiles' => + array ( + ), + 'level' => '8', +), + 'projectExtensionFiles' => array ( +), + 'errorsCallback' => static function (): array { return array ( +); }, + 'locallyIgnoredErrorsCallback' => static function (): array { return array ( +); }, + 'linesToIgnore' => array ( +), + 'unmatchedLineIgnores' => array ( +), + 'collectedDataCallback' => static function (): array { return array ( + '/Users/staabm/workspace/build-infection/src/Infection/TrinaryLogicMutator.php' => + array ( + 'PHPStan\\Rules\\DeadCode\\MethodWithoutImpurePointsCollector' => + array ( + 0 => + array ( + 0 => 'PHPStan\\Infection\\TrinaryLogicMutator', + 1 => 'getName', + 2 => 'PHPStan\\Infection\\TrinaryLogicMutator', + ), + ), + ), + '/Users/staabm/workspace/build-infection/tests/Infection/TrinaryLogicMutatorTest.php' => + array ( + 'PHPStan\\Rules\\DeadCode\\MethodWithoutImpurePointsCollector' => + array ( + 0 => + array ( + 0 => 'PHPStan\\Infection\\TrinaryLogicMutatorTest', + 1 => 'getTestedMutatorClassName', + 2 => 'PHPStan\\Infection\\TrinaryLogicMutatorTest', + ), + ), + ), +); }, + 'dependencies' => array ( + '/Users/staabm/workspace/build-infection/src/Infection/TrinaryLogicMutator.php' => + array ( + 'fileHash' => 'c18c3bc136e460ce2b5e5a82d36ebdffeae86fce', + 'dependentFiles' => + array ( + 0 => '/Users/staabm/workspace/build-infection/tests/Infection/TrinaryLogicMutatorTest.php', + ), + ), + '/Users/staabm/workspace/build-infection/tests/Infection/TrinaryLogicMutatorTest.php' => + array ( + 'fileHash' => '79c66ffa62db9757de0b514fd0e484232e12feda', + 'dependentFiles' => + array ( + ), + ), +), + 'exportedNodesCallback' => static function (): array { return array ( + '/Users/staabm/workspace/build-infection/src/Infection/TrinaryLogicMutator.php' => + array ( + 0 => + \PHPStan\Dependency\ExportedNode\ExportedClassNode::__set_state(array( + 'name' => 'PHPStan\\Infection\\TrinaryLogicMutator', + 'phpDoc' => + \PHPStan\Dependency\ExportedNode\ExportedPhpDocNode::__set_state(array( + 'phpDocString' => '/** + * @implements Mutator + */', + 'namespace' => 'PHPStan\\Infection', + 'uses' => + array ( + 'definition' => 'Infection\\Mutator\\Definition', + 'mutator' => 'Infection\\Mutator\\Mutator', + 'mutatorcategory' => 'Infection\\Mutator\\MutatorCategory', + 'logicexception' => 'LogicException', + 'node' => 'PhpParser\\Node', + ), + 'constUses' => + array ( + ), + )), + 'abstract' => false, + 'final' => true, + 'extends' => NULL, + 'implements' => + array ( + 0 => 'Infection\\Mutator\\Mutator', + ), + 'usedTraits' => + array ( + ), + 'traitUseAdaptations' => + array ( + ), + 'statements' => + array ( + 0 => + \PHPStan\Dependency\ExportedNode\ExportedMethodNode::__set_state(array( + 'name' => 'getDefinition', + 'phpDoc' => NULL, + 'byRef' => false, + 'public' => true, + 'private' => false, + 'abstract' => false, + 'final' => false, + 'static' => true, + 'returnType' => 'Infection\\Mutator\\Definition', + 'parameters' => + array ( + ), + 'attributes' => + array ( + ), + )), + 1 => + \PHPStan\Dependency\ExportedNode\ExportedMethodNode::__set_state(array( + 'name' => 'getName', + 'phpDoc' => NULL, + 'byRef' => false, + 'public' => true, + 'private' => false, + 'abstract' => false, + 'final' => false, + 'static' => false, + 'returnType' => 'string', + 'parameters' => + array ( + ), + 'attributes' => + array ( + ), + )), + 2 => + \PHPStan\Dependency\ExportedNode\ExportedMethodNode::__set_state(array( + 'name' => 'canMutate', + 'phpDoc' => NULL, + 'byRef' => false, + 'public' => true, + 'private' => false, + 'abstract' => false, + 'final' => false, + 'static' => false, + 'returnType' => 'bool', + 'parameters' => + array ( + 0 => + \PHPStan\Dependency\ExportedNode\ExportedParameterNode::__set_state(array( + 'name' => 'node', + 'type' => 'PhpParser\\Node', + 'byRef' => false, + 'variadic' => false, + 'hasDefault' => false, + 'attributes' => + array ( + ), + )), + ), + 'attributes' => + array ( + ), + )), + 3 => + \PHPStan\Dependency\ExportedNode\ExportedMethodNode::__set_state(array( + 'name' => 'mutate', + 'phpDoc' => NULL, + 'byRef' => false, + 'public' => true, + 'private' => false, + 'abstract' => false, + 'final' => false, + 'static' => false, + 'returnType' => 'iterable', + 'parameters' => + array ( + 0 => + \PHPStan\Dependency\ExportedNode\ExportedParameterNode::__set_state(array( + 'name' => 'node', + 'type' => 'PhpParser\\Node', + 'byRef' => false, + 'variadic' => false, + 'hasDefault' => false, + 'attributes' => + array ( + ), + )), + ), + 'attributes' => + array ( + ), + )), + ), + 'attributes' => + array ( + ), + )), + ), + '/Users/staabm/workspace/build-infection/tests/Infection/TrinaryLogicMutatorTest.php' => + array ( + 0 => + \PHPStan\Dependency\ExportedNode\ExportedClassNode::__set_state(array( + 'name' => 'PHPStan\\Infection\\TrinaryLogicMutatorTest', + 'phpDoc' => NULL, + 'abstract' => false, + 'final' => true, + 'extends' => 'Infection\\Testing\\BaseMutatorTestCase', + 'implements' => + array ( + ), + 'usedTraits' => + array ( + ), + 'traitUseAdaptations' => + array ( + ), + 'statements' => + array ( + 0 => + \PHPStan\Dependency\ExportedNode\ExportedMethodNode::__set_state(array( + 'name' => 'test_it_can_mutate', + 'phpDoc' => + \PHPStan\Dependency\ExportedNode\ExportedPhpDocNode::__set_state(array( + 'phpDocString' => '/** + * @param string|string[] $expected + */', + 'namespace' => 'PHPStan\\Infection', + 'uses' => + array ( + 'basemutatortestcase' => 'Infection\\Testing\\BaseMutatorTestCase', + 'coversclass' => 'PHPUnit\\Framework\\Attributes\\CoversClass', + 'dataprovider' => 'PHPUnit\\Framework\\Attributes\\DataProvider', + ), + 'constUses' => + array ( + ), + )), + 'byRef' => false, + 'public' => true, + 'private' => false, + 'abstract' => false, + 'final' => false, + 'static' => false, + 'returnType' => 'void', + 'parameters' => + array ( + 0 => + \PHPStan\Dependency\ExportedNode\ExportedParameterNode::__set_state(array( + 'name' => 'input', + 'type' => 'string', + 'byRef' => false, + 'variadic' => false, + 'hasDefault' => false, + 'attributes' => + array ( + ), + )), + 1 => + \PHPStan\Dependency\ExportedNode\ExportedParameterNode::__set_state(array( + 'name' => 'expected', + 'type' => NULL, + 'byRef' => false, + 'variadic' => false, + 'hasDefault' => true, + 'attributes' => + array ( + ), + )), + ), + 'attributes' => + array ( + 0 => + \PHPStan\Dependency\ExportedNode\ExportedAttributeNode::__set_state(array( + 'name' => 'PHPUnit\\Framework\\Attributes\\DataProvider', + 'args' => + array ( + 0 => '\'mutationsProvider\'', + ), + )), + ), + )), + 1 => + \PHPStan\Dependency\ExportedNode\ExportedMethodNode::__set_state(array( + 'name' => 'mutationsProvider', + 'phpDoc' => + \PHPStan\Dependency\ExportedNode\ExportedPhpDocNode::__set_state(array( + 'phpDocString' => '/** + * @return iterable + */', + 'namespace' => 'PHPStan\\Infection', + 'uses' => + array ( + 'basemutatortestcase' => 'Infection\\Testing\\BaseMutatorTestCase', + 'coversclass' => 'PHPUnit\\Framework\\Attributes\\CoversClass', + 'dataprovider' => 'PHPUnit\\Framework\\Attributes\\DataProvider', + ), + 'constUses' => + array ( + ), + )), + 'byRef' => false, + 'public' => true, + 'private' => false, + 'abstract' => false, + 'final' => false, + 'static' => true, + 'returnType' => 'iterable', + 'parameters' => + array ( + ), + 'attributes' => + array ( + ), + )), + 2 => + \PHPStan\Dependency\ExportedNode\ExportedMethodNode::__set_state(array( + 'name' => 'getTestedMutatorClassName', + 'phpDoc' => NULL, + 'byRef' => false, + 'public' => false, + 'private' => false, + 'abstract' => false, + 'final' => false, + 'static' => false, + 'returnType' => 'string', + 'parameters' => + array ( + ), + 'attributes' => + array ( + ), + )), + ), + 'attributes' => + array ( + 0 => + \PHPStan\Dependency\ExportedNode\ExportedAttributeNode::__set_state(array( + 'name' => 'PHPUnit\\Framework\\Attributes\\CoversClass', + 'args' => + array ( + 0 => '\\PHPStan\\Infection\\TrinaryLogicMutator::class', + ), + )), + ), + )), + ), +); }, +]; From 4a933ac2627e9f3e34254250f50d761a9e0b9183 Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Sat, 18 Oct 2025 12:14:21 +0200 Subject: [PATCH 2/7] fix --- tests/Infection/TrinaryLogicMutatorTest.php | 42 +- tmp/.gitignore | 3 + tmp/resultCache.php | 1253 ------------------- 3 files changed, 24 insertions(+), 1274 deletions(-) create mode 100644 tmp/.gitignore delete mode 100644 tmp/resultCache.php diff --git a/tests/Infection/TrinaryLogicMutatorTest.php b/tests/Infection/TrinaryLogicMutatorTest.php index bff2bde..5f11734 100644 --- a/tests/Infection/TrinaryLogicMutatorTest.php +++ b/tests/Infection/TrinaryLogicMutatorTest.php @@ -14,7 +14,7 @@ final class TrinaryLogicMutatorTest extends BaseMutatorTestCase * @param string|string[] $expected */ #[DataProvider('mutationsProvider')] - public function test_it_can_mutate(string $input, $expected = []): void + public function testMutator(string $input, $expected = []): void { $this->assertMutatesInput($input, $expected); } @@ -26,42 +26,42 @@ public static function mutationsProvider(): iterable { yield 'It mutates trinary yes' => [ <<<'PHP' - yes(); - PHP + yes(); + PHP , <<<'PHP' - no(); - PHP + $trinary = \PHPStan\TrinaryLogic::createYes(); + !$trinary->no(); + PHP , ]; yield 'It mutates trinary no' => [ <<<'PHP' - no(); - PHP + no(); + PHP , <<<'PHP' - yes(); - PHP + $trinary = \PHPStan\TrinaryLogic::createYes(); + !$trinary->yes(); + PHP , ]; yield 'It mutates skips maybe' => [ <<<'PHP' - maybe(); - PHP + maybe(); + PHP , ]; } diff --git a/tmp/.gitignore b/tmp/.gitignore new file mode 100644 index 0000000..37890ca --- /dev/null +++ b/tmp/.gitignore @@ -0,0 +1,3 @@ +* +!cache +!.* diff --git a/tmp/resultCache.php b/tmp/resultCache.php deleted file mode 100644 index 84d76c4..0000000 --- a/tmp/resultCache.php +++ /dev/null @@ -1,1253 +0,0 @@ - 1760782214, - 'meta' => array ( - 'cacheVersion' => 'v12-linesToIgnore', - 'phpstanVersion' => '2.1.31', - 'metaExtensions' => - array ( - ), - 'phpVersion' => 80326, - 'projectConfig' => '{parameters: {level: 8, paths: [/Users/staabm/workspace/build-infection/src, /Users/staabm/workspace/build-infection/tests], resultCachePath: tmp/resultCache.php}}', - 'analysedPaths' => - array ( - 0 => '/Users/staabm/workspace/build-infection/src', - 1 => '/Users/staabm/workspace/build-infection/tests', - ), - 'scannedFiles' => - array ( - ), - 'composerLocks' => - array ( - '/Users/staabm/workspace/build-infection/composer.lock' => 'b2dc229901418de9078317e2fbb0d8d31cdcb9fa', - ), - 'composerInstalled' => - array ( - '/Users/staabm/workspace/build-infection/vendor/composer/installed.php' => - array ( - 'versions' => - array ( - 'colinodell/json5' => - array ( - 'pretty_version' => 'v3.0.0', - 'version' => '3.0.0.0', - 'reference' => '5724d21bc5c910c2560af1b8915f0cc0163579c8', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../colinodell/json5', - 'aliases' => - array ( - ), - 'dev_requirement' => false, - ), - 'composer/pcre' => - array ( - 'pretty_version' => '3.3.2', - 'version' => '3.3.2.0', - 'reference' => 'b2bed4734f0cc156ee1fe9c0da2550420d99a21e', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/./pcre', - 'aliases' => - array ( - ), - 'dev_requirement' => false, - ), - 'composer/xdebug-handler' => - array ( - 'pretty_version' => '3.0.5', - 'version' => '3.0.5.0', - 'reference' => '6c1925561632e83d60a44492e0b344cf48ab85ef', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/./xdebug-handler', - 'aliases' => - array ( - ), - 'dev_requirement' => false, - ), - 'fidry/cpu-core-counter' => - array ( - 'pretty_version' => '1.3.0', - 'version' => '1.3.0.0', - 'reference' => 'db9508f7b1474469d9d3c53b86f817e344732678', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../fidry/cpu-core-counter', - 'aliases' => - array ( - ), - 'dev_requirement' => false, - ), - 'grogy/php-parallel-lint' => - array ( - 'dev_requirement' => true, - 'replaced' => - array ( - 0 => '*', - ), - ), - 'infection/abstract-testframework-adapter' => - array ( - 'pretty_version' => '0.5.0', - 'version' => '0.5.0.0', - 'reference' => '18925e20d15d1a5995bb85c9dc09e8751e1e069b', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../infection/abstract-testframework-adapter', - 'aliases' => - array ( - ), - 'dev_requirement' => false, - ), - 'infection/extension-installer' => - array ( - 'pretty_version' => '0.1.2', - 'version' => '0.1.2.0', - 'reference' => '9b351d2910b9a23ab4815542e93d541e0ca0cdcf', - 'type' => 'composer-plugin', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../infection/extension-installer', - 'aliases' => - array ( - ), - 'dev_requirement' => false, - ), - 'infection/include-interceptor' => - array ( - 'pretty_version' => '0.2.5', - 'version' => '0.2.5.0', - 'reference' => '0cc76d95a79d9832d74e74492b0a30139904bdf7', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../infection/include-interceptor', - 'aliases' => - array ( - ), - 'dev_requirement' => false, - ), - 'infection/infection' => - array ( - 'pretty_version' => '0.31.7', - 'version' => '0.31.7.0', - 'reference' => 'a66e38972304f5c742d4ee19adec132c45bb5a46', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../infection/infection', - 'aliases' => - array ( - ), - 'dev_requirement' => false, - ), - 'infection/mutator' => - array ( - 'pretty_version' => '0.4.1', - 'version' => '0.4.1.0', - 'reference' => '3c976d721b02b32f851ee4e15d553ef1e9186d1d', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../infection/mutator', - 'aliases' => - array ( - ), - 'dev_requirement' => false, - ), - 'jakub-onderka/php-parallel-lint' => - array ( - 'dev_requirement' => true, - 'replaced' => - array ( - 0 => '*', - ), - ), - 'justinrainbow/json-schema' => - array ( - 'pretty_version' => '6.6.0', - 'version' => '6.6.0.0', - 'reference' => '68ba7677532803cc0c5900dd5a4d730537f2b2f3', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../justinrainbow/json-schema', - 'aliases' => - array ( - ), - 'dev_requirement' => false, - ), - 'marc-mabe/php-enum' => - array ( - 'pretty_version' => 'v4.7.2', - 'version' => '4.7.2.0', - 'reference' => 'bb426fcdd65c60fb3638ef741e8782508fda7eef', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../marc-mabe/php-enum', - 'aliases' => - array ( - ), - 'dev_requirement' => false, - ), - 'myclabs/deep-copy' => - array ( - 'pretty_version' => '1.13.4', - 'version' => '1.13.4.0', - 'reference' => '07d290f0c47959fd5eed98c95ee5602db07e0b6a', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../myclabs/deep-copy', - 'aliases' => - array ( - ), - 'dev_requirement' => true, - ), - 'nikic/php-parser' => - array ( - 'pretty_version' => 'v5.6.1', - 'version' => '5.6.1.0', - 'reference' => 'f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../nikic/php-parser', - 'aliases' => - array ( - ), - 'dev_requirement' => false, - ), - 'ondram/ci-detector' => - array ( - 'pretty_version' => '4.2.0', - 'version' => '4.2.0.0', - 'reference' => '8b0223b5ed235fd377c75fdd1bfcad05c0f168b8', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../ondram/ci-detector', - 'aliases' => - array ( - ), - 'dev_requirement' => false, - ), - 'phar-io/manifest' => - array ( - 'pretty_version' => '2.0.4', - 'version' => '2.0.4.0', - 'reference' => '54750ef60c58e43759730615a392c31c80e23176', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../phar-io/manifest', - 'aliases' => - array ( - ), - 'dev_requirement' => true, - ), - 'phar-io/version' => - array ( - 'pretty_version' => '3.2.1', - 'version' => '3.2.1.0', - 'reference' => '4f7fd7836c6f332bb2933569e566a0d6c4cbed74', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../phar-io/version', - 'aliases' => - array ( - ), - 'dev_requirement' => true, - ), - 'php-parallel-lint/php-parallel-lint' => - array ( - 'pretty_version' => 'v1.4.0', - 'version' => '1.4.0.0', - 'reference' => '6db563514f27e19595a19f45a4bf757b6401194e', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../php-parallel-lint/php-parallel-lint', - 'aliases' => - array ( - ), - 'dev_requirement' => true, - ), - 'phpstan/phpstan' => - array ( - 'pretty_version' => '2.1.31', - 'version' => '2.1.31.0', - 'reference' => 'ead89849d879fe203ce9292c6ef5e7e76f867b96', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../phpstan/phpstan', - 'aliases' => - array ( - ), - 'dev_requirement' => true, - ), - 'phpstan/phpstan-deprecation-rules' => - array ( - 'pretty_version' => '2.0.3', - 'version' => '2.0.3.0', - 'reference' => '468e02c9176891cc901143da118f09dc9505fc2f', - 'type' => 'phpstan-extension', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../phpstan/phpstan-deprecation-rules', - 'aliases' => - array ( - ), - 'dev_requirement' => true, - ), - 'phpstan/phpstan-phpunit' => - array ( - 'pretty_version' => '2.0.7', - 'version' => '2.0.7.0', - 'reference' => '9a9b161baee88a5f5c58d816943cff354ff233dc', - 'type' => 'phpstan-extension', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../phpstan/phpstan-phpunit', - 'aliases' => - array ( - ), - 'dev_requirement' => true, - ), - 'phpstan/phpstan-strict-rules' => - array ( - 'pretty_version' => '2.0.7', - 'version' => '2.0.7.0', - 'reference' => 'd6211c46213d4181054b3d77b10a5c5cb0d59538', - 'type' => 'phpstan-extension', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../phpstan/phpstan-strict-rules', - 'aliases' => - array ( - ), - 'dev_requirement' => true, - ), - 'phpunit/php-code-coverage' => - array ( - 'pretty_version' => '11.0.11', - 'version' => '11.0.11.0', - 'reference' => '4f7722aa9a7b76aa775e2d9d4e95d1ea16eeeef4', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../phpunit/php-code-coverage', - 'aliases' => - array ( - ), - 'dev_requirement' => true, - ), - 'phpunit/php-file-iterator' => - array ( - 'pretty_version' => '5.1.0', - 'version' => '5.1.0.0', - 'reference' => '118cfaaa8bc5aef3287bf315b6060b1174754af6', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../phpunit/php-file-iterator', - 'aliases' => - array ( - ), - 'dev_requirement' => true, - ), - 'phpunit/php-invoker' => - array ( - 'pretty_version' => '5.0.1', - 'version' => '5.0.1.0', - 'reference' => 'c1ca3814734c07492b3d4c5f794f4b0995333da2', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../phpunit/php-invoker', - 'aliases' => - array ( - ), - 'dev_requirement' => true, - ), - 'phpunit/php-text-template' => - array ( - 'pretty_version' => '4.0.1', - 'version' => '4.0.1.0', - 'reference' => '3e0404dc6b300e6bf56415467ebcb3fe4f33e964', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../phpunit/php-text-template', - 'aliases' => - array ( - ), - 'dev_requirement' => true, - ), - 'phpunit/php-timer' => - array ( - 'pretty_version' => '7.0.1', - 'version' => '7.0.1.0', - 'reference' => '3b415def83fbcb41f991d9ebf16ae4ad8b7837b3', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../phpunit/php-timer', - 'aliases' => - array ( - ), - 'dev_requirement' => true, - ), - 'phpunit/phpunit' => - array ( - 'pretty_version' => '11.5.42', - 'version' => '11.5.42.0', - 'reference' => '1c6cb5dfe412af3d0dfd414cfd110e3b9cfdbc3c', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../phpunit/phpunit', - 'aliases' => - array ( - ), - 'dev_requirement' => true, - ), - 'psr/clock' => - array ( - 'pretty_version' => '1.0.0', - 'version' => '1.0.0.0', - 'reference' => 'e41a24703d4560fd0acb709162f73b8adfc3aa0d', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../psr/clock', - 'aliases' => - array ( - ), - 'dev_requirement' => false, - ), - 'psr/clock-implementation' => - array ( - 'dev_requirement' => false, - 'provided' => - array ( - 0 => '1.0', - ), - ), - 'psr/container' => - array ( - 'pretty_version' => '2.0.2', - 'version' => '2.0.2.0', - 'reference' => 'c71ecc56dfe541dbd90c5360474fbc405f8d5963', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../psr/container', - 'aliases' => - array ( - ), - 'dev_requirement' => false, - ), - 'psr/log' => - array ( - 'pretty_version' => '3.0.2', - 'version' => '3.0.2.0', - 'reference' => 'f16e1d5863e37f8d8c2a01719f5b34baa2b714d3', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../psr/log', - 'aliases' => - array ( - ), - 'dev_requirement' => false, - ), - 'psr/log-implementation' => - array ( - 'dev_requirement' => false, - 'provided' => - array ( - 0 => '1.0|2.0|3.0', - ), - ), - 'sanmai/di-container' => - array ( - 'pretty_version' => '0.1.5', - 'version' => '0.1.5.0', - 'reference' => '355534ad7970fc7dab4211ecaf2da5c546855ee8', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../sanmai/di-container', - 'aliases' => - array ( - ), - 'dev_requirement' => false, - ), - 'sanmai/duoclock' => - array ( - 'pretty_version' => '0.1.1', - 'version' => '0.1.1.0', - 'reference' => '30aa40092396dc96b68c8e8d49162619574477e2', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../sanmai/duoclock', - 'aliases' => - array ( - ), - 'dev_requirement' => false, - ), - 'sanmai/later' => - array ( - 'pretty_version' => '0.1.7', - 'version' => '0.1.7.0', - 'reference' => '72a82d783864bca90412d8a26c1878f8981fee97', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../sanmai/later', - 'aliases' => - array ( - ), - 'dev_requirement' => false, - ), - 'sanmai/pipeline' => - array ( - 'pretty_version' => '7.4', - 'version' => '7.4.0.0', - 'reference' => '6a73545f09b9b475a3735ecdee5e98476a063179', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../sanmai/pipeline', - 'aliases' => - array ( - ), - 'dev_requirement' => false, - ), - 'sebastian/cli-parser' => - array ( - 'pretty_version' => '3.0.2', - 'version' => '3.0.2.0', - 'reference' => '15c5dd40dc4f38794d383bb95465193f5e0ae180', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../sebastian/cli-parser', - 'aliases' => - array ( - ), - 'dev_requirement' => true, - ), - 'sebastian/code-unit' => - array ( - 'pretty_version' => '3.0.3', - 'version' => '3.0.3.0', - 'reference' => '54391c61e4af8078e5b276ab082b6d3c54c9ad64', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../sebastian/code-unit', - 'aliases' => - array ( - ), - 'dev_requirement' => true, - ), - 'sebastian/code-unit-reverse-lookup' => - array ( - 'pretty_version' => '4.0.1', - 'version' => '4.0.1.0', - 'reference' => '183a9b2632194febd219bb9246eee421dad8d45e', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../sebastian/code-unit-reverse-lookup', - 'aliases' => - array ( - ), - 'dev_requirement' => true, - ), - 'sebastian/comparator' => - array ( - 'pretty_version' => '6.3.2', - 'version' => '6.3.2.0', - 'reference' => '85c77556683e6eee4323e4c5468641ca0237e2e8', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../sebastian/comparator', - 'aliases' => - array ( - ), - 'dev_requirement' => true, - ), - 'sebastian/complexity' => - array ( - 'pretty_version' => '4.0.1', - 'version' => '4.0.1.0', - 'reference' => 'ee41d384ab1906c68852636b6de493846e13e5a0', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../sebastian/complexity', - 'aliases' => - array ( - ), - 'dev_requirement' => true, - ), - 'sebastian/diff' => - array ( - 'pretty_version' => '6.0.2', - 'version' => '6.0.2.0', - 'reference' => 'b4ccd857127db5d41a5b676f24b51371d76d8544', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../sebastian/diff', - 'aliases' => - array ( - ), - 'dev_requirement' => false, - ), - 'sebastian/environment' => - array ( - 'pretty_version' => '7.2.1', - 'version' => '7.2.1.0', - 'reference' => 'a5c75038693ad2e8d4b6c15ba2403532647830c4', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../sebastian/environment', - 'aliases' => - array ( - ), - 'dev_requirement' => true, - ), - 'sebastian/exporter' => - array ( - 'pretty_version' => '6.3.2', - 'version' => '6.3.2.0', - 'reference' => '70a298763b40b213ec087c51c739efcaa90bcd74', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../sebastian/exporter', - 'aliases' => - array ( - ), - 'dev_requirement' => true, - ), - 'sebastian/global-state' => - array ( - 'pretty_version' => '7.0.2', - 'version' => '7.0.2.0', - 'reference' => '3be331570a721f9a4b5917f4209773de17f747d7', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../sebastian/global-state', - 'aliases' => - array ( - ), - 'dev_requirement' => true, - ), - 'sebastian/lines-of-code' => - array ( - 'pretty_version' => '3.0.1', - 'version' => '3.0.1.0', - 'reference' => 'd36ad0d782e5756913e42ad87cb2890f4ffe467a', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../sebastian/lines-of-code', - 'aliases' => - array ( - ), - 'dev_requirement' => true, - ), - 'sebastian/object-enumerator' => - array ( - 'pretty_version' => '6.0.1', - 'version' => '6.0.1.0', - 'reference' => 'f5b498e631a74204185071eb41f33f38d64608aa', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../sebastian/object-enumerator', - 'aliases' => - array ( - ), - 'dev_requirement' => true, - ), - 'sebastian/object-reflector' => - array ( - 'pretty_version' => '4.0.1', - 'version' => '4.0.1.0', - 'reference' => '6e1a43b411b2ad34146dee7524cb13a068bb35f9', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../sebastian/object-reflector', - 'aliases' => - array ( - ), - 'dev_requirement' => true, - ), - 'sebastian/recursion-context' => - array ( - 'pretty_version' => '6.0.3', - 'version' => '6.0.3.0', - 'reference' => 'f6458abbf32a6c8174f8f26261475dc133b3d9dc', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../sebastian/recursion-context', - 'aliases' => - array ( - ), - 'dev_requirement' => true, - ), - 'sebastian/type' => - array ( - 'pretty_version' => '5.1.3', - 'version' => '5.1.3.0', - 'reference' => 'f77d2d4e78738c98d9a68d2596fe5e8fa380f449', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../sebastian/type', - 'aliases' => - array ( - ), - 'dev_requirement' => true, - ), - 'sebastian/version' => - array ( - 'pretty_version' => '5.0.2', - 'version' => '5.0.2.0', - 'reference' => 'c687e3387b99f5b03b6caa64c74b63e2936ff874', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../sebastian/version', - 'aliases' => - array ( - ), - 'dev_requirement' => true, - ), - 'staabm/side-effects-detector' => - array ( - 'pretty_version' => '1.0.5', - 'version' => '1.0.5.0', - 'reference' => 'd8334211a140ce329c13726d4a715adbddd0a163', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../staabm/side-effects-detector', - 'aliases' => - array ( - ), - 'dev_requirement' => true, - ), - 'symfony/console' => - array ( - 'pretty_version' => 'v7.3.4', - 'version' => '7.3.4.0', - 'reference' => '2b9c5fafbac0399a20a2e82429e2bd735dcfb7db', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../symfony/console', - 'aliases' => - array ( - ), - 'dev_requirement' => false, - ), - 'symfony/deprecation-contracts' => - array ( - 'pretty_version' => 'v3.6.0', - 'version' => '3.6.0.0', - 'reference' => '63afe740e99a13ba87ec199bb07bbdee937a5b62', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../symfony/deprecation-contracts', - 'aliases' => - array ( - ), - 'dev_requirement' => false, - ), - 'symfony/filesystem' => - array ( - 'pretty_version' => 'v7.3.2', - 'version' => '7.3.2.0', - 'reference' => 'edcbb768a186b5c3f25d0643159a787d3e63b7fd', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../symfony/filesystem', - 'aliases' => - array ( - ), - 'dev_requirement' => false, - ), - 'symfony/finder' => - array ( - 'pretty_version' => 'v7.3.2', - 'version' => '7.3.2.0', - 'reference' => '2a6614966ba1074fa93dae0bc804227422df4dfe', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../symfony/finder', - 'aliases' => - array ( - ), - 'dev_requirement' => false, - ), - 'symfony/polyfill-ctype' => - array ( - 'pretty_version' => 'v1.33.0', - 'version' => '1.33.0.0', - 'reference' => 'a3cc8b044a6ea513310cbd48ef7333b384945638', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../symfony/polyfill-ctype', - 'aliases' => - array ( - ), - 'dev_requirement' => false, - ), - 'symfony/polyfill-intl-grapheme' => - array ( - 'pretty_version' => 'v1.33.0', - 'version' => '1.33.0.0', - 'reference' => '380872130d3a5dd3ace2f4010d95125fde5d5c70', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../symfony/polyfill-intl-grapheme', - 'aliases' => - array ( - ), - 'dev_requirement' => false, - ), - 'symfony/polyfill-intl-normalizer' => - array ( - 'pretty_version' => 'v1.33.0', - 'version' => '1.33.0.0', - 'reference' => '3833d7255cc303546435cb650316bff708a1c75c', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../symfony/polyfill-intl-normalizer', - 'aliases' => - array ( - ), - 'dev_requirement' => false, - ), - 'symfony/polyfill-mbstring' => - array ( - 'pretty_version' => 'v1.33.0', - 'version' => '1.33.0.0', - 'reference' => '6d857f4d76bd4b343eac26d6b539585d2bc56493', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../symfony/polyfill-mbstring', - 'aliases' => - array ( - ), - 'dev_requirement' => false, - ), - 'symfony/process' => - array ( - 'pretty_version' => 'v7.3.4', - 'version' => '7.3.4.0', - 'reference' => 'f24f8f316367b30810810d4eb30c543d7003ff3b', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../symfony/process', - 'aliases' => - array ( - ), - 'dev_requirement' => false, - ), - 'symfony/service-contracts' => - array ( - 'pretty_version' => 'v3.6.0', - 'version' => '3.6.0.0', - 'reference' => 'f021b05a130d35510bd6b25fe9053c2a8a15d5d4', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../symfony/service-contracts', - 'aliases' => - array ( - ), - 'dev_requirement' => false, - ), - 'symfony/string' => - array ( - 'pretty_version' => 'v7.3.4', - 'version' => '7.3.4.0', - 'reference' => 'f96476035142921000338bad71e5247fbc138872', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../symfony/string', - 'aliases' => - array ( - ), - 'dev_requirement' => false, - ), - 'thecodingmachine/safe' => - array ( - 'pretty_version' => 'v3.3.0', - 'version' => '3.3.0.0', - 'reference' => '2cdd579eeaa2e78e51c7509b50cc9fb89a956236', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../thecodingmachine/safe', - 'aliases' => - array ( - ), - 'dev_requirement' => false, - ), - 'theseer/tokenizer' => - array ( - 'pretty_version' => '1.2.3', - 'version' => '1.2.3.0', - 'reference' => '737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../theseer/tokenizer', - 'aliases' => - array ( - ), - 'dev_requirement' => true, - ), - 'webmozart/assert' => - array ( - 'pretty_version' => '1.11.0', - 'version' => '1.11.0.0', - 'reference' => '11cb2199493b2f8a3b53e7f19068fc6aac760991', - 'type' => 'library', - 'install_path' => '/Users/staabm/workspace/build-infection/vendor/composer/../webmozart/assert', - 'aliases' => - array ( - ), - 'dev_requirement' => false, - ), - ), - ), - ), - 'executedFilesHashes' => - array ( - 'phar:///Users/staabm/workspace/build-infection/vendor/phpstan/phpstan/phpstan.phar/stubs/runtime/Attribute85.php' => '123dcd45f03f2463904087a66bfe2bc139760df0', - 'phar:///Users/staabm/workspace/build-infection/vendor/phpstan/phpstan/phpstan.phar/stubs/runtime/ReflectionAttribute.php' => '0b4b78277eb6545955d2ce5e09bff28f1f8052c8', - 'phar:///Users/staabm/workspace/build-infection/vendor/phpstan/phpstan/phpstan.phar/stubs/runtime/ReflectionIntersectionType.php' => 'a3e6299b87ee5d407dae7651758edfa11a74cb11', - 'phar:///Users/staabm/workspace/build-infection/vendor/phpstan/phpstan/phpstan.phar/stubs/runtime/ReflectionUnionType.php' => '1b349aa997a834faeafe05fa21bc31cae22bf2e2', - ), - 'phpExtensions' => - array ( - 0 => 'Core', - 1 => 'FFI', - 2 => 'PDO', - 3 => 'PDO_ODBC', - 4 => 'Phar', - 5 => 'Reflection', - 6 => 'SPL', - 7 => 'SimpleXML', - 8 => 'bcmath', - 9 => 'bz2', - 10 => 'calendar', - 11 => 'ctype', - 12 => 'curl', - 13 => 'date', - 14 => 'dba', - 15 => 'dom', - 16 => 'exif', - 17 => 'fileinfo', - 18 => 'filter', - 19 => 'ftp', - 20 => 'gd', - 21 => 'gettext', - 22 => 'gmp', - 23 => 'hash', - 24 => 'iconv', - 25 => 'intl', - 26 => 'json', - 27 => 'ldap', - 28 => 'libxml', - 29 => 'mbstring', - 30 => 'mysqli', - 31 => 'mysqlnd', - 32 => 'odbc', - 33 => 'openssl', - 34 => 'pcntl', - 35 => 'pcre', - 36 => 'pdo_dblib', - 37 => 'pdo_mysql', - 38 => 'pdo_pgsql', - 39 => 'pdo_sqlite', - 40 => 'pgsql', - 41 => 'posix', - 42 => 'pspell', - 43 => 'random', - 44 => 'readline', - 45 => 'session', - 46 => 'shmop', - 47 => 'soap', - 48 => 'sockets', - 49 => 'sodium', - 50 => 'sqlite3', - 51 => 'standard', - 52 => 'sysvmsg', - 53 => 'sysvsem', - 54 => 'sysvshm', - 55 => 'tidy', - 56 => 'tokenizer', - 57 => 'xml', - 58 => 'xmlreader', - 59 => 'xmlwriter', - 60 => 'xsl', - 61 => 'zip', - 62 => 'zlib', - ), - 'stubFiles' => - array ( - ), - 'level' => '8', -), - 'projectExtensionFiles' => array ( -), - 'errorsCallback' => static function (): array { return array ( -); }, - 'locallyIgnoredErrorsCallback' => static function (): array { return array ( -); }, - 'linesToIgnore' => array ( -), - 'unmatchedLineIgnores' => array ( -), - 'collectedDataCallback' => static function (): array { return array ( - '/Users/staabm/workspace/build-infection/src/Infection/TrinaryLogicMutator.php' => - array ( - 'PHPStan\\Rules\\DeadCode\\MethodWithoutImpurePointsCollector' => - array ( - 0 => - array ( - 0 => 'PHPStan\\Infection\\TrinaryLogicMutator', - 1 => 'getName', - 2 => 'PHPStan\\Infection\\TrinaryLogicMutator', - ), - ), - ), - '/Users/staabm/workspace/build-infection/tests/Infection/TrinaryLogicMutatorTest.php' => - array ( - 'PHPStan\\Rules\\DeadCode\\MethodWithoutImpurePointsCollector' => - array ( - 0 => - array ( - 0 => 'PHPStan\\Infection\\TrinaryLogicMutatorTest', - 1 => 'getTestedMutatorClassName', - 2 => 'PHPStan\\Infection\\TrinaryLogicMutatorTest', - ), - ), - ), -); }, - 'dependencies' => array ( - '/Users/staabm/workspace/build-infection/src/Infection/TrinaryLogicMutator.php' => - array ( - 'fileHash' => 'c18c3bc136e460ce2b5e5a82d36ebdffeae86fce', - 'dependentFiles' => - array ( - 0 => '/Users/staabm/workspace/build-infection/tests/Infection/TrinaryLogicMutatorTest.php', - ), - ), - '/Users/staabm/workspace/build-infection/tests/Infection/TrinaryLogicMutatorTest.php' => - array ( - 'fileHash' => '79c66ffa62db9757de0b514fd0e484232e12feda', - 'dependentFiles' => - array ( - ), - ), -), - 'exportedNodesCallback' => static function (): array { return array ( - '/Users/staabm/workspace/build-infection/src/Infection/TrinaryLogicMutator.php' => - array ( - 0 => - \PHPStan\Dependency\ExportedNode\ExportedClassNode::__set_state(array( - 'name' => 'PHPStan\\Infection\\TrinaryLogicMutator', - 'phpDoc' => - \PHPStan\Dependency\ExportedNode\ExportedPhpDocNode::__set_state(array( - 'phpDocString' => '/** - * @implements Mutator - */', - 'namespace' => 'PHPStan\\Infection', - 'uses' => - array ( - 'definition' => 'Infection\\Mutator\\Definition', - 'mutator' => 'Infection\\Mutator\\Mutator', - 'mutatorcategory' => 'Infection\\Mutator\\MutatorCategory', - 'logicexception' => 'LogicException', - 'node' => 'PhpParser\\Node', - ), - 'constUses' => - array ( - ), - )), - 'abstract' => false, - 'final' => true, - 'extends' => NULL, - 'implements' => - array ( - 0 => 'Infection\\Mutator\\Mutator', - ), - 'usedTraits' => - array ( - ), - 'traitUseAdaptations' => - array ( - ), - 'statements' => - array ( - 0 => - \PHPStan\Dependency\ExportedNode\ExportedMethodNode::__set_state(array( - 'name' => 'getDefinition', - 'phpDoc' => NULL, - 'byRef' => false, - 'public' => true, - 'private' => false, - 'abstract' => false, - 'final' => false, - 'static' => true, - 'returnType' => 'Infection\\Mutator\\Definition', - 'parameters' => - array ( - ), - 'attributes' => - array ( - ), - )), - 1 => - \PHPStan\Dependency\ExportedNode\ExportedMethodNode::__set_state(array( - 'name' => 'getName', - 'phpDoc' => NULL, - 'byRef' => false, - 'public' => true, - 'private' => false, - 'abstract' => false, - 'final' => false, - 'static' => false, - 'returnType' => 'string', - 'parameters' => - array ( - ), - 'attributes' => - array ( - ), - )), - 2 => - \PHPStan\Dependency\ExportedNode\ExportedMethodNode::__set_state(array( - 'name' => 'canMutate', - 'phpDoc' => NULL, - 'byRef' => false, - 'public' => true, - 'private' => false, - 'abstract' => false, - 'final' => false, - 'static' => false, - 'returnType' => 'bool', - 'parameters' => - array ( - 0 => - \PHPStan\Dependency\ExportedNode\ExportedParameterNode::__set_state(array( - 'name' => 'node', - 'type' => 'PhpParser\\Node', - 'byRef' => false, - 'variadic' => false, - 'hasDefault' => false, - 'attributes' => - array ( - ), - )), - ), - 'attributes' => - array ( - ), - )), - 3 => - \PHPStan\Dependency\ExportedNode\ExportedMethodNode::__set_state(array( - 'name' => 'mutate', - 'phpDoc' => NULL, - 'byRef' => false, - 'public' => true, - 'private' => false, - 'abstract' => false, - 'final' => false, - 'static' => false, - 'returnType' => 'iterable', - 'parameters' => - array ( - 0 => - \PHPStan\Dependency\ExportedNode\ExportedParameterNode::__set_state(array( - 'name' => 'node', - 'type' => 'PhpParser\\Node', - 'byRef' => false, - 'variadic' => false, - 'hasDefault' => false, - 'attributes' => - array ( - ), - )), - ), - 'attributes' => - array ( - ), - )), - ), - 'attributes' => - array ( - ), - )), - ), - '/Users/staabm/workspace/build-infection/tests/Infection/TrinaryLogicMutatorTest.php' => - array ( - 0 => - \PHPStan\Dependency\ExportedNode\ExportedClassNode::__set_state(array( - 'name' => 'PHPStan\\Infection\\TrinaryLogicMutatorTest', - 'phpDoc' => NULL, - 'abstract' => false, - 'final' => true, - 'extends' => 'Infection\\Testing\\BaseMutatorTestCase', - 'implements' => - array ( - ), - 'usedTraits' => - array ( - ), - 'traitUseAdaptations' => - array ( - ), - 'statements' => - array ( - 0 => - \PHPStan\Dependency\ExportedNode\ExportedMethodNode::__set_state(array( - 'name' => 'test_it_can_mutate', - 'phpDoc' => - \PHPStan\Dependency\ExportedNode\ExportedPhpDocNode::__set_state(array( - 'phpDocString' => '/** - * @param string|string[] $expected - */', - 'namespace' => 'PHPStan\\Infection', - 'uses' => - array ( - 'basemutatortestcase' => 'Infection\\Testing\\BaseMutatorTestCase', - 'coversclass' => 'PHPUnit\\Framework\\Attributes\\CoversClass', - 'dataprovider' => 'PHPUnit\\Framework\\Attributes\\DataProvider', - ), - 'constUses' => - array ( - ), - )), - 'byRef' => false, - 'public' => true, - 'private' => false, - 'abstract' => false, - 'final' => false, - 'static' => false, - 'returnType' => 'void', - 'parameters' => - array ( - 0 => - \PHPStan\Dependency\ExportedNode\ExportedParameterNode::__set_state(array( - 'name' => 'input', - 'type' => 'string', - 'byRef' => false, - 'variadic' => false, - 'hasDefault' => false, - 'attributes' => - array ( - ), - )), - 1 => - \PHPStan\Dependency\ExportedNode\ExportedParameterNode::__set_state(array( - 'name' => 'expected', - 'type' => NULL, - 'byRef' => false, - 'variadic' => false, - 'hasDefault' => true, - 'attributes' => - array ( - ), - )), - ), - 'attributes' => - array ( - 0 => - \PHPStan\Dependency\ExportedNode\ExportedAttributeNode::__set_state(array( - 'name' => 'PHPUnit\\Framework\\Attributes\\DataProvider', - 'args' => - array ( - 0 => '\'mutationsProvider\'', - ), - )), - ), - )), - 1 => - \PHPStan\Dependency\ExportedNode\ExportedMethodNode::__set_state(array( - 'name' => 'mutationsProvider', - 'phpDoc' => - \PHPStan\Dependency\ExportedNode\ExportedPhpDocNode::__set_state(array( - 'phpDocString' => '/** - * @return iterable - */', - 'namespace' => 'PHPStan\\Infection', - 'uses' => - array ( - 'basemutatortestcase' => 'Infection\\Testing\\BaseMutatorTestCase', - 'coversclass' => 'PHPUnit\\Framework\\Attributes\\CoversClass', - 'dataprovider' => 'PHPUnit\\Framework\\Attributes\\DataProvider', - ), - 'constUses' => - array ( - ), - )), - 'byRef' => false, - 'public' => true, - 'private' => false, - 'abstract' => false, - 'final' => false, - 'static' => true, - 'returnType' => 'iterable', - 'parameters' => - array ( - ), - 'attributes' => - array ( - ), - )), - 2 => - \PHPStan\Dependency\ExportedNode\ExportedMethodNode::__set_state(array( - 'name' => 'getTestedMutatorClassName', - 'phpDoc' => NULL, - 'byRef' => false, - 'public' => false, - 'private' => false, - 'abstract' => false, - 'final' => false, - 'static' => false, - 'returnType' => 'string', - 'parameters' => - array ( - ), - 'attributes' => - array ( - ), - )), - ), - 'attributes' => - array ( - 0 => - \PHPStan\Dependency\ExportedNode\ExportedAttributeNode::__set_state(array( - 'name' => 'PHPUnit\\Framework\\Attributes\\CoversClass', - 'args' => - array ( - 0 => '\\PHPStan\\Infection\\TrinaryLogicMutator::class', - ), - )), - ), - )), - ), -); }, -]; From 85f0d2db28e787937e359fce440137537143d692 Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Sat, 18 Oct 2025 12:17:14 +0200 Subject: [PATCH 3/7] Update build.yml --- .github/workflows/build.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5c0db02..cf429f7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -113,8 +113,8 @@ jobs: if: matrix.php-version == '8.4' run: "composer config platform.php 8.3.99" - - name: "Update packages" - run: ${{ matrix.update-packages }} + - name: "Install dependencies" + run: "composer install --no-interaction --no-progress" - name: "Tests" run: "make tests" @@ -142,8 +142,8 @@ jobs: php-version: "${{ matrix.php-version }}" ini-file: development - - name: "Update packages" - run: ${{ matrix.update-packages }} + - name: "Install dependencies" + run: "composer install --no-interaction --no-progress" - name: "PHPStan" run: "make phpstan" From 5664325cc2352554e5b8153235fa1e4c70078068 Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Sat, 18 Oct 2025 12:20:24 +0200 Subject: [PATCH 4/7] Update build.yml --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index cf429f7..2624592 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -104,7 +104,7 @@ jobs: - name: "Install PHP" uses: "shivammathur/setup-php@v2" with: - coverage: "none" + coverage: "xdebug" php-version: "${{ matrix.php-version }}" ini-file: development extensions: "mongodb" From 9e723be50c919c7df0de8fd16f9e8661d16ce78b Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Sat, 18 Oct 2025 12:20:52 +0200 Subject: [PATCH 5/7] Update .gitattributes --- .gitattributes | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.gitattributes b/.gitattributes index a1d69c9..45a67c4 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2,14 +2,9 @@ .github export-ignore tests export-ignore -compatibility export-ignore tmp export-ignore .gitattributes export-ignore .gitignore export-ignore Makefile export-ignore phpstan.neon export-ignore -phpstan-baseline.neon export-ignore -phpstan-baseline-dbal-3.neon export-ignore phpunit.xml export-ignore -stubs/runtime/Enum/UnitEnum.php export-ignore -stubs/runtime/Enum/BackedEnum.php export-ignore From a0b736e865911ad1c1c34e0a2e775435f62cfb50 Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Sat, 18 Oct 2025 12:22:57 +0200 Subject: [PATCH 6/7] Update phpunit.xml --- phpunit.xml | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/phpunit.xml b/phpunit.xml index 539b98d..4674938 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -2,32 +2,13 @@ - - - ./src - - - - - - - tests From 113e7e6ddddf559c3b6ace39c66afe8d5fe4944a Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Sat, 18 Oct 2025 12:25:10 +0200 Subject: [PATCH 7/7] Update TrinaryLogicMutatorTest.php --- tests/Infection/TrinaryLogicMutatorTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Infection/TrinaryLogicMutatorTest.php b/tests/Infection/TrinaryLogicMutatorTest.php index 5f11734..8f1e734 100644 --- a/tests/Infection/TrinaryLogicMutatorTest.php +++ b/tests/Infection/TrinaryLogicMutatorTest.php @@ -56,7 +56,7 @@ public static function mutationsProvider(): iterable , ]; - yield 'It mutates skips maybe' => [ + yield 'It skips maybe' => [ <<<'PHP'