diff --git a/.github/workflows/conductor.yaml b/.github/workflows/conductor.yaml new file mode 100644 index 0000000000..abdf5deedf --- /dev/null +++ b/.github/workflows/conductor.yaml @@ -0,0 +1,29 @@ +# See the Conductor setup guide at https://packagist.com/docs/conductor/getting-started + +on: + repository_dispatch: + types: + - dependency_update + +name: Private Packagist Conductor + +permissions: + contents: write + +jobs: + conductor: + name: Private Packagist Conductor + runs-on: "ubuntu-latest" + env: + COMPOSER_AUTH: ${{ secrets.CONDUCTOR_COMPOSER_AUTH }} + + steps: + - uses: actions/checkout@v4 + + - name: Install PHP + uses: "shivammathur/setup-php@v2" + with: + php-version: "8.2" + + - name: "Running Conductor" + uses: packagist/conductor-github-action@v1 diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index dcdc2d80db..deab3dfb04 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -25,16 +25,14 @@ jobs: php-version: [ '8.2', '8.3', '8.4' ] dependencies: [ locked, lowest, highest ] coverage-driver: [ pcov, xdebug ] - symfony-version: [ '5.4.*', '6.*.*', '7.*.*' ] + symfony-version: [ '6.4.*', '7.*.*' ] include: - operating-system: windows-latest php-version: '8.2' dependencies: locked coverage-driver: xdebug - symfony-version: '5.4.*' + symfony-version: '6.4.*' exclude: - - dependencies: 'locked' - symfony-version: '6.*.*' - dependencies: 'locked' symfony-version: '7.*.*' diff --git a/Makefile b/Makefile index b1428c9f12..a6d4565552 100644 --- a/Makefile +++ b/Makefile @@ -33,7 +33,7 @@ PARATEST=vendor/bin/paratest INFECTION=./build/infection.phar DOCKER_RUN=docker-compose run -DOCKER_RUN_81=$(DOCKER_RUN) php81 $(FLOCK) Makefile +DOCKER_RUN_82=$(DOCKER_RUN) php82 $(FLOCK) Makefile DOCKER_FILE_IMAGE=devTools/Dockerfile.json FLOCK=./devTools/flock @@ -59,7 +59,7 @@ compile: .PHONY: compile-docker compile-docker: ## Bundles Infection into a PHAR using docker compile-docker: $(DOCKER_FILE_IMAGE) - $(DOCKER_RUN_81) make compile + $(DOCKER_RUN_82) make compile .PHONY: check_trailing_whitespaces check_trailing_whitespaces: @@ -154,10 +154,10 @@ test-unit-parallel: $(PARATEST) vendor .PHONY: test-unit-docker test-unit-docker: ## Runs the unit tests on the different Docker platforms -test-unit-docker: test-unit-81-docker +test-unit-docker: test-unit-82-docker -test-unit-81-docker: $(DOCKER_FILE_IMAGE) $(PHPUNIT) - $(DOCKER_RUN_81) $(PHPUNIT) --group $(PHPUNIT_GROUP) +test-unit-82-docker: $(DOCKER_FILE_IMAGE) $(PHPUNIT) + $(DOCKER_RUN_82) $(PHPUNIT) --group $(PHPUNIT_GROUP) .PHONY: test-e2e test-e2e: ## Runs the end-to-end tests @@ -174,12 +174,12 @@ test-e2e-docker: ## Runs the end-to-end tests on the different Docker platforms test-e2e-docker: test-e2e-xdebug-docker .PHONY: test-e2e-xdebug-docker -test-e2e-xdebug-docker: test-e2e-xdebug-81-docker +test-e2e-xdebug-docker: test-e2e-xdebug-82-docker -.PHONY: test-e2e-xdebug-81-docker -test-e2e-xdebug-81-docker: $(DOCKER_FILE_IMAGE) $(INFECTION) - $(DOCKER_RUN_81) $(PHPUNIT) --group $(E2E_PHPUNIT_GROUP) - $(DOCKER_RUN_81) ./tests/e2e_tests $(INFECTION) +.PHONY: test-e2e-xdebug-82-docker +test-e2e-xdebug-82-docker: $(DOCKER_FILE_IMAGE) $(INFECTION) + $(DOCKER_RUN_82) $(PHPUNIT) --group $(E2E_PHPUNIT_GROUP) + $(DOCKER_RUN_82) ./tests/e2e_tests $(INFECTION) .PHONY: test-infection test-infection: ## Runs Infection against itself @@ -191,11 +191,11 @@ test-infection-docker: ## Runs Infection against itself on the different Docker test-infection-docker: test-infection-xdebug-docker .PHONY: test-infection-xdebug-docker -test-infection-xdebug-docker: test-infection-xdebug-81-docker +test-infection-xdebug-docker: test-infection-xdebug-82-docker -.PHONY: test-infection-xdebug-81-docker -test-infection-xdebug-81-docker: $(DOCKER_FILE_IMAGE) - $(DOCKER_RUN_81) ./bin/infection --threads=max +.PHONY: test-infection-xdebug-82-docker +test-infection-xdebug-82-docker: $(DOCKER_FILE_IMAGE) + $(DOCKER_RUN_82) ./bin/infection --threads=max # # Rules from files (non-phony targets) diff --git a/composer.json b/composer.json index 02addaf138..17571ca4cc 100644 --- a/composer.json +++ b/composer.json @@ -61,11 +61,11 @@ "sanmai/later": "^0.1.1", "sanmai/pipeline": "^5.1 || ^6", "sebastian/diff": "^3.0.2 || ^4.0 || ^5.0 || ^6.0 || ^7.0", - "shish/safe": "^2.6", - "symfony/console": "^5.4 || ^6.0 || ^7.0", - "symfony/filesystem": "^5.4 || ^6.0 || ^7.0", - "symfony/finder": "^5.4 || ^6.0 || ^7.0", - "symfony/process": "^5.4 || ^6.0 || ^7.0", + "symfony/console": "^6.4 || ^7.0", + "symfony/filesystem": "^6.4 || ^7.0", + "symfony/finder": "^6.4 || ^7.0", + "symfony/process": "^6.4 || ^7.0", + "thecodingmachine/safe": "^v3.0", "webmozart/assert": "^1.11" }, "conflict": { @@ -85,7 +85,7 @@ "phpunit/phpunit": "^10.5", "rector/rector": "^1.0", "sidz/phpstan-rules": "^0.4", - "symfony/yaml": "^5.4 || ^6.0 || ^7.0" + "symfony/yaml": "^6.4 || ^7.0" }, "config": { "platform": { diff --git a/composer.lock b/composer.lock index 6ecfbd7cbf..b85efd8b39 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "1f6c40c349eeb90a1aa2e5d2f0e9ffdb", + "content-hash": "b152803e73235533ea263e0235cc2a2a", "packages": [ { "name": "colinodell/json5", @@ -96,23 +96,23 @@ }, { "name": "composer/pcre", - "version": "1.0.0", + "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "3d322d715c43a1ac36c7fe215fa59336265500f2" + "reference": "67a32d7d6f9f560b726ab25a061b38ff3a80c560" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/3d322d715c43a1ac36c7fe215fa59336265500f2", - "reference": "3d322d715c43a1ac36c7fe215fa59336265500f2", + "url": "https://api.github.com/repos/composer/pcre/zipball/67a32d7d6f9f560b726ab25a061b38ff3a80c560", + "reference": "67a32d7d6f9f560b726ab25a061b38ff3a80c560", "shasum": "" }, "require": { "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpstan/phpstan": "^1", + "phpstan/phpstan": "^1.3", "phpstan/phpstan-strict-rules": "^1.1", "symfony/phpunit-bridge": "^4.2 || ^5" }, @@ -147,7 +147,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/1.0.0" + "source": "https://github.com/composer/pcre/tree/1.0.1" }, "funding": [ { @@ -163,31 +163,31 @@ "type": "tidelift" } ], - "time": "2021-12-06T15:17:27+00:00" + "time": "2022-01-21T20:24:37+00:00" }, { "name": "composer/xdebug-handler", - "version": "3.0.0", + "version": "3.0.5", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "ec6aa897c8b6cab05ebaeddade62bb6e4a69ef38" + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ec6aa897c8b6cab05ebaeddade62bb6e4a69ef38", - "reference": "ec6aa897c8b6cab05ebaeddade62bb6e4a69ef38", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/6c1925561632e83d60a44492e0b344cf48ab85ef", + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef", "shasum": "" }, "require": { - "composer/pcre": "^1", + "composer/pcre": "^1 || ^2 || ^3", "php": "^7.2.5 || ^8.0", "psr/log": "^1 || ^2 || ^3" }, "require-dev": { "phpstan/phpstan": "^1.0", "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^6.0" + "phpunit/phpunit": "^8.5 || ^9.6 || ^10.5" }, "type": "library", "autoload": { @@ -211,9 +211,9 @@ "performance" ], "support": { - "irc": "irc://irc.freenode.org/composer", + "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/3.0.0" + "source": "https://github.com/composer/xdebug-handler/tree/3.0.5" }, "funding": [ { @@ -229,20 +229,20 @@ "type": "tidelift" } ], - "time": "2021-12-23T21:03:16+00:00" + "time": "2024-05-06T16:37:16+00:00" }, { "name": "fidry/cpu-core-counter", - "version": "1.1.0", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/theofidry/cpu-core-counter.git", - "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42" + "reference": "8520451a140d3f46ac33042715115e290cf5785f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/f92996c4d5c1a696a6a970e20f7c4216200fcc42", - "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/8520451a140d3f46ac33042715115e290cf5785f", + "reference": "8520451a140d3f46ac33042715115e290cf5785f", "shasum": "" }, "require": { @@ -282,7 +282,7 @@ ], "support": { "issues": "https://github.com/theofidry/cpu-core-counter/issues", - "source": "https://github.com/theofidry/cpu-core-counter/tree/1.1.0" + "source": "https://github.com/theofidry/cpu-core-counter/tree/1.2.0" }, "funding": [ { @@ -290,7 +290,7 @@ "type": "github" } ], - "time": "2024-02-07T09:43:46+00:00" + "time": "2024-08-06T10:04:20+00:00" }, { "name": "infection/abstract-testframework-adapter", @@ -349,33 +349,33 @@ }, { "name": "infection/extension-installer", - "version": "0.1.1", + "version": "0.1.2", "source": { "type": "git", "url": "https://github.com/infection/extension-installer.git", - "reference": "ff30c0adffcdbc747c96adf92382ccbe271d0afd" + "reference": "9b351d2910b9a23ab4815542e93d541e0ca0cdcf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/infection/extension-installer/zipball/ff30c0adffcdbc747c96adf92382ccbe271d0afd", - "reference": "ff30c0adffcdbc747c96adf92382ccbe271d0afd", + "url": "https://api.github.com/repos/infection/extension-installer/zipball/9b351d2910b9a23ab4815542e93d541e0ca0cdcf", + "reference": "9b351d2910b9a23ab4815542e93d541e0ca0cdcf", "shasum": "" }, "require": { "composer-plugin-api": "^1.1 || ^2.0" }, "require-dev": { - "composer/composer": "^1.9", - "friendsofphp/php-cs-fixer": "^2.16", + "composer/composer": "^1.9 || ^2.0", + "friendsofphp/php-cs-fixer": "^2.18, <2.19", "infection/infection": "^0.15.2", - "php-coveralls/php-coveralls": "^2.2", + "php-coveralls/php-coveralls": "^2.4", "phpstan/extension-installer": "^1.0", "phpstan/phpstan": "^0.12.10", "phpstan/phpstan-phpunit": "^0.12.6", "phpstan/phpstan-strict-rules": "^0.12.2", "phpstan/phpstan-webmozart-assert": "^0.12.2", - "phpunit/phpunit": "^8.5", - "vimeo/psalm": "^3.8" + "phpunit/phpunit": "^9.5", + "vimeo/psalm": "^4.8" }, "type": "composer-plugin", "extra": { @@ -399,9 +399,19 @@ "description": "Infection Extension Installer", "support": { "issues": "https://github.com/infection/extension-installer/issues", - "source": "https://github.com/infection/extension-installer/tree/0.1.1" + "source": "https://github.com/infection/extension-installer/tree/0.1.2" }, - "time": "2020-04-25T22:40:05+00:00" + "funding": [ + { + "url": "https://github.com/infection", + "type": "github" + }, + { + "url": "https://opencollective.com/infection", + "type": "open_collective" + } + ], + "time": "2021-10-20T22:08:34+00:00" }, { "name": "infection/include-interceptor", @@ -579,16 +589,16 @@ }, { "name": "nikic/php-parser", - "version": "v5.3.1", + "version": "v5.4.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "8eea230464783aa9671db8eea6f8c6ac5285794b" + "reference": "447a020a1f875a434d62f2a401f53b82a396e494" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/8eea230464783aa9671db8eea6f8c6ac5285794b", - "reference": "8eea230464783aa9671db8eea6f8c6ac5285794b", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/447a020a1f875a434d62f2a401f53b82a396e494", + "reference": "447a020a1f875a434d62f2a401f53b82a396e494", "shasum": "" }, "require": { @@ -631,35 +641,35 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.3.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.4.0" }, - "time": "2024-10-08T18:51:32+00:00" + "time": "2024-12-30T11:07:19+00:00" }, { "name": "ondram/ci-detector", - "version": "4.1.0", + "version": "4.2.0", "source": { "type": "git", "url": "https://github.com/OndraM/ci-detector.git", - "reference": "8a4b664e916df82ff26a44709942dfd593fa6f30" + "reference": "8b0223b5ed235fd377c75fdd1bfcad05c0f168b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/OndraM/ci-detector/zipball/8a4b664e916df82ff26a44709942dfd593fa6f30", - "reference": "8a4b664e916df82ff26a44709942dfd593fa6f30", + "url": "https://api.github.com/repos/OndraM/ci-detector/zipball/8b0223b5ed235fd377c75fdd1bfcad05c0f168b8", + "reference": "8b0223b5ed235fd377c75fdd1bfcad05c0f168b8", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": "^7.4 || ^8.0" }, "require-dev": { - "ergebnis/composer-normalize": "^2.2", - "lmc/coding-standard": "^1.3 || ^2.1", + "ergebnis/composer-normalize": "^2.13.2", + "lmc/coding-standard": "^3.0.0", "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/extension-installer": "^1.0.5", - "phpstan/phpstan": "^0.12.58", - "phpstan/phpstan-phpunit": "^0.12.16", - "phpunit/phpunit": "^7.1 || ^8.0 || ^9.0" + "phpstan/extension-installer": "^1.1.0", + "phpstan/phpstan": "^1.2.0", + "phpstan/phpstan-phpunit": "^1.0.0", + "phpunit/phpunit": "^9.6.13" }, "type": "library", "autoload": { @@ -709,9 +719,9 @@ ], "support": { "issues": "https://github.com/OndraM/ci-detector/issues", - "source": "https://github.com/OndraM/ci-detector/tree/4.1.0" + "source": "https://github.com/OndraM/ci-detector/tree/4.2.0" }, - "time": "2021-04-14T09:16:52+00:00" + "time": "2024-03-12T13:22:30+00:00" }, { "name": "psr/container", @@ -818,31 +828,37 @@ }, { "name": "sanmai/later", - "version": "0.1.2", + "version": "0.1.4", "source": { "type": "git", "url": "https://github.com/sanmai/later.git", - "reference": "9b659fecef2030193fd02402955bc39629d5606f" + "reference": "e24c4304a4b1349c2a83151a692cec0c10579f60" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sanmai/later/zipball/9b659fecef2030193fd02402955bc39629d5606f", - "reference": "9b659fecef2030193fd02402955bc39629d5606f", + "url": "https://api.github.com/repos/sanmai/later/zipball/e24c4304a4b1349c2a83151a692cec0c10579f60", + "reference": "e24c4304a4b1349c2a83151a692cec0c10579f60", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.4" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.13", - "infection/infection": ">=0.10.5", + "ergebnis/composer-normalize": "^2.8", + "friendsofphp/php-cs-fixer": "^3.35.1", + "infection/infection": ">=0.27.6", "phan/phan": ">=2", "php-coveralls/php-coveralls": "^2.0", - "phpstan/phpstan": ">=0.10", - "phpunit/phpunit": ">=7.4", + "phpstan/phpstan": ">=1.4.5", + "phpunit/phpunit": ">=9.5 <10", "vimeo/psalm": ">=2" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.1.x-dev" + } + }, "autoload": { "files": [ "src/functions.php" @@ -864,7 +880,7 @@ "description": "Later: deferred wrapper object", "support": { "issues": "https://github.com/sanmai/later/issues", - "source": "https://github.com/sanmai/later/tree/0.1.2" + "source": "https://github.com/sanmai/later/tree/0.1.4" }, "funding": [ { @@ -872,7 +888,7 @@ "type": "github" } ], - "time": "2021-01-02T10:26:44+00:00" + "time": "2023-10-24T00:25:28+00:00" }, { "name": "sanmai/pipeline", @@ -1006,195 +1022,48 @@ ], "time": "2024-03-02T07:15:17+00:00" }, - { - "name": "shish/safe", - "version": "v2.6.3", - "source": { - "type": "git", - "url": "https://github.com/shish/safe.git", - "reference": "88c2cf506c6b497cd2a961c5e8116a18c5c272c0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/shish/safe/zipball/88c2cf506c6b497cd2a961c5e8116a18c5c272c0", - "reference": "88c2cf506c6b497cd2a961c5e8116a18c5c272c0", - "shasum": "" - }, - "require": { - "php": ">= 8.2" - }, - "replace": { - "thecodingmachine/safe": "2.5.0" - }, - "require-dev": { - "phpstan/phpstan": "^1", - "phpunit/phpunit": "^10.0 || ^11.0", - "squizlabs/php_codesniffer": "^3", - "thecodingmachine/phpstan-strict-rules": "^1.0" - }, - "type": "library", - "autoload": { - "files": [ - "deprecated/apc.php", - "deprecated/array.php", - "deprecated/datetime.php", - "deprecated/libevent.php", - "deprecated/misc.php", - "deprecated/password.php", - "deprecated/mssql.php", - "deprecated/stats.php", - "deprecated/strings.php", - "lib/special_cases.php", - "deprecated/mysqli.php", - "generated/apache.php", - "generated/apcu.php", - "generated/bzip2.php", - "generated/calendar.php", - "generated/classobj.php", - "generated/com.php", - "generated/cubrid.php", - "generated/curl.php", - "generated/datetime.php", - "generated/dir.php", - "generated/eio.php", - "generated/errorfunc.php", - "generated/exec.php", - "generated/fileinfo.php", - "generated/filesystem.php", - "generated/filter.php", - "generated/fpm.php", - "generated/ftp.php", - "generated/funchand.php", - "generated/gettext.php", - "generated/gnupg.php", - "generated/hash.php", - "generated/ibase.php", - "generated/ibmDb2.php", - "generated/iconv.php", - "generated/image.php", - "generated/imap.php", - "generated/info.php", - "generated/inotify.php", - "generated/json.php", - "generated/ldap.php", - "generated/libxml.php", - "generated/lzf.php", - "generated/mailparse.php", - "generated/mbstring.php", - "generated/misc.php", - "generated/mysql.php", - "generated/network.php", - "generated/oci8.php", - "generated/opcache.php", - "generated/openssl.php", - "generated/outcontrol.php", - "generated/pcntl.php", - "generated/pcre.php", - "generated/pgsql.php", - "generated/posix.php", - "generated/ps.php", - "generated/pspell.php", - "generated/readline.php", - "generated/rnp.php", - "generated/rpminfo.php", - "generated/rrd.php", - "generated/sem.php", - "generated/session.php", - "generated/shmop.php", - "generated/sockets.php", - "generated/sodium.php", - "generated/solr.php", - "generated/spl.php", - "generated/sqlsrv.php", - "generated/ssdeep.php", - "generated/ssh2.php", - "generated/stream.php", - "generated/strings.php", - "generated/swoole.php", - "generated/uodbc.php", - "generated/uopz.php", - "generated/url.php", - "generated/var.php", - "generated/xdiff.php", - "generated/xml.php", - "generated/xmlrpc.php", - "generated/yaml.php", - "generated/yaz.php", - "generated/zip.php", - "generated/zlib.php" - ], - "classmap": [ - "lib/DateTime.php", - "lib/DateTimeImmutable.php", - "lib/Exceptions/", - "deprecated/Exceptions/", - "generated/Exceptions/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHP core functions that throw exceptions instead of returning FALSE on error (a less-abandoned fork of thecodingmachine/safe)", - "support": { - "issues": "https://github.com/shish/safe/issues", - "source": "https://github.com/shish/safe/tree/v2.6.3" - }, - "funding": [ - { - "url": "https://github.com/shish", - "type": "github" - }, - { - "url": "https://ko-fi.com/shish2k", - "type": "ko_fi" - } - ], - "time": "2024-10-08T20:21:12+00:00" - }, { "name": "symfony/console", - "version": "v6.4.4", + "version": "v7.2.1", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "0d9e4eb5ad413075624378f474c4167ea202de78" + "reference": "fefcc18c0f5d0efe3ab3152f15857298868dc2c3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/0d9e4eb5ad413075624378f474c4167ea202de78", - "reference": "0d9e4eb5ad413075624378f474c4167ea202de78", + "url": "https://api.github.com/repos/symfony/console/zipball/fefcc18c0f5d0efe3ab3152f15857298868dc2c3", + "reference": "fefcc18c0f5d0efe3ab3152f15857298868dc2c3", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", + "php": ">=8.2", "symfony/polyfill-mbstring": "~1.0", "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^5.4|^6.0|^7.0" + "symfony/string": "^6.4|^7.0" }, "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" + "symfony/dependency-injection": "<6.4", + "symfony/dotenv": "<6.4", + "symfony/event-dispatcher": "<6.4", + "symfony/lock": "<6.4", + "symfony/process": "<6.4" }, "provide": { "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", "symfony/http-foundation": "^6.4|^7.0", "symfony/http-kernel": "^6.4|^7.0", - "symfony/lock": "^5.4|^6.0|^7.0", - "symfony/messenger": "^5.4|^6.0|^7.0", - "symfony/process": "^5.4|^6.0|^7.0", - "symfony/stopwatch": "^5.4|^6.0|^7.0", - "symfony/var-dumper": "^5.4|^6.0|^7.0" + "symfony/lock": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -1228,7 +1097,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.4" + "source": "https://github.com/symfony/console/tree/v7.2.1" }, "funding": [ { @@ -1244,20 +1113,20 @@ "type": "tidelift" } ], - "time": "2024-02-22T20:27:10+00:00" + "time": "2024-12-11T03:49:26+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.4.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", - "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", "shasum": "" }, "require": { @@ -1265,12 +1134,12 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.4-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.5-dev" } }, "autoload": { @@ -1295,7 +1164,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1" }, "funding": [ { @@ -1311,29 +1180,29 @@ "type": "tidelift" } ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/filesystem", - "version": "v6.4.13", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "4856c9cf585d5a0313d8d35afd681a526f038dd3" + "reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/4856c9cf585d5a0313d8d35afd681a526f038dd3", - "reference": "4856c9cf585d5a0313d8d35afd681a526f038dd3", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/b8dce482de9d7c9fe2891155035a7248ab5c7fdb", + "reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.8" }, "require-dev": { - "symfony/process": "^5.4|^6.4|^7.0" + "symfony/process": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -1361,7 +1230,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.4.13" + "source": "https://github.com/symfony/filesystem/tree/v7.2.0" }, "funding": [ { @@ -1377,26 +1246,27 @@ "type": "tidelift" } ], - "time": "2024-10-25T15:07:50+00:00" + "time": "2024-10-25T15:15:23+00:00" }, { "name": "symfony/finder", - "version": "v5.4.27", + "version": "v7.2.2", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d" + "reference": "87a71856f2f56e4100373e92529eed3171695cfb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/ff4bce3c33451e7ec778070e45bd23f74214cd5d", - "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d", + "url": "https://api.github.com/repos/symfony/finder/zipball/87a71856f2f56e4100373e92529eed3171695cfb", + "reference": "87a71856f2f56e4100373e92529eed3171695cfb", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.2" + }, + "require-dev": { + "symfony/filesystem": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -1424,7 +1294,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.4.27" + "source": "https://github.com/symfony/finder/tree/v7.2.2" }, "funding": [ { @@ -1440,24 +1310,24 @@ "type": "tidelift" } ], - "time": "2023-07-31T08:02:31+00:00" + "time": "2024-12-30T19:00:17+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.29.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4" + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4", - "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "provide": { "ext-ctype": "*" @@ -1468,8 +1338,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -1503,7 +1373,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0" }, "funding": [ { @@ -1519,24 +1389,24 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.29.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f" + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f", - "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" @@ -1544,8 +1414,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -1581,7 +1451,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0" }, "funding": [ { @@ -1597,24 +1467,24 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.29.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "bc45c394692b948b4d383a08d7753968bed9a83d" + "reference": "3833d7255cc303546435cb650316bff708a1c75c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d", - "reference": "bc45c394692b948b4d383a08d7753968bed9a83d", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", + "reference": "3833d7255cc303546435cb650316bff708a1c75c", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" @@ -1622,8 +1492,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -1662,7 +1532,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0" }, "funding": [ { @@ -1678,24 +1548,24 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.29.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec" + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec", - "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341", + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "provide": { "ext-mbstring": "*" @@ -1706,8 +1576,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -1742,7 +1612,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0" }, "funding": [ { @@ -1758,104 +1628,24 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.29.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", - "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/process", - "version": "v6.4.14", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "25214adbb0996d18112548de20c281be9f27279f" + "reference": "d34b22ba9390ec19d2dd966c40aa9e8462f27a7e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/25214adbb0996d18112548de20c281be9f27279f", - "reference": "25214adbb0996d18112548de20c281be9f27279f", + "url": "https://api.github.com/repos/symfony/process/zipball/d34b22ba9390ec19d2dd966c40aa9e8462f27a7e", + "reference": "d34b22ba9390ec19d2dd966c40aa9e8462f27a7e", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "type": "library", "autoload": { @@ -1883,7 +1673,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.4.14" + "source": "https://github.com/symfony/process/tree/v7.2.0" }, "funding": [ { @@ -1899,37 +1689,38 @@ "type": "tidelift" } ], - "time": "2024-11-06T09:25:01+00:00" + "time": "2024-11-06T14:24:19+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.4.1", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0" + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0", - "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e53260aabf78fb3d63f8d79d69ece59f80d5eda0", + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0", "shasum": "" }, "require": { "php": ">=8.1", - "psr/container": "^1.1|^2.0" + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { "ext-psr": "<1.1|>=2" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.4-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.5-dev" } }, "autoload": { @@ -1965,7 +1756,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.4.1" + "source": "https://github.com/symfony/service-contracts/tree/v3.5.1" }, "funding": [ { @@ -1981,20 +1772,20 @@ "type": "tidelift" } ], - "time": "2023-12-26T14:02:43+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/string", - "version": "v6.4.4", + "version": "v6.4.15", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "4e465a95bdc32f49cf4c7f07f751b843bbd6dcd9" + "reference": "73a5e66ea2e1677c98d4449177c5a9cf9d8b4c6f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/4e465a95bdc32f49cf4c7f07f751b843bbd6dcd9", - "reference": "4e465a95bdc32f49cf4c7f07f751b843bbd6dcd9", + "url": "https://api.github.com/repos/symfony/string/zipball/73a5e66ea2e1677c98d4449177c5a9cf9d8b4c6f", + "reference": "73a5e66ea2e1677c98d4449177c5a9cf9d8b4c6f", "shasum": "" }, "require": { @@ -2051,7 +1842,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.4.4" + "source": "https://github.com/symfony/string/tree/v6.4.15" }, "funding": [ { @@ -2067,7 +1858,146 @@ "type": "tidelift" } ], - "time": "2024-02-01T13:16:41+00:00" + "time": "2024-11-13T13:31:12+00:00" + }, + { + "name": "thecodingmachine/safe", + "version": "v3.0.0", + "source": { + "type": "git", + "url": "https://github.com/thecodingmachine/safe.git", + "reference": "1b99e649415872997e43c771c55ba9b08d601329" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thecodingmachine/safe/zipball/1b99e649415872997e43c771c55ba9b08d601329", + "reference": "1b99e649415872997e43c771c55ba9b08d601329", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "php-parallel-lint/php-parallel-lint": "^1.4", + "phpstan/phpstan": "^2", + "phpunit/phpunit": "^10", + "squizlabs/php_codesniffer": "^3.2" + }, + "type": "library", + "autoload": { + "files": [ + "lib/special_cases.php", + "generated/apache.php", + "generated/apcu.php", + "generated/array.php", + "generated/bzip2.php", + "generated/calendar.php", + "generated/classobj.php", + "generated/com.php", + "generated/cubrid.php", + "generated/curl.php", + "generated/datetime.php", + "generated/dir.php", + "generated/eio.php", + "generated/errorfunc.php", + "generated/exec.php", + "generated/fileinfo.php", + "generated/filesystem.php", + "generated/filter.php", + "generated/fpm.php", + "generated/ftp.php", + "generated/funchand.php", + "generated/gettext.php", + "generated/gmp.php", + "generated/gnupg.php", + "generated/hash.php", + "generated/ibase.php", + "generated/ibmDb2.php", + "generated/iconv.php", + "generated/image.php", + "generated/imap.php", + "generated/info.php", + "generated/inotify.php", + "generated/json.php", + "generated/ldap.php", + "generated/libxml.php", + "generated/lzf.php", + "generated/mailparse.php", + "generated/mbstring.php", + "generated/misc.php", + "generated/mysql.php", + "generated/mysqli.php", + "generated/network.php", + "generated/oci8.php", + "generated/opcache.php", + "generated/openssl.php", + "generated/outcontrol.php", + "generated/pcntl.php", + "generated/pcre.php", + "generated/pgsql.php", + "generated/posix.php", + "generated/ps.php", + "generated/pspell.php", + "generated/readline.php", + "generated/rnp.php", + "generated/rpminfo.php", + "generated/rrd.php", + "generated/sem.php", + "generated/session.php", + "generated/shmop.php", + "generated/sockets.php", + "generated/sodium.php", + "generated/solr.php", + "generated/spl.php", + "generated/sqlsrv.php", + "generated/ssdeep.php", + "generated/ssh2.php", + "generated/stream.php", + "generated/strings.php", + "generated/swoole.php", + "generated/uodbc.php", + "generated/uopz.php", + "generated/url.php", + "generated/var.php", + "generated/xdiff.php", + "generated/xml.php", + "generated/xmlrpc.php", + "generated/yaml.php", + "generated/yaz.php", + "generated/zip.php", + "generated/zlib.php" + ], + "classmap": [ + "lib/DateTime.php", + "lib/DateTimeImmutable.php", + "lib/Exceptions/", + "generated/Exceptions/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHP core functions that throw exceptions instead of returning FALSE on error", + "support": { + "issues": "https://github.com/thecodingmachine/safe/issues", + "source": "https://github.com/thecodingmachine/safe/tree/v3.0.0" + }, + "funding": [ + { + "url": "https://github.com/OskarStark", + "type": "github" + }, + { + "url": "https://github.com/shish", + "type": "github" + }, + { + "url": "https://github.com/staabm", + "type": "github" + } + ], + "time": "2025-02-11T00:27:22+00:00" }, { "name": "webmozart/assert", @@ -2131,26 +2061,25 @@ "packages-dev": [ { "name": "fidry/makefile", - "version": "1.0.1", + "version": "1.0.3", "source": { "type": "git", "url": "https://github.com/theofidry/makefile.git", - "reference": "be5a048dcc5648d04e924facce0f85b406d731e4" + "reference": "3d0350840eeeda8127e014f0f7f86917c7f7b4f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theofidry/makefile/zipball/be5a048dcc5648d04e924facce0f85b406d731e4", - "reference": "be5a048dcc5648d04e924facce0f85b406d731e4", + "url": "https://api.github.com/repos/theofidry/makefile/zipball/3d0350840eeeda8127e014f0f7f86917c7f7b4f1", + "reference": "3d0350840eeeda8127e014f0f7f86917c7f7b4f1", "shasum": "" }, "require": { - "php": "^8.1", - "thecodingmachine/safe": "^2.0" + "php": "^8.1" }, "require-dev": { "bamarni/composer-bin-plugin": "^1.4", "ergebnis/composer-normalize": "^2.28", - "infection/infection": "^0.26", + "infection/infection": "^0.29", "phpunit/phpunit": "^10.3" }, "type": "library", @@ -2184,7 +2113,7 @@ ], "support": { "issues": "https://github.com/theofidry/makefile/issues", - "source": "https://github.com/theofidry/makefile/tree/1.0.1" + "source": "https://github.com/theofidry/makefile/tree/1.0.3" }, "funding": [ { @@ -2192,20 +2121,20 @@ "type": "github" } ], - "time": "2023-10-13T23:49:14+00:00" + "time": "2025-02-13T22:15:57+00:00" }, { "name": "helmich/phpunit-json-assert", - "version": "v3.5.1", + "version": "v3.5.2", "source": { "type": "git", "url": "https://github.com/martin-helmich/phpunit-json-assert.git", - "reference": "5a3a53e46f4d1f1b324c5cc2e33d87ad2d37260c" + "reference": "f8958119e9e9ea1339d6b4d6fd2df24536261b50" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/martin-helmich/phpunit-json-assert/zipball/5a3a53e46f4d1f1b324c5cc2e33d87ad2d37260c", - "reference": "5a3a53e46f4d1f1b324c5cc2e33d87ad2d37260c", + "url": "https://api.github.com/repos/martin-helmich/phpunit-json-assert/zipball/f8958119e9e9ea1339d6b4d6fd2df24536261b50", + "reference": "f8958119e9e9ea1339d6b4d6fd2df24536261b50", "shasum": "" }, "require": { @@ -2214,10 +2143,10 @@ "softcreatr/jsonpath": "^0.8" }, "conflict": { - "phpunit/phpunit": "<8.0 || >= 11.0" + "phpunit/phpunit": "<8.0 || >= 12.0" }, "require-dev": { - "phpunit/phpunit": "^8.0 || ^9.0 || ^10.0" + "phpunit/phpunit": "^8.0 || ^9.0 || ^10.0 || ^11.0" }, "type": "library", "autoload": { @@ -2238,7 +2167,7 @@ "description": "PHPUnit assertions for JSON documents", "support": { "issues": "https://github.com/martin-helmich/phpunit-json-assert/issues", - "source": "https://github.com/martin-helmich/phpunit-json-assert/tree/v3.5.1" + "source": "https://github.com/martin-helmich/phpunit-json-assert/tree/v3.5.2" }, "funding": [ { @@ -2250,20 +2179,20 @@ "type": "github" } ], - "time": "2023-03-03T14:09:38+00:00" + "time": "2024-05-20T11:18:46+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.11.1", + "version": "1.13.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" + "reference": "024473a478be9df5fdaca2c793f2232fe788e414" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/024473a478be9df5fdaca2c793f2232fe788e414", + "reference": "024473a478be9df5fdaca2c793f2232fe788e414", "shasum": "" }, "require": { @@ -2271,11 +2200,12 @@ }, "conflict": { "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3,<3.2.2" + "doctrine/common": "<2.13.3 || >=3 <3.2.2" }, "require-dev": { "doctrine/collections": "^1.6.8", "doctrine/common": "^2.13.3 || ^3.2.2", + "phpspec/prophecy": "^1.10", "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", @@ -2301,7 +2231,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" + "source": "https://github.com/myclabs/DeepCopy/tree/1.13.0" }, "funding": [ { @@ -2309,7 +2239,7 @@ "type": "tidelift" } ], - "time": "2023-03-08T13:26:56+00:00" + "time": "2025-02-12T12:17:51+00:00" }, { "name": "phar-io/manifest", @@ -2697,32 +2627,32 @@ }, { "name": "phpunit/php-code-coverage", - "version": "10.1.14", + "version": "10.1.16", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "e3f51450ebffe8e0efdf7346ae966a656f7d5e5b" + "reference": "7e308268858ed6baedc8704a304727d20bc07c77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/e3f51450ebffe8e0efdf7346ae966a656f7d5e5b", - "reference": "e3f51450ebffe8e0efdf7346ae966a656f7d5e5b", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/7e308268858ed6baedc8704a304727d20bc07c77", + "reference": "7e308268858ed6baedc8704a304727d20bc07c77", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.18 || ^5.0", + "nikic/php-parser": "^4.19.1 || ^5.1.0", "php": ">=8.1", - "phpunit/php-file-iterator": "^4.0", - "phpunit/php-text-template": "^3.0", - "sebastian/code-unit-reverse-lookup": "^3.0", - "sebastian/complexity": "^3.0", - "sebastian/environment": "^6.0", - "sebastian/lines-of-code": "^2.0", - "sebastian/version": "^4.0", - "theseer/tokenizer": "^1.2.0" + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-text-template": "^3.0.1", + "sebastian/code-unit-reverse-lookup": "^3.0.0", + "sebastian/complexity": "^3.2.0", + "sebastian/environment": "^6.1.0", + "sebastian/lines-of-code": "^2.0.2", + "sebastian/version": "^4.0.1", + "theseer/tokenizer": "^1.2.3" }, "require-dev": { "phpunit/phpunit": "^10.1" @@ -2734,7 +2664,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "10.1-dev" + "dev-main": "10.1.x-dev" } }, "autoload": { @@ -2763,7 +2693,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.14" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.16" }, "funding": [ { @@ -2771,7 +2701,7 @@ "type": "github" } ], - "time": "2024-03-12T15:33:41+00:00" + "time": "2024-08-22T04:31:57+00:00" }, { "name": "phpunit/php-file-iterator", @@ -3018,16 +2948,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.5.13", + "version": "10.5.45", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "20a63fc1c6db29b15da3bd02d4b6cf59900088a7" + "reference": "bd68a781d8e30348bc297449f5234b3458267ae8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/20a63fc1c6db29b15da3bd02d4b6cf59900088a7", - "reference": "20a63fc1c6db29b15da3bd02d4b6cf59900088a7", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/bd68a781d8e30348bc297449f5234b3458267ae8", + "reference": "bd68a781d8e30348bc297449f5234b3458267ae8", "shasum": "" }, "require": { @@ -3037,26 +2967,26 @@ "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.10.1", - "phar-io/manifest": "^2.0.3", - "phar-io/version": "^3.0.2", + "myclabs/deep-copy": "^1.12.1", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", "php": ">=8.1", - "phpunit/php-code-coverage": "^10.1.5", - "phpunit/php-file-iterator": "^4.0", - "phpunit/php-invoker": "^4.0", - "phpunit/php-text-template": "^3.0", - "phpunit/php-timer": "^6.0", - "sebastian/cli-parser": "^2.0", - "sebastian/code-unit": "^2.0", - "sebastian/comparator": "^5.0", - "sebastian/diff": "^5.0", - "sebastian/environment": "^6.0", - "sebastian/exporter": "^5.1", - "sebastian/global-state": "^6.0.1", - "sebastian/object-enumerator": "^5.0", - "sebastian/recursion-context": "^5.0", - "sebastian/type": "^4.0", - "sebastian/version": "^4.0" + "phpunit/php-code-coverage": "^10.1.16", + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-invoker": "^4.0.0", + "phpunit/php-text-template": "^3.0.1", + "phpunit/php-timer": "^6.0.0", + "sebastian/cli-parser": "^2.0.1", + "sebastian/code-unit": "^2.0.0", + "sebastian/comparator": "^5.0.3", + "sebastian/diff": "^5.1.1", + "sebastian/environment": "^6.1.0", + "sebastian/exporter": "^5.1.2", + "sebastian/global-state": "^6.0.2", + "sebastian/object-enumerator": "^5.0.0", + "sebastian/recursion-context": "^5.0.0", + "sebastian/type": "^4.0.0", + "sebastian/version": "^4.0.1" }, "suggest": { "ext-soap": "To be able to generate mocks based on WSDL files" @@ -3099,7 +3029,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.13" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.45" }, "funding": [ { @@ -3115,7 +3045,7 @@ "type": "tidelift" } ], - "time": "2024-03-12T15:37:41+00:00" + "time": "2025-02-06T16:08:12+00:00" }, { "name": "rector/rector", @@ -3346,16 +3276,16 @@ }, { "name": "sebastian/comparator", - "version": "5.0.1", + "version": "5.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "2db5010a484d53ebf536087a70b4a5423c102372" + "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2db5010a484d53ebf536087a70b4a5423c102372", - "reference": "2db5010a484d53ebf536087a70b4a5423c102372", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", + "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", "shasum": "" }, "require": { @@ -3366,7 +3296,7 @@ "sebastian/exporter": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^10.3" + "phpunit/phpunit": "^10.5" }, "type": "library", "extra": { @@ -3411,7 +3341,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", "security": "https://github.com/sebastianbergmann/comparator/security/policy", - "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.1" + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.3" }, "funding": [ { @@ -3419,7 +3349,7 @@ "type": "github" } ], - "time": "2023-08-14T13:18:12+00:00" + "time": "2024-10-18T14:56:07+00:00" }, { "name": "sebastian/complexity", @@ -3481,16 +3411,16 @@ }, { "name": "sebastian/environment", - "version": "6.0.1", + "version": "6.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951" + "reference": "8074dbcd93529b357029f5cc5058fd3e43666984" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/43c751b41d74f96cbbd4e07b7aec9675651e2951", - "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/8074dbcd93529b357029f5cc5058fd3e43666984", + "reference": "8074dbcd93529b357029f5cc5058fd3e43666984", "shasum": "" }, "require": { @@ -3505,7 +3435,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "6.0-dev" + "dev-main": "6.1-dev" } }, "autoload": { @@ -3533,7 +3463,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", "security": "https://github.com/sebastianbergmann/environment/security/policy", - "source": "https://github.com/sebastianbergmann/environment/tree/6.0.1" + "source": "https://github.com/sebastianbergmann/environment/tree/6.1.0" }, "funding": [ { @@ -3541,7 +3471,7 @@ "type": "github" } ], - "time": "2023-04-11T05:39:26+00:00" + "time": "2024-03-23T08:47:14+00:00" }, { "name": "sebastian/exporter", @@ -4156,31 +4086,28 @@ }, { "name": "symfony/yaml", - "version": "v5.4.30", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "c6980e82a6656f6ebfabfd82f7585794cb122554" + "reference": "ac238f173df0c9c1120f862d0f599e17535a87ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/c6980e82a6656f6ebfabfd82f7585794cb122554", - "reference": "c6980e82a6656f6ebfabfd82f7585794cb122554", + "url": "https://api.github.com/repos/symfony/yaml/zipball/ac238f173df0c9c1120f862d0f599e17535a87ec", + "reference": "ac238f173df0c9c1120f862d0f599e17535a87ec", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/console": "<5.3" + "symfony/console": "<6.4" }, "require-dev": { - "symfony/console": "^5.3|^6.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" + "symfony/console": "^6.4|^7.0" }, "bin": [ "Resources/bin/yaml-lint" @@ -4211,7 +4138,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v5.4.30" + "source": "https://github.com/symfony/yaml/tree/v7.2.3" }, "funding": [ { @@ -4227,7 +4154,7 @@ "type": "tidelift" } ], - "time": "2023-10-27T18:36:14+00:00" + "time": "2025-01-07T12:55:42+00:00" }, { "name": "theseer/tokenizer", @@ -4282,7 +4209,7 @@ ], "aliases": [], "minimum-stability": "stable", - "stability-flags": {}, + "stability-flags": [], "prefer-stable": false, "prefer-lowest": false, "platform": { diff --git a/devTools/Dockerfile b/devTools/Dockerfile index 96b46f5481..4d2a938dc0 100644 --- a/devTools/Dockerfile +++ b/devTools/Dockerfile @@ -4,6 +4,10 @@ FROM php:${PHP_VERSION}-cli-alpine ARG XDEBUG_VERSION +RUN apk add --update --no-cache \ + linux-headers \ + ; + RUN set -eux; \ apk add --no-cache --virtual .build-deps \ ${PHPIZE_DEPS} \ @@ -24,7 +28,7 @@ RUN set -eux; \ | sort -u \ | awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \ )"; \ - apk add --no-cache --virtual .phpexts-rundeps ${runDeps}; \ + apk add --no-cache --virtual .app-phpexts-rundeps ${runDeps}; \ apk del .build-deps RUN apk add --no-cache \ diff --git a/devTools/phpstan-src-baseline.neon b/devTools/phpstan-src-baseline.neon index e73551f120..d342e03867 100644 --- a/devTools/phpstan-src-baseline.neon +++ b/devTools/phpstan-src-baseline.neon @@ -11,22 +11,27 @@ parameters: path: ../src/Command/MakeCustomMutatorCommand.php - - message: "#^Parameter \\#1 \\$array of static method Webmozart\\\\Assert\\\\Assert\\:\\:keyExists\\(\\) expects array, iterable\\<\\(int\\|string\\), string\\>\\|null given\\.$#" + message: "#^Parameter \\#1 \\$array of static method Webmozart\\\\Assert\\\\Assert\\:\\:keyExists\\(\\) expects array, array\\\\|null given\\.$#" count: 2 path: ../src/Differ/DiffChangedLinesParser.php - - message: "#^Cannot access offset 1 on iterable\\<\\(int\\|string\\), string\\>\\|null\\.$#" + message: "#^Offset 1 might not exist on array\\\\|null\\.$#" count: 1 path: ../src/FileSystem/Finder/TestFrameworkFinder.php - - message: "#^Cannot access offset 'name' on iterable\\<\\(int\\|string\\), string\\>\\|null\\.$#" + message: "#^Parameter \\#1 \\$iterator of class Symfony\\\\Component\\\\Finder\\\\Iterator\\\\PathFilterIterator constructor expects Iterator\\, Iterator\\ given\\.$#" + count: 1 + path: ../src/FileSystem/SourceFileFilter.php + + - + message: "#^Offset 'name' might not exist on array\\\\|null\\.$#" count: 1 path: ../src/Logger/Html/StrykerHtmlReportBuilder.php - - message: "#^Parameter \\#1 \\$array of static method Webmozart\\\\Assert\\\\Assert\\:\\:keyExists\\(\\) expects array, iterable\\<\\(int\\|string\\), string\\>\\|null given\\.$#" + message: "#^Parameter \\#1 \\$array of static method Webmozart\\\\Assert\\\\Assert\\:\\:keyExists\\(\\) expects array, array\\\\|null given\\.$#" count: 1 path: ../src/Logger/Html/StrykerHtmlReportBuilder.php @@ -45,11 +50,6 @@ parameters: count: 1 path: ../src/Mutator/MutatorResolver.php - - - message: "#^Parameter \\#1 \\$items of class PhpParser\\\\Node\\\\Expr\\\\Array_ constructor expects array\\, array\\ given\\.$#" - count: 1 - path: ../src/Mutator/Operator/SpreadOneItem.php - - message: "#^Method Infection\\\\PhpParser\\\\Visitor\\\\NonMutableNodesIgnorerVisitor\\:\\:enterNode\\(\\) never returns PhpParser\\\\Node so it can be removed from the return type\\.$#" count: 1 @@ -81,12 +81,12 @@ parameters: path: ../src/TestFramework/Coverage/JUnit/JUnitTestFileDataProvider.php - - message: "#^Cannot access offset 1 on iterable\\<\\(int\\|string\\), string\\>\\|null\\.$#" + message: "#^Offset 1 might not exist on array\\\\|null\\.$#" count: 1 path: ../src/TestFramework/PhpUnit/Adapter/PhpUnitAdapter.php - - message: "#^Cannot access offset 1 on iterable\\<\\(int\\|string\\), string\\>\\|null\\.$#" + message: "#^Offset 1 might not exist on array\\\\|null\\.$#" count: 1 path: ../src/TestFramework/PhpUnit/Config/XmlConfigurationVersionProvider.php @@ -101,7 +101,7 @@ parameters: path: ../src/TestFramework/TestFrameworkExtraOptionsFilter.php - - message: "#^Cannot access offset 0 on iterable\\<\\(int\\|string\\), string\\>\\|null\\.$#" + message: "#^Offset 0 might not exist on array\\\\|null\\.$#" count: 1 path: ../src/TestFramework/VersionParser.php @@ -186,6 +186,6 @@ parameters: path: ../src/Testing/SourceTestClassNameScheme.php - - message: "#^Cannot access offset 1 on iterable\\<\\(int\\|string\\), string\\>\\|null\\.$#" + message: "#^Offset 1 might not exist on array\\\\|null\\.$#" count: 1 path: ../src/Testing/SourceTestClassNameScheme.php diff --git a/devTools/phpstan-src.neon b/devTools/phpstan-src.neon index bc2b2bcd13..774ac841c3 100644 --- a/devTools/phpstan-src.neon +++ b/devTools/phpstan-src.neon @@ -28,16 +28,6 @@ parameters: - path: '../src/Logger/Html/StrykerHtmlReportBuilder.php' message: '#return type with generic class ArrayObject does not specify its types\: TKey, TValue#' - - - message: "#^Instantiated class Infection\\\\FileSystem\\\\DummyFileSystem not found\\.$#" - count: 1 - path: ../src/Container.php - - - - message: "#^Parameter \\#5 \\$fileSystem of class Infection\\\\Process\\\\Runner\\\\MutationTestingRunner constructor expects Symfony\\\\Component\\\\Filesystem\\\\Filesystem, Infection\\\\FileSystem\\\\DummyFileSystem\\|Symfony\\\\Component\\\\Filesystem\\\\Filesystem given\\.$#" - count: 1 - path: ../src/Container.php - - message: "#^ArrayObject\\<\\*NEVER\\*, \\*NEVER\\*\\> does not accept array\\\\.$#" count: 1 diff --git a/devTools/phpstan-tests.neon b/devTools/phpstan-tests.neon index a8afef0571..5433ca5a9d 100644 --- a/devTools/phpstan-tests.neon +++ b/devTools/phpstan-tests.neon @@ -27,10 +27,6 @@ parameters: message: "#^Call to method PHPUnit\\\\Framework\\\\Assert\\:\\:assertTrue\\(\\) with false will always evaluate to false\\.$#" count: 1 path: ../tests/phpunit/Process/MutantProcessTest.php - - - message: "#^Class Infection\\\\FileSystem\\\\DummyFileSystem not found\\.$#" - count: 1 - path: ../tests/phpunit/AutoReview/ProjectCode/ProjectCodeProvider.php - message: '#Do not (use|return|assign) magic number (.)#' paths: diff --git a/docker-compose.yml b/docker-compose.yml index fff53c22f8..a7df02976b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,10 +1,9 @@ -version: '3' services: - php81: + php82: build: context: devTools args: - PHP_VERSION: '8.1' - XDEBUG_VERSION: '3.1.5' + PHP_VERSION: '8.2' + XDEBUG_VERSION: '3.4.1' volumes: - .:/opt/infection diff --git a/psalm.xml b/psalm.xml index b71e9a513b..03b63cd0a4 100644 --- a/psalm.xml +++ b/psalm.xml @@ -32,18 +32,6 @@ - - - - - - - - - - - - diff --git a/src/FileSystem/DummyFileSystem.php b/src/FileSystem/DummyFileSystem.php index 559453d36b..6690b4d94d 100644 --- a/src/FileSystem/DummyFileSystem.php +++ b/src/FileSystem/DummyFileSystem.php @@ -35,12 +35,88 @@ namespace Infection\FileSystem; -use function class_alias; -use Composer\InstalledVersions; -use function version_compare; - -if (version_compare((string) InstalledVersions::getPrettyVersion('symfony/filesystem'), 'v6.0', '<')) { - class_alias(DummySymfony5FileSystem::class, DummyFileSystem::class); -} else { - class_alias(DummySymfony6FileSystem::class, DummyFileSystem::class); +use Symfony\Component\Filesystem\Filesystem; +use Traversable; + +/** + * @internal + */ +final class DummyFileSystem extends Filesystem +{ + public function copy(string $originFile, string $targetFile, bool $overwriteNewerFiles = false): void + { + } + + public function mkdir($dirs, int $mode = 0777): void + { + } + + public function exists(string|iterable $files): bool + { + return false; + } + + public function touch($files, ?int $time = null, ?int $atime = null): void + { + } + + public function remove($files): void + { + } + + public function chmod($files, int $mode, int $umask = 0000, bool $recursive = false): void + { + } + + public function chown($files, $user, bool $recursive = false): void + { + } + + public function chgrp($files, $group, bool $recursive = false): void + { + } + + public function rename(string $origin, string $target, bool $overwrite = false): void + { + } + + public function symlink(string $originDir, string $targetDir, bool $copyOnWindows = false): void + { + } + + public function hardlink(string $originFile, $targetFiles): void + { + } + + public function readlink(string $path, bool $canonicalize = false): ?string + { + return ''; + } + + public function makePathRelative(string $endPath, string $startPath): string + { + return ''; + } + + public function mirror(string $originDir, string $targetDir, ?Traversable $iterator = null, array $options = []): void + { + } + + public function isAbsolutePath(string $file): bool + { + return true; + } + + public function tempnam(string $dir, string $prefix, string $suffix = ''): string + { + return ''; + } + + public function dumpFile(string $filename, $content): void + { + } + + public function appendToFile(string $filename, $content, bool $lock = false): void + { + } } diff --git a/src/FileSystem/DummySymfony5FileSystem.php b/src/FileSystem/DummySymfony5FileSystem.php deleted file mode 100644 index 2fcb558623..0000000000 --- a/src/FileSystem/DummySymfony5FileSystem.php +++ /dev/null @@ -1,122 +0,0 @@ -loggerProjectRootDirectory = $projectRootDirectory; } diff --git a/src/Logger/GitLabCodeQualityLogger.php b/src/Logger/GitLabCodeQualityLogger.php index 56ecfb708a..f5c9f9dcca 100644 --- a/src/Logger/GitLabCodeQualityLogger.php +++ b/src/Logger/GitLabCodeQualityLogger.php @@ -53,7 +53,7 @@ public function __construct(private readonly ResultsCollector $resultsCollector, { if ($loggerProjectRootDirectory === null) { if (($projectRootDirectory = getenv('CI_PROJECT_DIR')) === false) { - $projectRootDirectory = trim(shell_exec('git rev-parse --show-toplevel')); + $projectRootDirectory = trim((string) shell_exec('git rev-parse --show-toplevel')); } $this->loggerProjectRootDirectory = $projectRootDirectory; } diff --git a/tests/e2e/PHPUnit12/README.md b/tests/e2e/PHPUnit12/README.md new file mode 100644 index 0000000000..da3a6e80ef --- /dev/null +++ b/tests/e2e/PHPUnit12/README.md @@ -0,0 +1,3 @@ +## Summary + +PHPUnit 12 e2e tests to make sure we are ok with it diff --git a/tests/e2e/PHPUnit12/composer.json b/tests/e2e/PHPUnit12/composer.json new file mode 100644 index 0000000000..30dfee33f5 --- /dev/null +++ b/tests/e2e/PHPUnit12/composer.json @@ -0,0 +1,15 @@ +{ + "require-dev": { + "phpunit/phpunit": "^12" + }, + "autoload": { + "psr-4": { + "PHPUnit12\\": "src/" + } + }, + "autoload-dev": { + "psr-4": { + "PHPUnit12\\Test\\": "tests/" + } + } +} diff --git a/tests/e2e/PHPUnit12/expected-output.txt b/tests/e2e/PHPUnit12/expected-output.txt new file mode 100644 index 0000000000..e4dbc2085a --- /dev/null +++ b/tests/e2e/PHPUnit12/expected-output.txt @@ -0,0 +1,10 @@ +Total: 1 + +Killed: 1 +Errored: 0 +Syntax Errors: 0 +Escaped: 0 +Timed Out: 0 +Skipped: 0 +Ignored: 0 +Not Covered: 0 diff --git a/tests/e2e/PHPUnit12/infection.json5 b/tests/e2e/PHPUnit12/infection.json5 new file mode 100644 index 0000000000..a5d873d673 --- /dev/null +++ b/tests/e2e/PHPUnit12/infection.json5 @@ -0,0 +1,13 @@ +{ + "$schema": "../../../resources/schema.json", + "timeout": 25, + "source": { + "directories": [ + "src" + ] + }, + "logs": { + "summary": "infection.log" + }, + "tmpDir": "." +} diff --git a/tests/e2e/PHPUnit12/phpunit.xml b/tests/e2e/PHPUnit12/phpunit.xml new file mode 100644 index 0000000000..94fa95139f --- /dev/null +++ b/tests/e2e/PHPUnit12/phpunit.xml @@ -0,0 +1,20 @@ + + + + + ./tests/ + + + + + + ./src/ + + + diff --git a/tests/e2e/PHPUnit12/run_tests.bash b/tests/e2e/PHPUnit12/run_tests.bash new file mode 100644 index 0000000000..15c82c1ea7 --- /dev/null +++ b/tests/e2e/PHPUnit12/run_tests.bash @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +if [ $(php -r 'echo version_compare(PHP_VERSION, "8.3.0", "<");') ]; then + echo "Skipping test it needs PHP 8.3.0 or higher (found $(php -r 'echo PHP_VERSION;'))" + exit 0 +fi + +readonly INFECTION=../../../${1} + +set -e pipefail + +if [ "$DRIVER" = "phpdbg" ] +then + phpdbg -qrr $INFECTION +else + php $INFECTION +fi + +diff -w expected-output.txt infection.log diff --git a/tests/e2e/PHPUnit12/src/SourceClass.php b/tests/e2e/PHPUnit12/src/SourceClass.php new file mode 100644 index 0000000000..5ac80191d9 --- /dev/null +++ b/tests/e2e/PHPUnit12/src/SourceClass.php @@ -0,0 +1,11 @@ +assertSame('hello', $sourceClass->hello()); + } +} diff --git a/tests/phpunit/AutoReview/IntegrationGroup/IoCodeDetector.php b/tests/phpunit/AutoReview/IntegrationGroup/IoCodeDetector.php index 2dc7d4a5be..881eb29c48 100644 --- a/tests/phpunit/AutoReview/IntegrationGroup/IoCodeDetector.php +++ b/tests/phpunit/AutoReview/IntegrationGroup/IoCodeDetector.php @@ -36,7 +36,10 @@ namespace Infection\Tests\AutoReview\IntegrationGroup; use function array_keys; +use function file_exists; use Infection\CannotBeInstantiated; +use const PHP_MAJOR_VERSION; +use const PHP_MINOR_VERSION; use function Safe\file_get_contents; use function Safe\preg_match_all; use function sprintf; @@ -135,11 +138,6 @@ final class IoCodeDetector 'use Symfony\Component\Filesystem\Filesystem;', ]; - private const SAFE_FILESYSTEM_FILES = [ - __DIR__ . '/../../../../vendor/shish/safe/generated/filesystem.php', - __DIR__ . '/../../../../vendor/shish/safe/generated/dir.php', - ]; - /** * @var string[]|null */ @@ -189,7 +187,16 @@ private static function retrieveSafeFileSystemFunctions(): array { $functionNames = []; - foreach (self::SAFE_FILESYSTEM_FILES as $filePath) { + $safeFilesystemFiles = [ + sprintf(__DIR__ . '/../../../../vendor/thecodingmachine/safe/generated/%s.%s/filesystem.php', PHP_MAJOR_VERSION, PHP_MINOR_VERSION), + sprintf(__DIR__ . '/../../../../vendor/thecodingmachine/safe/generated/%s.%s/dir.php', PHP_MAJOR_VERSION, PHP_MINOR_VERSION), + ]; + + foreach ($safeFilesystemFiles as $filePath) { + if (!file_exists($filePath)) { + continue; + } + preg_match_all( '/function (?[_\p{L}]+)\(/u', file_get_contents($filePath), diff --git a/tests/phpunit/AutoReview/Mutator/MutatorTest.php b/tests/phpunit/AutoReview/Mutator/MutatorTest.php index 3906f33518..0bbbc9c9d8 100644 --- a/tests/phpunit/AutoReview/Mutator/MutatorTest.php +++ b/tests/phpunit/AutoReview/Mutator/MutatorTest.php @@ -51,7 +51,7 @@ use ReflectionMethod; use ReflectionNamedType; use function Safe\class_implements; -use function Safe\sort; +use function sort; use const SORT_STRING; use function sprintf; diff --git a/tests/phpunit/AutoReview/ProjectCode/ProjectCodeProvider.php b/tests/phpunit/AutoReview/ProjectCode/ProjectCodeProvider.php index 026c982eb5..70f30cfc7e 100644 --- a/tests/phpunit/AutoReview/ProjectCode/ProjectCodeProvider.php +++ b/tests/phpunit/AutoReview/ProjectCode/ProjectCodeProvider.php @@ -91,7 +91,7 @@ use function iterator_to_array; use function ltrim; use ReflectionClass; -use function Safe\sort; +use function sort; use const SORT_STRING; use function sprintf; use function str_replace; diff --git a/tests/phpunit/Mutator/ProfileListTest.php b/tests/phpunit/Mutator/ProfileListTest.php index 83efdd8daf..1977a56cda 100644 --- a/tests/phpunit/Mutator/ProfileListTest.php +++ b/tests/phpunit/Mutator/ProfileListTest.php @@ -42,7 +42,7 @@ use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\DataProviderExternal; use PHPUnit\Framework\TestCase; -use function Safe\sort; +use function sort; use const SORT_STRING; use function sprintf;