From 0df8902dd261de9e1ef8eb358839d63dfdf5e237 Mon Sep 17 00:00:00 2001 From: rossanderson75 Date: Thu, 7 Aug 2025 12:27:52 +0100 Subject: [PATCH 01/18] Removes Travis and adds github actions --- .github/workflows/php-reusable.yml | 59 +++ .github/workflows/php.yml | 25 + .github/workflows/set-up-php-tests/action.yml | 62 +++ .phpcs | 2 + composer.json | 37 +- composer.lock | 496 +++++++++++++++++- phpstan-baseline.neon | 7 + phpstan.neon | 14 + rector.php | 25 + 9 files changed, 710 insertions(+), 17 deletions(-) create mode 100644 .github/workflows/php-reusable.yml create mode 100644 .github/workflows/php.yml create mode 100644 .github/workflows/set-up-php-tests/action.yml create mode 100644 .phpcs create mode 100644 phpstan-baseline.neon create mode 100644 phpstan.neon create mode 100644 rector.php diff --git a/.github/workflows/php-reusable.yml b/.github/workflows/php-reusable.yml new file mode 100644 index 0000000..59e262c --- /dev/null +++ b/.github/workflows/php-reusable.yml @@ -0,0 +1,59 @@ +on: + workflow_call: + inputs: + php_version: + description: 'PHP version to use' + type: string + required: true + secrets: + COMPOSER_TOKEN: + required: true + +permissions: + contents: read + +jobs: + php-quality-checks: + name: 'PHP ${{ inputs.php_version }} Quality & Testing' + timeout-minutes: 60 + runs-on: ubuntu-latest-2-core + + steps: + # Setup Phase + - name: Checkout repository + uses: actions/checkout@v4 + with: + ref: ${{ github.event.pull_request.head.sha }} + + - name: Setup PHP environment and dependencies + uses: ./.github/workflows/set-up-php-tests + with: + php_version: ${{ inputs.php_version }} + COMPOSER_TOKEN: ${{ secrets.COMPOSER_TOKEN }} + + # Install necessary packages + - name: Install linux packages + run: | + sudo apt-get install libonig5 + + # Testing Phase + - name: Run Codecept tests + run: ./vendor/bin/phpunit tests/ + + # Code Quality Checks + - name: Run codesniffer checks + run: | + composer sniffer:php81 + composer sniffer:php84 + + # Code Quality Checks + - name: Get files changed in PR for Rector + id: changed-files + uses: tj-actions/changed-files@ed68ef82c095e0d48ec87eccea555d944a631a4c # v46.0.5 + + - name: Run Rector checks + if: ${{ '!cancelled()' && steps.changed-files.outputs.all_changed_files }} + run: composer rector --ansi ${{ steps.changed-files.outputs.all_changed_files }} + + - name: Run PHPStan analysis + run: composer stan diff --git a/.github/workflows/php.yml b/.github/workflows/php.yml new file mode 100644 index 0000000..5559446 --- /dev/null +++ b/.github/workflows/php.yml @@ -0,0 +1,25 @@ +name: PHP + +on: + pull_request: + push: + branches: + - main + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number }} + cancel-in-progress: true + +jobs: + php-checks: + name: 'PHP ${{ matrix.php_version }}' + uses: ./.github/workflows/php-reusable.yml + strategy: + matrix: + include: + - php_version: '8.1' + # - php_version: '8.4' + with: + php_version: ${{ matrix.php_version }} + secrets: + COMPOSER_TOKEN: ${{ secrets.ACTIONS_COMPOSER_TOKEN }} diff --git a/.github/workflows/set-up-php-tests/action.yml b/.github/workflows/set-up-php-tests/action.yml new file mode 100644 index 0000000..1d6fd96 --- /dev/null +++ b/.github/workflows/set-up-php-tests/action.yml @@ -0,0 +1,62 @@ +name: Set Up PHP Tests +description: Sets up PHP and dependencies for testing + +inputs: + php_version: + description: PHP version to use + required: true + COMPOSER_TOKEN: + description: The GitHub Actions token for Composer to use + required: true + +runs: + using: 'composite' + + steps: + - name: Configure time zones + shell: bash + run: sudo timedatectl set-timezone Europe/London + + - name: Set up PHP + id: setup-php + uses: shivammathur/setup-php@0f7f1d08e3e32076e51cae65eb0b0c871405b16e # v2.34.1 + with: + php-version: ${{ inputs.php_version }} + ini-values: error_reporting=E_ALL, date.timezone=Europe/London, max_execution_time=120 + tools: composer + extensions: zip, mbstring, pdo, pdo_mysql, bcmath, ctype, fileinfo, json, tokenizer, xml + coverage: none + env: + GITHUB_TOKEN: ${{ inputs.COMPOSER_TOKEN }} + + - name: Set env + shell: bash + run: | + echo "PATH=~/.config/composer/vendor/bin:$PATH" >> $GITHUB_ENV + echo "ENVIRONMENT=github" >> $GITHUB_ENV + + - name: Configure Composer + shell: bash + env: + COMPOSER_TOKEN: ${{ inputs.COMPOSER_TOKEN }} + run: composer config --global github-oauth.github.com "$COMPOSER_TOKEN" + + - name: Get composer cache directory + shell: bash + id: composer-cache + run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT + + - name: Cache composer dependencies + uses: actions/cache@v4 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: ${{ runner.os }}-php-${{ inputs.php_version }}-${{ hashFiles('**/composer.lock') }} + restore-keys: ${{ runner.os }}-php-${{ inputs.php_version }}- + + - name: Install Phing + shell: bash + run: composer global require phing/phing:^2.17 + + - name: Install PHP dependencies + shell: bash + run: composer install --prefer-dist --no-progress --no-interaction diff --git a/.phpcs b/.phpcs new file mode 100644 index 0000000..d264339 --- /dev/null +++ b/.phpcs @@ -0,0 +1,2 @@ +src/ +tests/ diff --git a/composer.json b/composer.json index d21b3a4..72ee43b 100644 --- a/composer.json +++ b/composer.json @@ -10,14 +10,6 @@ ], "homepage": "https://github.com/imjoehaines/flowdception", "license": "Unlicense", - "authors": [ - { - "name": "Joe Haines", - "email": "hello@joehaines.co.uk", - "homepage": "https://www.joehaines.co.uk", - "role": "Developer" - } - ], "autoload": { "psr-4": { "Imjoehaines\\Flowder\\Codeception\\": "src/" @@ -28,18 +20,37 @@ "Imjoehaines\\Flowder\\Codeception\\Test\\": "tests/" } }, - "require-dev": { - "phpunit/phpunit": "^9.5.1" - }, "require": { - "php": "^8", + "php": "^8.1", "imjoehaines/flowder": "^2.1", "codeception/codeception": "^5" }, + "require-dev": { + "phpunit/phpunit": "^9.5.1", + "dealerdirect/phpcodesniffer-composer-installer": "^1", + "phpcompatibility/php-compatibility": "dev-develop", + "phpstan/phpstan": "^2.1", + "rector/rector": "^2.1", + "squizlabs/php_codesniffer": "^3.13" + }, + "scripts": { + "sniffer:php81": "phpcs -p . --ignore=vendor/* --standard=vendor/phpcompatibility/php-compatibility/PHPCompatibility --extensions=php --report-full=compatibility.txt --runtime-set testVersion 8.1", + "sniffer:php84": "phpcs -p . --ignore=vendor/* --standard=vendor/phpcompatibility/php-compatibility/PHPCompatibility --extensions=php --report-full=compatibility.txt --runtime-set testVersion 8.4", + "rector": "./vendor/bin/rector process --dry-run", + "rector:fix": "./vendor/bin/rector process", + "stan": "./vendor/bin/phpstan analyse --memory-limit=2G --configuration=phpstan.neon", + "stan:baseline": "./vendor/bin/phpstan analyse --memory-limit=2G --configuration=phpstan.neon --generate-baseline", + "test": "./vendor/bin/phpunit tests/" + }, "repositories": [ { "type": "vcs", "url": "git@github.com:may-den/flowder.git" } - ] + ], + "config": { + "allow-plugins": { + "dealerdirect/phpcodesniffer-composer-installer": true + } + } } diff --git a/composer.lock b/composer.lock index c2a0e43..0e2a76a 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": "a2fa9e9c151963d0d4253cda26ba09f8", + "content-hash": "00061d5693937361598c52b9f2cbd0ab", "packages": [ { "name": "behat/gherkin", @@ -3369,15 +3369,503 @@ "time": "2023-11-20T00:12:19+00:00" } ], - "packages-dev": [], + "packages-dev": [ + { + "name": "dealerdirect/phpcodesniffer-composer-installer", + "version": "v1.1.2", + "source": { + "type": "git", + "url": "https://github.com/PHPCSStandards/composer-installer.git", + "reference": "e9cf5e4bbf7eeaf9ef5db34938942602838fc2b1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCSStandards/composer-installer/zipball/e9cf5e4bbf7eeaf9ef5db34938942602838fc2b1", + "reference": "e9cf5e4bbf7eeaf9ef5db34938942602838fc2b1", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^2.2", + "php": ">=5.4", + "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0" + }, + "require-dev": { + "composer/composer": "^2.2", + "ext-json": "*", + "ext-zip": "*", + "php-parallel-lint/php-parallel-lint": "^1.4.0", + "phpcompatibility/php-compatibility": "^9.0", + "yoast/phpunit-polyfills": "^1.0" + }, + "type": "composer-plugin", + "extra": { + "class": "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" + }, + "autoload": { + "psr-4": { + "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Franck Nijhof", + "email": "opensource@frenck.dev", + "homepage": "https://frenck.dev", + "role": "Open source developer" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/composer-installer/graphs/contributors" + } + ], + "description": "PHP_CodeSniffer Standards Composer Installer Plugin", + "keywords": [ + "PHPCodeSniffer", + "PHP_CodeSniffer", + "code quality", + "codesniffer", + "composer", + "installer", + "phpcbf", + "phpcs", + "plugin", + "qa", + "quality", + "standard", + "standards", + "style guide", + "stylecheck", + "tests" + ], + "support": { + "issues": "https://github.com/PHPCSStandards/composer-installer/issues", + "security": "https://github.com/PHPCSStandards/composer-installer/security/policy", + "source": "https://github.com/PHPCSStandards/composer-installer" + }, + "funding": [ + { + "url": "https://github.com/PHPCSStandards", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + }, + { + "url": "https://thanks.dev/u/gh/phpcsstandards", + "type": "thanks_dev" + } + ], + "time": "2025-07-17T20:45:56+00:00" + }, + { + "name": "phpcompatibility/php-compatibility", + "version": "dev-develop", + "source": { + "type": "git", + "url": "https://github.com/PHPCompatibility/PHPCompatibility.git", + "reference": "a32035ecd801d827b85c3d8fdb281a43660115b7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/a32035ecd801d827b85c3d8fdb281a43660115b7", + "reference": "a32035ecd801d827b85c3d8fdb281a43660115b7", + "shasum": "" + }, + "require": { + "php": ">=5.4", + "phpcsstandards/phpcsutils": "^1.1.0", + "squizlabs/php_codesniffer": "^3.13.0" + }, + "replace": { + "wimg/php-compatibility": "*" + }, + "require-dev": { + "php-parallel-lint/php-console-highlighter": "^1.0.0", + "php-parallel-lint/php-parallel-lint": "^1.4.0", + "phpcsstandards/phpcsdevcs": "^1.1.3", + "phpcsstandards/phpcsdevtools": "^1.2.0", + "phpunit/phpunit": "^4.8.36 || ^5.7.21 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4 || ^10.5.32 || ^11.3.3", + "yoast/phpunit-polyfills": "^1.0.5 || ^2.0 || ^3.0" + }, + "suggest": { + "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." + }, + "default-branch": true, + "type": "phpcodesniffer-standard", + "extra": { + "branch-alias": { + "dev-master": "9.x-dev", + "dev-develop": "10.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-or-later" + ], + "authors": [ + { + "name": "Wim Godden", + "homepage": "https://github.com/wimg", + "role": "lead" + }, + { + "name": "Juliette Reinders Folmer", + "homepage": "https://github.com/jrfnl", + "role": "lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCompatibility/PHPCompatibility/graphs/contributors" + } + ], + "description": "A set of sniffs for PHP_CodeSniffer that checks for PHP cross-version compatibility.", + "homepage": "https://techblog.wimgodden.be/tag/codesniffer/", + "keywords": [ + "compatibility", + "phpcs", + "standards", + "static analysis" + ], + "support": { + "issues": "https://github.com/PHPCompatibility/PHPCompatibility/issues", + "security": "https://github.com/PHPCompatibility/PHPCompatibility/security/policy", + "source": "https://github.com/PHPCompatibility/PHPCompatibility" + }, + "funding": [ + { + "url": "https://github.com/PHPCompatibility", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + }, + { + "url": "https://thanks.dev/u/gh/phpcompatibility", + "type": "thanks_dev" + } + ], + "time": "2025-08-06T19:48:56+00:00" + }, + { + "name": "phpcsstandards/phpcsutils", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/PHPCSStandards/PHPCSUtils.git", + "reference": "65355670ac17c34cd235cf9d3ceae1b9252c4dad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCSStandards/PHPCSUtils/zipball/65355670ac17c34cd235cf9d3ceae1b9252c4dad", + "reference": "65355670ac17c34cd235cf9d3ceae1b9252c4dad", + "shasum": "" + }, + "require": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.4.1 || ^0.5 || ^0.6.2 || ^0.7 || ^1.0", + "php": ">=5.4", + "squizlabs/php_codesniffer": "^3.13.0 || ^4.0" + }, + "require-dev": { + "ext-filter": "*", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.4.0", + "phpcsstandards/phpcsdevcs": "^1.1.6", + "yoast/phpunit-polyfills": "^1.1.0 || ^2.0.0 || ^3.0.0" + }, + "type": "phpcodesniffer-standard", + "extra": { + "branch-alias": { + "dev-stable": "1.x-dev", + "dev-develop": "1.x-dev" + } + }, + "autoload": { + "classmap": [ + "PHPCSUtils/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-or-later" + ], + "authors": [ + { + "name": "Juliette Reinders Folmer", + "homepage": "https://github.com/jrfnl", + "role": "lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/PHPCSUtils/graphs/contributors" + } + ], + "description": "A suite of utility functions for use with PHP_CodeSniffer", + "homepage": "https://phpcsutils.com/", + "keywords": [ + "PHP_CodeSniffer", + "phpcbf", + "phpcodesniffer-standard", + "phpcs", + "phpcs3", + "phpcs4", + "standards", + "static analysis", + "tokens", + "utility" + ], + "support": { + "docs": "https://phpcsutils.com/", + "issues": "https://github.com/PHPCSStandards/PHPCSUtils/issues", + "security": "https://github.com/PHPCSStandards/PHPCSUtils/security/policy", + "source": "https://github.com/PHPCSStandards/PHPCSUtils" + }, + "funding": [ + { + "url": "https://github.com/PHPCSStandards", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + }, + { + "url": "https://thanks.dev/u/gh/phpcsstandards", + "type": "thanks_dev" + } + ], + "time": "2025-06-12T04:32:33+00:00" + }, + { + "name": "phpstan/phpstan", + "version": "2.1.22", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan.git", + "reference": "41600c8379eb5aee63e9413fe9e97273e25d57e4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/41600c8379eb5aee63e9413fe9e97273e25d57e4", + "reference": "41600c8379eb5aee63e9413fe9e97273e25d57e4", + "shasum": "" + }, + "require": { + "php": "^7.4|^8.0" + }, + "conflict": { + "phpstan/phpstan-shim": "*" + }, + "bin": [ + "phpstan", + "phpstan.phar" + ], + "type": "library", + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPStan - PHP Static Analysis Tool", + "keywords": [ + "dev", + "static analysis" + ], + "support": { + "docs": "https://phpstan.org/user-guide/getting-started", + "forum": "https://github.com/phpstan/phpstan/discussions", + "issues": "https://github.com/phpstan/phpstan/issues", + "security": "https://github.com/phpstan/phpstan/security/policy", + "source": "https://github.com/phpstan/phpstan-src" + }, + "funding": [ + { + "url": "https://github.com/ondrejmirtes", + "type": "github" + }, + { + "url": "https://github.com/phpstan", + "type": "github" + } + ], + "time": "2025-08-04T19:17:37+00:00" + }, + { + "name": "rector/rector", + "version": "2.1.2", + "source": { + "type": "git", + "url": "https://github.com/rectorphp/rector.git", + "reference": "40a71441dd73fa150a66102f5ca1364c44fc8fff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/40a71441dd73fa150a66102f5ca1364c44fc8fff", + "reference": "40a71441dd73fa150a66102f5ca1364c44fc8fff", + "shasum": "" + }, + "require": { + "php": "^7.4|^8.0", + "phpstan/phpstan": "^2.1.18" + }, + "conflict": { + "rector/rector-doctrine": "*", + "rector/rector-downgrade-php": "*", + "rector/rector-phpunit": "*", + "rector/rector-symfony": "*" + }, + "suggest": { + "ext-dom": "To manipulate phpunit.xml via the custom-rule command" + }, + "bin": [ + "bin/rector" + ], + "type": "library", + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Instant Upgrade and Automated Refactoring of any PHP code", + "homepage": "https://getrector.com/", + "keywords": [ + "automation", + "dev", + "migration", + "refactoring" + ], + "support": { + "issues": "https://github.com/rectorphp/rector/issues", + "source": "https://github.com/rectorphp/rector/tree/2.1.2" + }, + "funding": [ + { + "url": "https://github.com/tomasvotruba", + "type": "github" + } + ], + "time": "2025-07-17T19:30:06+00:00" + }, + { + "name": "squizlabs/php_codesniffer", + "version": "3.13.2", + "source": { + "type": "git", + "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", + "reference": "5b5e3821314f947dd040c70f7992a64eac89025c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/5b5e3821314f947dd040c70f7992a64eac89025c", + "reference": "5b5e3821314f947dd040c70f7992a64eac89025c", + "shasum": "" + }, + "require": { + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4" + }, + "bin": [ + "bin/phpcbf", + "bin/phpcs" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Greg Sherwood", + "role": "Former lead" + }, + { + "name": "Juliette Reinders Folmer", + "role": "Current lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors" + } + ], + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer", + "keywords": [ + "phpcs", + "standards", + "static analysis" + ], + "support": { + "issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues", + "security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy", + "source": "https://github.com/PHPCSStandards/PHP_CodeSniffer", + "wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki" + }, + "funding": [ + { + "url": "https://github.com/PHPCSStandards", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + }, + { + "url": "https://thanks.dev/u/gh/phpcsstandards", + "type": "thanks_dev" + } + ], + "time": "2025-06-17T22:17:01+00:00" + } + ], "aliases": [], "minimum-stability": "stable", - "stability-flags": [], + "stability-flags": { + "phpcompatibility/php-compatibility": 20 + }, "prefer-stable": false, "prefer-lowest": false, "platform": { "php": "^8" }, - "platform-dev": [], + "platform-dev": {}, "plugin-api-version": "2.6.0" } diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon new file mode 100644 index 0000000..54955b7 --- /dev/null +++ b/phpstan-baseline.neon @@ -0,0 +1,7 @@ +parameters: + ignoreErrors: + - + message: '#^Static property Imjoehaines\\Flowder\\Codeception\\Flowdception\:\:\$flowder \(Imjoehaines\\Flowder\\Flowder\) in isset\(\) is not nullable\.$#' + identifier: isset.property + count: 1 + path: src/Flowdception.php diff --git a/phpstan.neon b/phpstan.neon new file mode 100644 index 0000000..490f4de --- /dev/null +++ b/phpstan.neon @@ -0,0 +1,14 @@ +includes: + - phpstan-baseline.neon + +parameters: + paths: + - src + + + # Level 10 is the highest level + level: 5 + + excludePaths: + - vendor/ + - tests/ diff --git a/rector.php b/rector.php new file mode 100644 index 0000000..52caecc --- /dev/null +++ b/rector.php @@ -0,0 +1,25 @@ +withPaths([ + __DIR__ . '/', + ]) + ->withImportNames(true, true, true, true) + ->withSkip([ + IfToSpaceshipRector::class, + TernaryToElvisRector::class, + AddTypeToConstRector::class, + CombineHostPortLdapUriRector::class, + __DIR__ . '/vendor', + ]) + ->withSets([LevelSetList::UP_TO_PHP_84]) + ->withParallel(240, 16, 10); From bc905412455cfd9ffa9dddb492741d8e5d8b8460 Mon Sep 17 00:00:00 2001 From: rossanderson75 Date: Thu, 7 Aug 2025 13:22:51 +0100 Subject: [PATCH 02/18] Test push --- phpstan.neon | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpstan.neon b/phpstan.neon index 490f4de..a7b9888 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -1,5 +1,5 @@ includes: - - phpstan-baseline.neon + # - phpstan-baseline.neon parameters: paths: From 4ff7482530e27445fff71aca98a96bee465db67d Mon Sep 17 00:00:00 2001 From: rossanderson75 Date: Thu, 7 Aug 2025 13:24:14 +0100 Subject: [PATCH 03/18] updo test --- phpstan.neon | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpstan.neon b/phpstan.neon index a7b9888..490f4de 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -1,5 +1,5 @@ includes: - # - phpstan-baseline.neon + - phpstan-baseline.neon parameters: paths: From 30b24358c547a17f458d85c268360056ee5f470e Mon Sep 17 00:00:00 2001 From: rossanderson75 Date: Thu, 7 Aug 2025 13:41:49 +0100 Subject: [PATCH 04/18] Swaps over git urls to the may-den version --- composer.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/composer.json b/composer.json index 72ee43b..f542f34 100644 --- a/composer.json +++ b/composer.json @@ -8,16 +8,16 @@ "fixtures", "fixture-loading" ], - "homepage": "https://github.com/imjoehaines/flowdception", + "homepage": "https://github.com/may-den/flowdception/", "license": "Unlicense", "autoload": { "psr-4": { - "Imjoehaines\\Flowder\\Codeception\\": "src/" + "may-den\\Flowder\\Codeception\\": "src/" } }, "autoload-dev": { "psr-4": { - "Imjoehaines\\Flowder\\Codeception\\Test\\": "tests/" + "may-den\\Flowder\\Codeception\\Test\\": "tests/" } }, "require": { From 47d7bfff7203b63de59f91f153d4bb726bc14b58 Mon Sep 17 00:00:00 2001 From: rossanderson75 Date: Thu, 7 Aug 2025 13:46:02 +0100 Subject: [PATCH 05/18] Delete travis.yml file --- .travis.yml | 14 -------------- 1 file changed, 14 deletions(-) delete mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 80b88d2..0000000 --- a/.travis.yml +++ /dev/null @@ -1,14 +0,0 @@ -dist: focal -language: php -php: - - 8.1 - - 8.2 - -before_install: - - sudo apt-get install libonig5 - -before_script: - - composer install --prefer-dist --no-progress - -script: - - ./vendor/bin/phpunit tests --testdox From 74356c76d0159722d4b464146c65ad9606af2e94 Mon Sep 17 00:00:00 2001 From: rossanderson75 Date: Thu, 7 Aug 2025 13:55:00 +0100 Subject: [PATCH 06/18] Updates name for the may-den version --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index f542f34..f0c15aa 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,5 @@ { - "name": "imjoehaines/flowdception", + "name": "may-den/flowdception", "description": "A Codeception Extension for Flowder", "keywords": [ "testing", From c24ae7d7edfd426769ef160a95d44003c3cbbfb7 Mon Sep 17 00:00:00 2001 From: rossanderson75 Date: Thu, 7 Aug 2025 14:01:45 +0100 Subject: [PATCH 07/18] Adds psr-12 checks and removes unwanted config --- .github/workflows/php-reusable.yml | 7 ++----- composer.json | 2 ++ 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/php-reusable.yml b/.github/workflows/php-reusable.yml index 59e262c..95b4869 100644 --- a/.github/workflows/php-reusable.yml +++ b/.github/workflows/php-reusable.yml @@ -31,13 +31,9 @@ jobs: php_version: ${{ inputs.php_version }} COMPOSER_TOKEN: ${{ secrets.COMPOSER_TOKEN }} - # Install necessary packages - - name: Install linux packages - run: | - sudo apt-get install libonig5 # Testing Phase - - name: Run Codecept tests + - name: Run tests run: ./vendor/bin/phpunit tests/ # Code Quality Checks @@ -45,6 +41,7 @@ jobs: run: | composer sniffer:php81 composer sniffer:php84 + composer sniffer:psr12 # Code Quality Checks - name: Get files changed in PR for Rector diff --git a/composer.json b/composer.json index f0c15aa..b28bf71 100644 --- a/composer.json +++ b/composer.json @@ -36,6 +36,8 @@ "scripts": { "sniffer:php81": "phpcs -p . --ignore=vendor/* --standard=vendor/phpcompatibility/php-compatibility/PHPCompatibility --extensions=php --report-full=compatibility.txt --runtime-set testVersion 8.1", "sniffer:php84": "phpcs -p . --ignore=vendor/* --standard=vendor/phpcompatibility/php-compatibility/PHPCompatibility --extensions=php --report-full=compatibility.txt --runtime-set testVersion 8.4", + "sniffer:psr12": "phpcs -p . --ignore=vendor/* --standard=PSR12 --extensions=php --report-full=PSR12Report.txt -v", + "sniffer:fix-psr12": "./vendor/bin/phpcbf --file-list=.phpcs --standard=PSR12", "rector": "./vendor/bin/rector process --dry-run", "rector:fix": "./vendor/bin/rector process", "stan": "./vendor/bin/phpstan analyse --memory-limit=2G --configuration=phpstan.neon", From f532faababb52a7c3dd21f50cbe336151c99a692 Mon Sep 17 00:00:00 2001 From: rossanderson75 Date: Thu, 7 Aug 2025 16:28:52 +0100 Subject: [PATCH 08/18] updates rector file and sets phpcompatibility/php-compatibility to v 9.3 --- composer.json | 2 +- composer.lock | 773 ++++++++++++++++++++++---------------------------- rector.php | 3 +- 3 files changed, 347 insertions(+), 431 deletions(-) diff --git a/composer.json b/composer.json index b28bf71..b4197b3 100644 --- a/composer.json +++ b/composer.json @@ -28,7 +28,7 @@ "require-dev": { "phpunit/phpunit": "^9.5.1", "dealerdirect/phpcodesniffer-composer-installer": "^1", - "phpcompatibility/php-compatibility": "dev-develop", + "phpcompatibility/php-compatibility": "^9.3", "phpstan/phpstan": "^2.1", "rector/rector": "^2.1", "squizlabs/php_codesniffer": "^3.13" diff --git a/composer.lock b/composer.lock index 0e2a76a..704ac06 100644 --- a/composer.lock +++ b/composer.lock @@ -4,29 +4,35 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "00061d5693937361598c52b9f2cbd0ab", + "content-hash": "c38b413d0e9cae4f2369b7ecfd12c0b3", "packages": [ { "name": "behat/gherkin", - "version": "v4.9.0", + "version": "v4.14.0", "source": { "type": "git", "url": "https://github.com/Behat/Gherkin.git", - "reference": "0bc8d1e30e96183e4f36db9dc79caead300beff4" + "reference": "34c9b59c59355a7b4c53b9f041c8dbd1c8acc3b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Behat/Gherkin/zipball/0bc8d1e30e96183e4f36db9dc79caead300beff4", - "reference": "0bc8d1e30e96183e4f36db9dc79caead300beff4", + "url": "https://api.github.com/repos/Behat/Gherkin/zipball/34c9b59c59355a7b4c53b9f041c8dbd1c8acc3b4", + "reference": "34c9b59c59355a7b4c53b9f041c8dbd1c8acc3b4", "shasum": "" }, "require": { - "php": "~7.2|~8.0" + "composer-runtime-api": "^2.2", + "php": "8.1.* || 8.2.* || 8.3.* || 8.4.*" }, "require-dev": { - "cucumber/cucumber": "dev-gherkin-22.0.0", - "phpunit/phpunit": "~8|~9", - "symfony/yaml": "~3|~4|~5" + "cucumber/gherkin-monorepo": "dev-gherkin-v32.1.1", + "friendsofphp/php-cs-fixer": "^3.65", + "mikey179/vfsstream": "^1.6", + "phpstan/extension-installer": "^1", + "phpstan/phpstan": "^2", + "phpstan/phpstan-phpunit": "^2", + "phpunit/phpunit": "^10.5", + "symfony/yaml": "^5.4 || ^6.4 || ^7.0" }, "suggest": { "symfony/yaml": "If you want to parse features, represented in YAML files" @@ -38,8 +44,8 @@ } }, "autoload": { - "psr-0": { - "Behat\\Gherkin": "src/" + "psr-4": { + "Behat\\Gherkin\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -50,11 +56,11 @@ { "name": "Konstantin Kudryashov", "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" + "homepage": "https://everzet.com" } ], "description": "Gherkin DSL parser for PHP", - "homepage": "http://behat.org/", + "homepage": "https://behat.org/", "keywords": [ "BDD", "Behat", @@ -65,45 +71,45 @@ ], "support": { "issues": "https://github.com/Behat/Gherkin/issues", - "source": "https://github.com/Behat/Gherkin/tree/v4.9.0" + "source": "https://github.com/Behat/Gherkin/tree/v4.14.0" }, - "time": "2021-10-12T13:05:09+00:00" + "time": "2025-05-23T15:06:40+00:00" }, { "name": "codeception/codeception", - "version": "5.0.13", + "version": "5.2.2", "source": { "type": "git", "url": "https://github.com/Codeception/Codeception.git", - "reference": "713a90195efa2926566e24bfc623da703ff42bba" + "reference": "7d5e5b8736ee8eb9a3f08323a65fd7935270c8d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Codeception/zipball/713a90195efa2926566e24bfc623da703ff42bba", - "reference": "713a90195efa2926566e24bfc623da703ff42bba", + "url": "https://api.github.com/repos/Codeception/Codeception/zipball/7d5e5b8736ee8eb9a3f08323a65fd7935270c8d1", + "reference": "7d5e5b8736ee8eb9a3f08323a65fd7935270c8d1", "shasum": "" }, "require": { - "behat/gherkin": "^4.6.2", + "behat/gherkin": "^4.12", "codeception/lib-asserts": "^2.0", "codeception/stub": "^4.1", "ext-curl": "*", "ext-json": "*", "ext-mbstring": "*", - "php": "^8.0", - "phpunit/php-code-coverage": "^9.2 || ^10.0", - "phpunit/php-text-template": "^2.0 || ^3.0", - "phpunit/php-timer": "^5.0.3 || ^6.0", - "phpunit/phpunit": "^9.5.20 || ^10.0", + "php": "^8.1", + "phpunit/php-code-coverage": "^9.2 || ^10.0 || ^11.0 || ^12.0", + "phpunit/php-text-template": "^2.0 || ^3.0 || ^4.0 || ^5.0", + "phpunit/php-timer": "^5.0.3 || ^6.0 || ^7.0 || ^8.0", + "phpunit/phpunit": "^9.5.20 || ^10.0 || ^11.0 || ^12.0", "psy/psysh": "^0.11.2 || ^0.12", - "sebastian/comparator": "^4.0.5 || ^5.0", - "sebastian/diff": "^4.0.3 || ^5.0", - "symfony/console": ">=4.4.24 <8.0", - "symfony/css-selector": ">=4.4.24 <8.0", - "symfony/event-dispatcher": ">=4.4.24 <8.0", - "symfony/finder": ">=4.4.24 <8.0", - "symfony/var-dumper": ">=4.4.24 <8.0", - "symfony/yaml": ">=4.4.24 <8.0" + "sebastian/comparator": "^4.0.5 || ^5.0 || ^6.0 || ^7.0", + "sebastian/diff": "^4.0.3 || ^5.0 || ^6.0 || ^7.0", + "symfony/console": ">=5.4.24 <8.0", + "symfony/css-selector": ">=5.4.24 <8.0", + "symfony/event-dispatcher": ">=5.4.24 <8.0", + "symfony/finder": ">=5.4.24 <8.0", + "symfony/var-dumper": ">=5.4.24 <8.0", + "symfony/yaml": ">=5.4.24 <8.0" }, "conflict": { "codeception/lib-innerbrowser": "<3.1.3", @@ -115,7 +121,7 @@ }, "require-dev": { "codeception/lib-innerbrowser": "*@dev", - "codeception/lib-web": "^1.0", + "codeception/lib-web": "*@dev", "codeception/module-asserts": "*@dev", "codeception/module-cli": "*@dev", "codeception/module-db": "*@dev", @@ -124,8 +130,8 @@ "codeception/util-universalframework": "*@dev", "ext-simplexml": "*", "jetbrains/phpstorm-attributes": "^1.0", - "symfony/dotenv": ">=4.4.24 <8.0", - "symfony/process": ">=4.4.24 <8.0", + "symfony/dotenv": ">=5.4.24 <8.0", + "symfony/process": ">=5.4.24 <8.0", "vlucas/phpdotenv": "^5.1" }, "suggest": { @@ -141,6 +147,11 @@ "codecept" ], "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.2.x-dev" + } + }, "autoload": { "files": [ "functions.php" @@ -175,7 +186,7 @@ ], "support": { "issues": "https://github.com/Codeception/Codeception/issues", - "source": "https://github.com/Codeception/Codeception/tree/5.0.13" + "source": "https://github.com/Codeception/Codeception/tree/5.2.2" }, "funding": [ { @@ -183,20 +194,20 @@ "type": "open_collective" } ], - "time": "2023-12-22T19:32:40+00:00" + "time": "2025-05-07T12:48:28+00:00" }, { "name": "codeception/lib-asserts", - "version": "2.1.0", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/Codeception/lib-asserts.git", - "reference": "b8c7dff552249e560879c682ba44a4b963af91bc" + "reference": "06750a60af3ebc66faab4313981accec1be4eefc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/lib-asserts/zipball/b8c7dff552249e560879c682ba44a4b963af91bc", - "reference": "b8c7dff552249e560879c682ba44a4b963af91bc", + "url": "https://api.github.com/repos/Codeception/lib-asserts/zipball/06750a60af3ebc66faab4313981accec1be4eefc", + "reference": "06750a60af3ebc66faab4313981accec1be4eefc", "shasum": "" }, "require": { @@ -235,27 +246,27 @@ ], "support": { "issues": "https://github.com/Codeception/lib-asserts/issues", - "source": "https://github.com/Codeception/lib-asserts/tree/2.1.0" + "source": "https://github.com/Codeception/lib-asserts/tree/2.2.0" }, - "time": "2023-02-10T18:36:23+00:00" + "time": "2025-03-10T20:41:33+00:00" }, { "name": "codeception/stub", - "version": "4.1.2", + "version": "4.2.0", "source": { "type": "git", "url": "https://github.com/Codeception/Stub.git", - "reference": "f6bc56e33e3f5ba7a831dfb968c49b27cf1676ad" + "reference": "19014cec368cefc0579499779c451551cd288557" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Stub/zipball/f6bc56e33e3f5ba7a831dfb968c49b27cf1676ad", - "reference": "f6bc56e33e3f5ba7a831dfb968c49b27cf1676ad", + "url": "https://api.github.com/repos/Codeception/Stub/zipball/19014cec368cefc0579499779c451551cd288557", + "reference": "19014cec368cefc0579499779c451551cd288557", "shasum": "" }, "require": { - "php": "^7.4 | ^8.0", - "phpunit/phpunit": "^8.4 | ^9.0 | ^10.0 | 10.0.x-dev" + "php": "^8.1", + "phpunit/phpunit": "^8.4 | ^9.0 | ^10.0 | ^11 | ^12" }, "conflict": { "codeception/codeception": "<5.0.6" @@ -276,9 +287,9 @@ "description": "Flexible Stub wrapper for PHPUnit's Mock Builder", "support": { "issues": "https://github.com/Codeception/Stub/issues", - "source": "https://github.com/Codeception/Stub/tree/4.1.2" + "source": "https://github.com/Codeception/Stub/tree/4.2.0" }, - "time": "2023-10-07T19:22:36+00:00" + "time": "2025-08-01T08:15:29+00:00" }, { "name": "doctrine/instantiator", @@ -423,16 +434,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.11.1", + "version": "1.13.4", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a", + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a", "shasum": "" }, "require": { @@ -440,11 +451,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", @@ -470,7 +482,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.4" }, "funding": [ { @@ -478,20 +490,20 @@ "type": "tidelift" } ], - "time": "2023-03-08T13:26:56+00:00" + "time": "2025-08-01T08:46:24+00:00" }, { "name": "nikic/php-parser", - "version": "v5.0.0", + "version": "v5.6.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "4a21235f7e56e713259a6f76bf4b5ea08502b9dc" + "reference": "221b0d0fdf1369c71047ad1d18bb5880017bbc56" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4a21235f7e56e713259a6f76bf4b5ea08502b9dc", - "reference": "4a21235f7e56e713259a6f76bf4b5ea08502b9dc", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/221b0d0fdf1369c71047ad1d18bb5880017bbc56", + "reference": "221b0d0fdf1369c71047ad1d18bb5880017bbc56", "shasum": "" }, "require": { @@ -502,7 +514,7 @@ }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^9.0" }, "bin": [ "bin/php-parse" @@ -534,26 +546,27 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.6.0" }, - "time": "2024-01-07T17:17:35+00:00" + "time": "2025-07-27T20:03:57+00:00" }, { "name": "phar-io/manifest", - "version": "2.0.3", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + "reference": "54750ef60c58e43759730615a392c31c80e23176" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", "shasum": "" }, "require": { "ext-dom": "*", + "ext-libxml": "*", "ext-phar": "*", "ext-xmlwriter": "*", "phar-io/version": "^3.0.1", @@ -594,9 +607,15 @@ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", "support": { "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.3" + "source": "https://github.com/phar-io/manifest/tree/2.0.4" }, - "time": "2021-07-20T11:28:43+00:00" + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+00:00" }, { "name": "phar-io/version", @@ -651,35 +670,35 @@ }, { "name": "phpunit/php-code-coverage", - "version": "9.2.30", + "version": "9.2.32", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "ca2bd87d2f9215904682a9cb9bb37dda98e76089" + "reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ca2bd87d2f9215904682a9cb9bb37dda98e76089", - "reference": "ca2bd87d2f9215904682a9cb9bb37dda98e76089", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/85402a822d1ecf1db1096959413d35e1c37cf1a5", + "reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5", "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": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" + "phpunit/php-file-iterator": "^3.0.6", + "phpunit/php-text-template": "^2.0.4", + "sebastian/code-unit-reverse-lookup": "^2.0.3", + "sebastian/complexity": "^2.0.3", + "sebastian/environment": "^5.1.5", + "sebastian/lines-of-code": "^1.0.4", + "sebastian/version": "^3.0.2", + "theseer/tokenizer": "^1.2.3" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^9.6" }, "suggest": { "ext-pcov": "PHP extension that provides line coverage", @@ -688,7 +707,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.2-dev" + "dev-main": "9.2.x-dev" } }, "autoload": { @@ -717,7 +736,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/9.2.30" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.32" }, "funding": [ { @@ -725,7 +744,7 @@ "type": "github" } ], - "time": "2023-12-22T06:47:57+00:00" + "time": "2024-08-22T04:23:01+00:00" }, { "name": "phpunit/php-file-iterator", @@ -970,45 +989,45 @@ }, { "name": "phpunit/phpunit", - "version": "9.6.16", + "version": "9.6.23", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "3767b2c56ce02d01e3491046f33466a1ae60a37f" + "reference": "43d2cb18d0675c38bd44982a5d1d88f6d53d8d95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3767b2c56ce02d01e3491046f33466a1ae60a37f", - "reference": "3767b2c56ce02d01e3491046f33466a1ae60a37f", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/43d2cb18d0675c38bd44982a5d1d88f6d53d8d95", + "reference": "43d2cb18d0675c38bd44982a5d1d88f6d53d8d95", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.3.1 || ^2", + "doctrine/instantiator": "^1.5.0 || ^2", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", "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.13.1", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", "php": ">=7.3", - "phpunit/php-code-coverage": "^9.2.28", - "phpunit/php-file-iterator": "^3.0.5", + "phpunit/php-code-coverage": "^9.2.32", + "phpunit/php-file-iterator": "^3.0.6", "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", + "phpunit/php-text-template": "^2.0.4", + "phpunit/php-timer": "^5.0.3", + "sebastian/cli-parser": "^1.0.2", + "sebastian/code-unit": "^1.0.8", "sebastian/comparator": "^4.0.8", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.5", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^3.2", + "sebastian/diff": "^4.0.6", + "sebastian/environment": "^5.1.5", + "sebastian/exporter": "^4.0.6", + "sebastian/global-state": "^5.0.7", + "sebastian/object-enumerator": "^4.0.4", + "sebastian/resource-operations": "^3.0.4", + "sebastian/type": "^3.2.1", "sebastian/version": "^3.0.2" }, "suggest": { @@ -1053,7 +1072,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.16" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.23" }, "funding": [ { @@ -1064,12 +1083,20 @@ "url": "https://github.com/sebastianbergmann", "type": "github" }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, { "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", "type": "tidelift" } ], - "time": "2024-01-19T07:03:14+00:00" + "time": "2025-05-02T06:40:34+00:00" }, { "name": "psr/container", @@ -1176,16 +1203,16 @@ }, { "name": "psy/psysh", - "version": "v0.12.0", + "version": "v0.12.10", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "750bf031a48fd07c673dbe3f11f72362ea306d0d" + "reference": "6e80abe6f2257121f1eb9a4c55bf29d921025b22" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/750bf031a48fd07c673dbe3f11f72362ea306d0d", - "reference": "750bf031a48fd07c673dbe3f11f72362ea306d0d", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/6e80abe6f2257121f1eb9a4c55bf29d921025b22", + "reference": "6e80abe6f2257121f1eb9a4c55bf29d921025b22", "shasum": "" }, "require": { @@ -1212,12 +1239,12 @@ ], "type": "library", "extra": { - "branch-alias": { - "dev-main": "0.12.x-dev" - }, "bamarni-bin": { "bin-links": false, "forward-command": false + }, + "branch-alias": { + "dev-main": "0.12.x-dev" } }, "autoload": { @@ -1235,12 +1262,11 @@ "authors": [ { "name": "Justin Hileman", - "email": "justin@justinhileman.info", - "homepage": "http://justinhileman.com" + "email": "justin@justinhileman.info" } ], "description": "An interactive shell for modern PHP.", - "homepage": "http://psysh.org", + "homepage": "https://psysh.org", "keywords": [ "REPL", "console", @@ -1249,22 +1275,22 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.12.0" + "source": "https://github.com/bobthecow/psysh/tree/v0.12.10" }, - "time": "2023-12-20T15:28:09+00:00" + "time": "2025-08-04T12:39:37+00:00" }, { "name": "sebastian/cli-parser", - "version": "1.0.1", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/2b56bea83a09de3ac06bb18b92f068e60cc6f50b", + "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b", "shasum": "" }, "require": { @@ -1299,7 +1325,7 @@ "homepage": "https://github.com/sebastianbergmann/cli-parser", "support": { "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.2" }, "funding": [ { @@ -1307,7 +1333,7 @@ "type": "github" } ], - "time": "2020-09-28T06:08:49+00:00" + "time": "2024-03-02T06:27:43+00:00" }, { "name": "sebastian/code-unit", @@ -1553,16 +1579,16 @@ }, { "name": "sebastian/diff", - "version": "4.0.5", + "version": "4.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131" + "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131", - "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ba01945089c3a293b01ba9badc29ad55b106b0bc", + "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc", "shasum": "" }, "require": { @@ -1607,7 +1633,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.5" + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.6" }, "funding": [ { @@ -1615,7 +1641,7 @@ "type": "github" } ], - "time": "2023-05-07T05:35:17+00:00" + "time": "2024-03-02T06:30:58+00:00" }, { "name": "sebastian/environment", @@ -1682,16 +1708,16 @@ }, { "name": "sebastian/exporter", - "version": "4.0.5", + "version": "4.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d" + "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", - "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/78c00df8f170e02473b682df15bfcdacc3d32d72", + "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72", "shasum": "" }, "require": { @@ -1747,7 +1773,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.6" }, "funding": [ { @@ -1755,20 +1781,20 @@ "type": "github" } ], - "time": "2022-09-14T06:03:37+00:00" + "time": "2024-03-02T06:33:00+00:00" }, { "name": "sebastian/global-state", - "version": "5.0.6", + "version": "5.0.7", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bde739e7565280bda77be70044ac1047bc007e34" + "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bde739e7565280bda77be70044ac1047bc007e34", - "reference": "bde739e7565280bda77be70044ac1047bc007e34", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", + "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", "shasum": "" }, "require": { @@ -1811,7 +1837,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.6" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.7" }, "funding": [ { @@ -1819,7 +1845,7 @@ "type": "github" } ], - "time": "2023-08-02T09:26:13+00:00" + "time": "2024-03-02T06:35:11+00:00" }, { "name": "sebastian/lines-of-code", @@ -2055,16 +2081,16 @@ }, { "name": "sebastian/resource-operations", - "version": "3.0.3", + "version": "3.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" + "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/05d5692a7993ecccd56a03e40cd7e5b09b1d404e", + "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e", "shasum": "" }, "require": { @@ -2076,7 +2102,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -2097,8 +2123,7 @@ "description": "Provides a list of PHP built-in functions that operate on resources", "homepage": "https://www.github.com/sebastianbergmann/resource-operations", "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.4" }, "funding": [ { @@ -2106,7 +2131,7 @@ "type": "github" } ], - "time": "2020-09-28T06:45:17+00:00" + "time": "2024-03-14T16:00:52+00:00" }, { "name": "sebastian/type", @@ -2219,16 +2244,16 @@ }, { "name": "symfony/console", - "version": "v6.4.2", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "0254811a143e6bc6c8deea08b589a7e68a37f625" + "reference": "59266a5bf6a596e3e0844fd95e6ad7ea3c1d3350" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/0254811a143e6bc6c8deea08b589a7e68a37f625", - "reference": "0254811a143e6bc6c8deea08b589a7e68a37f625", + "url": "https://api.github.com/repos/symfony/console/zipball/59266a5bf6a596e3e0844fd95e6ad7ea3c1d3350", + "reference": "59266a5bf6a596e3e0844fd95e6ad7ea3c1d3350", "shasum": "" }, "require": { @@ -2293,7 +2318,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.2" + "source": "https://github.com/symfony/console/tree/v6.4.24" }, "funding": [ { @@ -2304,25 +2329,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-12-10T16:15:48+00:00" + "time": "2025-07-30T10:38:54+00:00" }, { "name": "symfony/css-selector", - "version": "v6.4.0", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "d036c6c0d0b09e24a14a35f8292146a658f986e4" + "reference": "9b784413143701aa3c94ac1869a159a9e53e8761" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/d036c6c0d0b09e24a14a35f8292146a658f986e4", - "reference": "d036c6c0d0b09e24a14a35f8292146a658f986e4", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/9b784413143701aa3c94ac1869a159a9e53e8761", + "reference": "9b784413143701aa3c94ac1869a159a9e53e8761", "shasum": "" }, "require": { @@ -2358,7 +2387,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v6.4.0" + "source": "https://github.com/symfony/css-selector/tree/v6.4.24" }, "funding": [ { @@ -2369,25 +2398,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-10-31T08:40:20+00:00" + "time": "2025-07-10T08:14:14+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.4.0", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62" }, "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/63afe740e99a13ba87ec199bb07bbdee937a5b62", + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62", "shasum": "" }, "require": { @@ -2395,12 +2428,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.6-dev" } }, "autoload": { @@ -2425,7 +2458,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.6.0" }, "funding": [ { @@ -2441,20 +2474,20 @@ "type": "tidelift" } ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v6.4.2", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "e95216850555cd55e71b857eb9d6c2674124603a" + "reference": "307a09d8d7228d14a05e5e05b95fffdacab032b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/e95216850555cd55e71b857eb9d6c2674124603a", - "reference": "e95216850555cd55e71b857eb9d6c2674124603a", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/307a09d8d7228d14a05e5e05b95fffdacab032b2", + "reference": "307a09d8d7228d14a05e5e05b95fffdacab032b2", "shasum": "" }, "require": { @@ -2505,7 +2538,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.2" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.24" }, "funding": [ { @@ -2516,25 +2549,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-12-27T22:16:42+00:00" + "time": "2025-07-10T08:14:14+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.4.0", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "a76aed96a42d2b521153fb382d418e30d18b59df" + "reference": "59eb412e93815df44f05f342958efa9f46b1e586" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df", - "reference": "a76aed96a42d2b521153fb382d418e30d18b59df", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/59eb412e93815df44f05f342958efa9f46b1e586", + "reference": "59eb412e93815df44f05f342958efa9f46b1e586", "shasum": "" }, "require": { @@ -2543,12 +2580,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.6-dev" } }, "autoload": { @@ -2581,7 +2618,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.6.0" }, "funding": [ { @@ -2597,20 +2634,20 @@ "type": "tidelift" } ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/finder", - "version": "v6.4.0", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "11d736e97f116ac375a81f96e662911a34cd50ce" + "reference": "73089124388c8510efb8d2d1689285d285937b08" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/11d736e97f116ac375a81f96e662911a34cd50ce", - "reference": "11d736e97f116ac375a81f96e662911a34cd50ce", + "url": "https://api.github.com/repos/symfony/finder/zipball/73089124388c8510efb8d2d1689285d285937b08", + "reference": "73089124388c8510efb8d2d1689285d285937b08", "shasum": "" }, "require": { @@ -2645,7 +2682,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.4.0" + "source": "https://github.com/symfony/finder/tree/v6.4.24" }, "funding": [ { @@ -2656,29 +2693,33 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-10-31T17:30:12+00:00" + "time": "2025-07-15T12:02:45+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.28.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "provide": { "ext-ctype": "*" @@ -2688,12 +2729,9 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -2727,7 +2765,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.32.0" }, "funding": [ { @@ -2743,36 +2781,33 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.28.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "875e90aeea2777b6f135677f618529449334a612" + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", - "reference": "875e90aeea2777b6f135677f618529449334a612", + "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" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -2808,7 +2843,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.32.0" }, "funding": [ { @@ -2824,36 +2859,33 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.28.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" + "reference": "3833d7255cc303546435cb650316bff708a1c75c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", - "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "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" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -2892,7 +2924,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.32.0" }, "funding": [ { @@ -2908,24 +2940,25 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.28.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "42292d99c55abe617799667f454222c54c60e229" + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", - "reference": "42292d99c55abe617799667f454222c54c60e229", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493", + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493", "shasum": "" }, "require": { - "php": ">=7.1" + "ext-iconv": "*", + "php": ">=7.2" }, "provide": { "ext-mbstring": "*" @@ -2935,12 +2968,9 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -2975,7 +3005,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.32.0" }, "funding": [ { @@ -2991,37 +3021,38 @@ "type": "tidelift" } ], - "time": "2023-07-28T09:04:16+00:00" + "time": "2024-12-23T08:48:59+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.4.1", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0" + "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4" }, "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/f021b05a130d35510bd6b25fe9053c2a8a15d5d4", + "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4", "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.6-dev" } }, "autoload": { @@ -3057,7 +3088,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.4.1" + "source": "https://github.com/symfony/service-contracts/tree/v3.6.0" }, "funding": [ { @@ -3073,20 +3104,20 @@ "type": "tidelift" } ], - "time": "2023-12-26T14:02:43+00:00" + "time": "2025-04-25T09:37:31+00:00" }, { "name": "symfony/string", - "version": "v6.4.2", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "7cb80bc10bfcdf6b5492741c0b9357dac66940bc" + "reference": "f0ce0bd36a3accb4a225435be077b4b4875587f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/7cb80bc10bfcdf6b5492741c0b9357dac66940bc", - "reference": "7cb80bc10bfcdf6b5492741c0b9357dac66940bc", + "url": "https://api.github.com/repos/symfony/string/zipball/f0ce0bd36a3accb4a225435be077b4b4875587f4", + "reference": "f0ce0bd36a3accb4a225435be077b4b4875587f4", "shasum": "" }, "require": { @@ -3143,7 +3174,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.4.2" + "source": "https://github.com/symfony/string/tree/v6.4.24" }, "funding": [ { @@ -3154,25 +3185,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-12-10T16:15:48+00:00" + "time": "2025-07-10T08:14:14+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.4.2", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "68d6573ec98715ddcae5a0a85bee3c1c27a4c33f" + "reference": "aa29484ce0544bd69fa9f0df902e5ed7b7fe5034" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/68d6573ec98715ddcae5a0a85bee3c1c27a4c33f", - "reference": "68d6573ec98715ddcae5a0a85bee3c1c27a4c33f", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/aa29484ce0544bd69fa9f0df902e5ed7b7fe5034", + "reference": "aa29484ce0544bd69fa9f0df902e5ed7b7fe5034", "shasum": "" }, "require": { @@ -3184,7 +3219,6 @@ "symfony/console": "<5.4" }, "require-dev": { - "ext-iconv": "*", "symfony/console": "^5.4|^6.0|^7.0", "symfony/error-handler": "^6.3|^7.0", "symfony/http-kernel": "^5.4|^6.0|^7.0", @@ -3228,7 +3262,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.4.2" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.24" }, "funding": [ { @@ -3239,25 +3273,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-12-28T19:16:56+00:00" + "time": "2025-07-29T18:40:01+00:00" }, { "name": "symfony/yaml", - "version": "v6.4.0", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "4f9237a1bb42455d609e6687d2613dde5b41a587" + "reference": "742a8efc94027624b36b10ba58e23d402f961f51" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/4f9237a1bb42455d609e6687d2613dde5b41a587", - "reference": "4f9237a1bb42455d609e6687d2613dde5b41a587", + "url": "https://api.github.com/repos/symfony/yaml/zipball/742a8efc94027624b36b10ba58e23d402f961f51", + "reference": "742a8efc94027624b36b10ba58e23d402f961f51", "shasum": "" }, "require": { @@ -3300,7 +3338,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.4.0" + "source": "https://github.com/symfony/yaml/tree/v6.4.24" }, "funding": [ { @@ -3311,25 +3349,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-11-06T11:00:25+00:00" + "time": "2025-07-10T08:14:14+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.2", + "version": "1.2.3", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96" + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b2ad5003ca10d4ee50a12da31de12a5774ba6b96", - "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", "shasum": "" }, "require": { @@ -3358,7 +3400,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.2" + "source": "https://github.com/theseer/tokenizer/tree/1.2.3" }, "funding": [ { @@ -3366,7 +3408,7 @@ "type": "github" } ], - "time": "2023-11-20T00:12:19+00:00" + "time": "2024-03-03T12:36:25+00:00" } ], "packages-dev": [ @@ -3468,45 +3510,33 @@ }, { "name": "phpcompatibility/php-compatibility", - "version": "dev-develop", + "version": "9.3.5", "source": { "type": "git", "url": "https://github.com/PHPCompatibility/PHPCompatibility.git", - "reference": "a32035ecd801d827b85c3d8fdb281a43660115b7" + "reference": "9fb324479acf6f39452e0655d2429cc0d3914243" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/a32035ecd801d827b85c3d8fdb281a43660115b7", - "reference": "a32035ecd801d827b85c3d8fdb281a43660115b7", + "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/9fb324479acf6f39452e0655d2429cc0d3914243", + "reference": "9fb324479acf6f39452e0655d2429cc0d3914243", "shasum": "" }, "require": { - "php": ">=5.4", - "phpcsstandards/phpcsutils": "^1.1.0", - "squizlabs/php_codesniffer": "^3.13.0" + "php": ">=5.3", + "squizlabs/php_codesniffer": "^2.3 || ^3.0.2" }, - "replace": { - "wimg/php-compatibility": "*" + "conflict": { + "squizlabs/php_codesniffer": "2.6.2" }, "require-dev": { - "php-parallel-lint/php-console-highlighter": "^1.0.0", - "php-parallel-lint/php-parallel-lint": "^1.4.0", - "phpcsstandards/phpcsdevcs": "^1.1.3", - "phpcsstandards/phpcsdevtools": "^1.2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7.21 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4 || ^10.5.32 || ^11.3.3", - "yoast/phpunit-polyfills": "^1.0.5 || ^2.0 || ^3.0" + "phpunit/phpunit": "~4.5 || ^5.0 || ^6.0 || ^7.0" }, "suggest": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically.", "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." }, - "default-branch": true, "type": "phpcodesniffer-standard", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev", - "dev-develop": "10.x-dev" - } - }, "notification-url": "https://packagist.org/downloads/", "license": [ "LGPL-3.0-or-later" @@ -3528,130 +3558,17 @@ } ], "description": "A set of sniffs for PHP_CodeSniffer that checks for PHP cross-version compatibility.", - "homepage": "https://techblog.wimgodden.be/tag/codesniffer/", + "homepage": "http://techblog.wimgodden.be/tag/codesniffer/", "keywords": [ "compatibility", "phpcs", - "standards", - "static analysis" + "standards" ], "support": { "issues": "https://github.com/PHPCompatibility/PHPCompatibility/issues", - "security": "https://github.com/PHPCompatibility/PHPCompatibility/security/policy", "source": "https://github.com/PHPCompatibility/PHPCompatibility" }, - "funding": [ - { - "url": "https://github.com/PHPCompatibility", - "type": "github" - }, - { - "url": "https://github.com/jrfnl", - "type": "github" - }, - { - "url": "https://opencollective.com/php_codesniffer", - "type": "open_collective" - }, - { - "url": "https://thanks.dev/u/gh/phpcompatibility", - "type": "thanks_dev" - } - ], - "time": "2025-08-06T19:48:56+00:00" - }, - { - "name": "phpcsstandards/phpcsutils", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/PHPCSStandards/PHPCSUtils.git", - "reference": "65355670ac17c34cd235cf9d3ceae1b9252c4dad" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHPCSUtils/zipball/65355670ac17c34cd235cf9d3ceae1b9252c4dad", - "reference": "65355670ac17c34cd235cf9d3ceae1b9252c4dad", - "shasum": "" - }, - "require": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.4.1 || ^0.5 || ^0.6.2 || ^0.7 || ^1.0", - "php": ">=5.4", - "squizlabs/php_codesniffer": "^3.13.0 || ^4.0" - }, - "require-dev": { - "ext-filter": "*", - "php-parallel-lint/php-console-highlighter": "^1.0", - "php-parallel-lint/php-parallel-lint": "^1.4.0", - "phpcsstandards/phpcsdevcs": "^1.1.6", - "yoast/phpunit-polyfills": "^1.1.0 || ^2.0.0 || ^3.0.0" - }, - "type": "phpcodesniffer-standard", - "extra": { - "branch-alias": { - "dev-stable": "1.x-dev", - "dev-develop": "1.x-dev" - } - }, - "autoload": { - "classmap": [ - "PHPCSUtils/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0-or-later" - ], - "authors": [ - { - "name": "Juliette Reinders Folmer", - "homepage": "https://github.com/jrfnl", - "role": "lead" - }, - { - "name": "Contributors", - "homepage": "https://github.com/PHPCSStandards/PHPCSUtils/graphs/contributors" - } - ], - "description": "A suite of utility functions for use with PHP_CodeSniffer", - "homepage": "https://phpcsutils.com/", - "keywords": [ - "PHP_CodeSniffer", - "phpcbf", - "phpcodesniffer-standard", - "phpcs", - "phpcs3", - "phpcs4", - "standards", - "static analysis", - "tokens", - "utility" - ], - "support": { - "docs": "https://phpcsutils.com/", - "issues": "https://github.com/PHPCSStandards/PHPCSUtils/issues", - "security": "https://github.com/PHPCSStandards/PHPCSUtils/security/policy", - "source": "https://github.com/PHPCSStandards/PHPCSUtils" - }, - "funding": [ - { - "url": "https://github.com/PHPCSStandards", - "type": "github" - }, - { - "url": "https://github.com/jrfnl", - "type": "github" - }, - { - "url": "https://opencollective.com/php_codesniffer", - "type": "open_collective" - }, - { - "url": "https://thanks.dev/u/gh/phpcsstandards", - "type": "thanks_dev" - } - ], - "time": "2025-06-12T04:32:33+00:00" + "time": "2019-12-27T09:44:58+00:00" }, { "name": "phpstan/phpstan", @@ -3858,13 +3775,11 @@ ], "aliases": [], "minimum-stability": "stable", - "stability-flags": { - "phpcompatibility/php-compatibility": 20 - }, + "stability-flags": {}, "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "^8" + "php": "^8.1" }, "platform-dev": {}, "plugin-api-version": "2.6.0" diff --git a/rector.php b/rector.php index 52caecc..0bf44f5 100644 --- a/rector.php +++ b/rector.php @@ -11,7 +11,8 @@ return RectorConfig::configure() ->withPaths([ - __DIR__ . '/', + __DIR__ . '/src', + __DIR__ . '/tests', ]) ->withImportNames(true, true, true, true) ->withSkip([ From 6e189f74bc7bbd5a50cfae8f9a4cbee24e5abb8e Mon Sep 17 00:00:00 2001 From: rossanderson75 Date: Thu, 7 Aug 2025 18:18:28 +0100 Subject: [PATCH 09/18] Undoes autload changes --- composer.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index b4197b3..e018a18 100644 --- a/composer.json +++ b/composer.json @@ -12,12 +12,12 @@ "license": "Unlicense", "autoload": { "psr-4": { - "may-den\\Flowder\\Codeception\\": "src/" + "Imjoehaines\\Flowder\\Codeception\\": "src/" } }, "autoload-dev": { "psr-4": { - "may-den\\Flowder\\Codeception\\Test\\": "tests/" + "Imjoehaines\\Flowder\\Codeception\\Test\\": "tests/" } }, "require": { From ceaad5ced827212e86591b7ca4e2e2ec7a2ae847 Mon Sep 17 00:00:00 2001 From: rossanderson75 Date: Thu, 7 Aug 2025 18:31:44 +0100 Subject: [PATCH 10/18] Applies Recotr fixes --- src/Flowdception.php | 1 - tests/Integration/FlowdceptionTest.php | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/Flowdception.php b/src/Flowdception.php index d15fd97..8a09446 100644 --- a/src/Flowdception.php +++ b/src/Flowdception.php @@ -5,7 +5,6 @@ use LogicException; use Codeception\Events; use Codeception\Extension; -use Codeception\Event\TestEvent; use Imjoehaines\Flowder\Flowder; final class Flowdception extends Extension diff --git a/tests/Integration/FlowdceptionTest.php b/tests/Integration/FlowdceptionTest.php index d0d38c8..2256558 100644 --- a/tests/Integration/FlowdceptionTest.php +++ b/tests/Integration/FlowdceptionTest.php @@ -16,8 +16,7 @@ class FlowdceptionTest extends TestCase public function testItThrowsWhenNotBootstrapped() { $this->expectException( - LogicException::class, - 'Flowdception must be configured by calling Flowdception::bootstrap before any tests run' + LogicException::class ); $flowdception = new Flowdception([], []); From 4ccd0d1cf5e4ac47fd9bee899f49967b5287fe80 Mon Sep 17 00:00:00 2001 From: rossanderson75 Date: Fri, 8 Aug 2025 09:41:25 +0100 Subject: [PATCH 11/18] Sets phpcompatibility/php-compatibility back to dev-develop --- composer.json | 2 +- composer.lock | 157 +++++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 143 insertions(+), 16 deletions(-) diff --git a/composer.json b/composer.json index e018a18..acde1c4 100644 --- a/composer.json +++ b/composer.json @@ -28,7 +28,7 @@ "require-dev": { "phpunit/phpunit": "^9.5.1", "dealerdirect/phpcodesniffer-composer-installer": "^1", - "phpcompatibility/php-compatibility": "^9.3", + "phpcompatibility/php-compatibility": "dev-develop", "phpstan/phpstan": "^2.1", "rector/rector": "^2.1", "squizlabs/php_codesniffer": "^3.13" diff --git a/composer.lock b/composer.lock index 704ac06..45cba8a 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": "c38b413d0e9cae4f2369b7ecfd12c0b3", + "content-hash": "1eb9c03ab2509cf17f43cb5c86a78a8e", "packages": [ { "name": "behat/gherkin", @@ -3510,33 +3510,45 @@ }, { "name": "phpcompatibility/php-compatibility", - "version": "9.3.5", + "version": "dev-develop", "source": { "type": "git", "url": "https://github.com/PHPCompatibility/PHPCompatibility.git", - "reference": "9fb324479acf6f39452e0655d2429cc0d3914243" + "reference": "a32035ecd801d827b85c3d8fdb281a43660115b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/9fb324479acf6f39452e0655d2429cc0d3914243", - "reference": "9fb324479acf6f39452e0655d2429cc0d3914243", + "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/a32035ecd801d827b85c3d8fdb281a43660115b7", + "reference": "a32035ecd801d827b85c3d8fdb281a43660115b7", "shasum": "" }, "require": { - "php": ">=5.3", - "squizlabs/php_codesniffer": "^2.3 || ^3.0.2" + "php": ">=5.4", + "phpcsstandards/phpcsutils": "^1.1.0", + "squizlabs/php_codesniffer": "^3.13.0" }, - "conflict": { - "squizlabs/php_codesniffer": "2.6.2" + "replace": { + "wimg/php-compatibility": "*" }, "require-dev": { - "phpunit/phpunit": "~4.5 || ^5.0 || ^6.0 || ^7.0" + "php-parallel-lint/php-console-highlighter": "^1.0.0", + "php-parallel-lint/php-parallel-lint": "^1.4.0", + "phpcsstandards/phpcsdevcs": "^1.1.3", + "phpcsstandards/phpcsdevtools": "^1.2.0", + "phpunit/phpunit": "^4.8.36 || ^5.7.21 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4 || ^10.5.32 || ^11.3.3", + "yoast/phpunit-polyfills": "^1.0.5 || ^2.0 || ^3.0" }, "suggest": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically.", "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." }, + "default-branch": true, "type": "phpcodesniffer-standard", + "extra": { + "branch-alias": { + "dev-master": "9.x-dev", + "dev-develop": "10.x-dev" + } + }, "notification-url": "https://packagist.org/downloads/", "license": [ "LGPL-3.0-or-later" @@ -3558,17 +3570,130 @@ } ], "description": "A set of sniffs for PHP_CodeSniffer that checks for PHP cross-version compatibility.", - "homepage": "http://techblog.wimgodden.be/tag/codesniffer/", + "homepage": "https://techblog.wimgodden.be/tag/codesniffer/", "keywords": [ "compatibility", "phpcs", - "standards" + "standards", + "static analysis" ], "support": { "issues": "https://github.com/PHPCompatibility/PHPCompatibility/issues", + "security": "https://github.com/PHPCompatibility/PHPCompatibility/security/policy", "source": "https://github.com/PHPCompatibility/PHPCompatibility" }, - "time": "2019-12-27T09:44:58+00:00" + "funding": [ + { + "url": "https://github.com/PHPCompatibility", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + }, + { + "url": "https://thanks.dev/u/gh/phpcompatibility", + "type": "thanks_dev" + } + ], + "time": "2025-08-06T19:48:56+00:00" + }, + { + "name": "phpcsstandards/phpcsutils", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/PHPCSStandards/PHPCSUtils.git", + "reference": "65355670ac17c34cd235cf9d3ceae1b9252c4dad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCSStandards/PHPCSUtils/zipball/65355670ac17c34cd235cf9d3ceae1b9252c4dad", + "reference": "65355670ac17c34cd235cf9d3ceae1b9252c4dad", + "shasum": "" + }, + "require": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.4.1 || ^0.5 || ^0.6.2 || ^0.7 || ^1.0", + "php": ">=5.4", + "squizlabs/php_codesniffer": "^3.13.0 || ^4.0" + }, + "require-dev": { + "ext-filter": "*", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.4.0", + "phpcsstandards/phpcsdevcs": "^1.1.6", + "yoast/phpunit-polyfills": "^1.1.0 || ^2.0.0 || ^3.0.0" + }, + "type": "phpcodesniffer-standard", + "extra": { + "branch-alias": { + "dev-stable": "1.x-dev", + "dev-develop": "1.x-dev" + } + }, + "autoload": { + "classmap": [ + "PHPCSUtils/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-or-later" + ], + "authors": [ + { + "name": "Juliette Reinders Folmer", + "homepage": "https://github.com/jrfnl", + "role": "lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/PHPCSUtils/graphs/contributors" + } + ], + "description": "A suite of utility functions for use with PHP_CodeSniffer", + "homepage": "https://phpcsutils.com/", + "keywords": [ + "PHP_CodeSniffer", + "phpcbf", + "phpcodesniffer-standard", + "phpcs", + "phpcs3", + "phpcs4", + "standards", + "static analysis", + "tokens", + "utility" + ], + "support": { + "docs": "https://phpcsutils.com/", + "issues": "https://github.com/PHPCSStandards/PHPCSUtils/issues", + "security": "https://github.com/PHPCSStandards/PHPCSUtils/security/policy", + "source": "https://github.com/PHPCSStandards/PHPCSUtils" + }, + "funding": [ + { + "url": "https://github.com/PHPCSStandards", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + }, + { + "url": "https://thanks.dev/u/gh/phpcsstandards", + "type": "thanks_dev" + } + ], + "time": "2025-06-12T04:32:33+00:00" }, { "name": "phpstan/phpstan", @@ -3775,7 +3900,9 @@ ], "aliases": [], "minimum-stability": "stable", - "stability-flags": {}, + "stability-flags": { + "phpcompatibility/php-compatibility": 20 + }, "prefer-stable": false, "prefer-lowest": false, "platform": { From 1091a1b44b335feb08f9cceaa7515fae7a084feb Mon Sep 17 00:00:00 2001 From: Clinton Montague Date: Fri, 8 Aug 2025 10:01:37 +0100 Subject: [PATCH 12/18] simplify action to debug --- .github/workflows/php-reusable.yml | 83 ++++++++++++++++-------------- 1 file changed, 44 insertions(+), 39 deletions(-) diff --git a/.github/workflows/php-reusable.yml b/.github/workflows/php-reusable.yml index 95b4869..84d9dac 100644 --- a/.github/workflows/php-reusable.yml +++ b/.github/workflows/php-reusable.yml @@ -13,44 +13,49 @@ permissions: contents: read jobs: - php-quality-checks: - name: 'PHP ${{ inputs.php_version }} Quality & Testing' - timeout-minutes: 60 + hello: runs-on: ubuntu-latest-2-core - steps: - # Setup Phase - - name: Checkout repository - uses: actions/checkout@v4 - with: - ref: ${{ github.event.pull_request.head.sha }} - - - name: Setup PHP environment and dependencies - uses: ./.github/workflows/set-up-php-tests - with: - php_version: ${{ inputs.php_version }} - COMPOSER_TOKEN: ${{ secrets.COMPOSER_TOKEN }} - - - # Testing Phase - - name: Run tests - run: ./vendor/bin/phpunit tests/ - - # Code Quality Checks - - name: Run codesniffer checks - run: | - composer sniffer:php81 - composer sniffer:php84 - composer sniffer:psr12 - - # Code Quality Checks - - name: Get files changed in PR for Rector - id: changed-files - uses: tj-actions/changed-files@ed68ef82c095e0d48ec87eccea555d944a631a4c # v46.0.5 - - - name: Run Rector checks - if: ${{ '!cancelled()' && steps.changed-files.outputs.all_changed_files }} - run: composer rector --ansi ${{ steps.changed-files.outputs.all_changed_files }} - - - name: Run PHPStan analysis - run: composer stan + - name: Hello World + run: echo "Hello from PHP reusable workflow with PHP version ${{ inputs.php_version }}" + # php-quality-checks: + # name: 'PHP ${{ inputs.php_version }} Quality & Testing' + # timeout-minutes: 60 + # runs-on: ubuntu-latest-2-core + + # steps: + # # Setup Phase + # - name: Checkout repository + # uses: actions/checkout@v4 + # with: + # ref: ${{ github.event.pull_request.head.sha }} + + # - name: Setup PHP environment and dependencies + # uses: ./.github/workflows/set-up-php-tests + # with: + # php_version: ${{ inputs.php_version }} + # COMPOSER_TOKEN: ${{ secrets.COMPOSER_TOKEN }} + + + # # Testing Phase + # - name: Run tests + # run: ./vendor/bin/phpunit tests/ + + # # Code Quality Checks + # - name: Run codesniffer checks + # run: | + # composer sniffer:php81 + # composer sniffer:php84 + # composer sniffer:psr12 + + # # Code Quality Checks + # - name: Get files changed in PR for Rector + # id: changed-files + # uses: tj-actions/changed-files@ed68ef82c095e0d48ec87eccea555d944a631a4c # v46.0.5 + + # - name: Run Rector checks + # if: ${{ '!cancelled()' && steps.changed-files.outputs.all_changed_files }} + # run: composer rector --ansi ${{ steps.changed-files.outputs.all_changed_files }} + + # - name: Run PHPStan analysis + # run: composer stan From e7bd40d2538391f4902ed53e67526797c1373e98 Mon Sep 17 00:00:00 2001 From: Clinton Montague Date: Fri, 8 Aug 2025 10:04:03 +0100 Subject: [PATCH 13/18] hello --- .github/workflows/php.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/php.yml b/.github/workflows/php.yml index 5559446..f37b9df 100644 --- a/.github/workflows/php.yml +++ b/.github/workflows/php.yml @@ -11,6 +11,11 @@ concurrency: cancel-in-progress: true jobs: + hello: + runs-on: ubuntu-latest-2-core + steps: + - name: Hello World + run: echo "Hello from PHP workflow" php-checks: name: 'PHP ${{ matrix.php_version }}' uses: ./.github/workflows/php-reusable.yml From 0f969a13e26385197eeb160025c0b40a7a550556 Mon Sep 17 00:00:00 2001 From: Clinton Montague Date: Fri, 8 Aug 2025 10:05:02 +0100 Subject: [PATCH 14/18] goodbye everything else --- .github/workflows/php.yml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/php.yml b/.github/workflows/php.yml index f37b9df..3a3406f 100644 --- a/.github/workflows/php.yml +++ b/.github/workflows/php.yml @@ -16,15 +16,15 @@ jobs: steps: - name: Hello World run: echo "Hello from PHP workflow" - php-checks: - name: 'PHP ${{ matrix.php_version }}' - uses: ./.github/workflows/php-reusable.yml - strategy: - matrix: - include: - - php_version: '8.1' - # - php_version: '8.4' - with: - php_version: ${{ matrix.php_version }} - secrets: - COMPOSER_TOKEN: ${{ secrets.ACTIONS_COMPOSER_TOKEN }} + # php-checks: + # name: 'PHP ${{ matrix.php_version }}' + # uses: ./.github/workflows/php-reusable.yml + # strategy: + # matrix: + # include: + # - php_version: '8.1' + # # - php_version: '8.4' + # with: + # php_version: ${{ matrix.php_version }} + # secrets: + # COMPOSER_TOKEN: ${{ secrets.ACTIONS_COMPOSER_TOKEN }} From bad0d16e11182c0d9beebb9f56f6f8400afc7c3a Mon Sep 17 00:00:00 2001 From: Clinton Montague Date: Fri, 8 Aug 2025 10:17:49 +0100 Subject: [PATCH 15/18] concurrency group wrong? --- .github/workflows/php.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/php.yml b/.github/workflows/php.yml index 3a3406f..65648e8 100644 --- a/.github/workflows/php.yml +++ b/.github/workflows/php.yml @@ -7,7 +7,7 @@ on: - main concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number }} + # group: ${{ github.workflow }}-${{ github.event.pull_request.number }} cancel-in-progress: true jobs: From edb3289f831e37cdce0f0fa9d8fb735aa570e674 Mon Sep 17 00:00:00 2001 From: Clinton Montague Date: Fri, 8 Aug 2025 10:18:20 +0100 Subject: [PATCH 16/18] oops --- .github/workflows/php.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/php.yml b/.github/workflows/php.yml index 65648e8..50b3e00 100644 --- a/.github/workflows/php.yml +++ b/.github/workflows/php.yml @@ -6,9 +6,9 @@ on: branches: - main -concurrency: +# concurrency: # group: ${{ github.workflow }}-${{ github.event.pull_request.number }} - cancel-in-progress: true + # cancel-in-progress: true jobs: hello: From d1133f9049b97870008accb38d7a67736e9cffce Mon Sep 17 00:00:00 2001 From: Clinton Montague Date: Fri, 8 Aug 2025 10:23:02 +0100 Subject: [PATCH 17/18] back to first principles --- .github/workflows/php-reusable.yml | 61 ------------------ .github/workflows/php.yml | 6 +- .github/workflows/set-up-php-tests/action.yml | 62 ------------------- 3 files changed, 3 insertions(+), 126 deletions(-) delete mode 100644 .github/workflows/php-reusable.yml delete mode 100644 .github/workflows/set-up-php-tests/action.yml diff --git a/.github/workflows/php-reusable.yml b/.github/workflows/php-reusable.yml deleted file mode 100644 index 84d9dac..0000000 --- a/.github/workflows/php-reusable.yml +++ /dev/null @@ -1,61 +0,0 @@ -on: - workflow_call: - inputs: - php_version: - description: 'PHP version to use' - type: string - required: true - secrets: - COMPOSER_TOKEN: - required: true - -permissions: - contents: read - -jobs: - hello: - runs-on: ubuntu-latest-2-core - steps: - - name: Hello World - run: echo "Hello from PHP reusable workflow with PHP version ${{ inputs.php_version }}" - # php-quality-checks: - # name: 'PHP ${{ inputs.php_version }} Quality & Testing' - # timeout-minutes: 60 - # runs-on: ubuntu-latest-2-core - - # steps: - # # Setup Phase - # - name: Checkout repository - # uses: actions/checkout@v4 - # with: - # ref: ${{ github.event.pull_request.head.sha }} - - # - name: Setup PHP environment and dependencies - # uses: ./.github/workflows/set-up-php-tests - # with: - # php_version: ${{ inputs.php_version }} - # COMPOSER_TOKEN: ${{ secrets.COMPOSER_TOKEN }} - - - # # Testing Phase - # - name: Run tests - # run: ./vendor/bin/phpunit tests/ - - # # Code Quality Checks - # - name: Run codesniffer checks - # run: | - # composer sniffer:php81 - # composer sniffer:php84 - # composer sniffer:psr12 - - # # Code Quality Checks - # - name: Get files changed in PR for Rector - # id: changed-files - # uses: tj-actions/changed-files@ed68ef82c095e0d48ec87eccea555d944a631a4c # v46.0.5 - - # - name: Run Rector checks - # if: ${{ '!cancelled()' && steps.changed-files.outputs.all_changed_files }} - # run: composer rector --ansi ${{ steps.changed-files.outputs.all_changed_files }} - - # - name: Run PHPStan analysis - # run: composer stan diff --git a/.github/workflows/php.yml b/.github/workflows/php.yml index 50b3e00..2fe8f01 100644 --- a/.github/workflows/php.yml +++ b/.github/workflows/php.yml @@ -2,9 +2,9 @@ name: PHP on: pull_request: - push: - branches: - - main + # push: + # branches: + # - main # concurrency: # group: ${{ github.workflow }}-${{ github.event.pull_request.number }} diff --git a/.github/workflows/set-up-php-tests/action.yml b/.github/workflows/set-up-php-tests/action.yml deleted file mode 100644 index 1d6fd96..0000000 --- a/.github/workflows/set-up-php-tests/action.yml +++ /dev/null @@ -1,62 +0,0 @@ -name: Set Up PHP Tests -description: Sets up PHP and dependencies for testing - -inputs: - php_version: - description: PHP version to use - required: true - COMPOSER_TOKEN: - description: The GitHub Actions token for Composer to use - required: true - -runs: - using: 'composite' - - steps: - - name: Configure time zones - shell: bash - run: sudo timedatectl set-timezone Europe/London - - - name: Set up PHP - id: setup-php - uses: shivammathur/setup-php@0f7f1d08e3e32076e51cae65eb0b0c871405b16e # v2.34.1 - with: - php-version: ${{ inputs.php_version }} - ini-values: error_reporting=E_ALL, date.timezone=Europe/London, max_execution_time=120 - tools: composer - extensions: zip, mbstring, pdo, pdo_mysql, bcmath, ctype, fileinfo, json, tokenizer, xml - coverage: none - env: - GITHUB_TOKEN: ${{ inputs.COMPOSER_TOKEN }} - - - name: Set env - shell: bash - run: | - echo "PATH=~/.config/composer/vendor/bin:$PATH" >> $GITHUB_ENV - echo "ENVIRONMENT=github" >> $GITHUB_ENV - - - name: Configure Composer - shell: bash - env: - COMPOSER_TOKEN: ${{ inputs.COMPOSER_TOKEN }} - run: composer config --global github-oauth.github.com "$COMPOSER_TOKEN" - - - name: Get composer cache directory - shell: bash - id: composer-cache - run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - - - name: Cache composer dependencies - uses: actions/cache@v4 - with: - path: ${{ steps.composer-cache.outputs.dir }} - key: ${{ runner.os }}-php-${{ inputs.php_version }}-${{ hashFiles('**/composer.lock') }} - restore-keys: ${{ runner.os }}-php-${{ inputs.php_version }}- - - - name: Install Phing - shell: bash - run: composer global require phing/phing:^2.17 - - - name: Install PHP dependencies - shell: bash - run: composer install --prefer-dist --no-progress --no-interaction From c11fad4439e64017f8f7f1bba6eff2bd2ea151e3 Mon Sep 17 00:00:00 2001 From: Clinton Montague Date: Fri, 8 Aug 2025 10:34:01 +0100 Subject: [PATCH 18/18] try full run on ubuntu-latest --- .github/workflows/php-reusable.yml | 56 +++++++++++++++++ .github/workflows/php.yml | 41 ++++++------ .github/workflows/set-up-php-tests/action.yml | 62 +++++++++++++++++++ 3 files changed, 136 insertions(+), 23 deletions(-) create mode 100644 .github/workflows/php-reusable.yml create mode 100644 .github/workflows/set-up-php-tests/action.yml diff --git a/.github/workflows/php-reusable.yml b/.github/workflows/php-reusable.yml new file mode 100644 index 0000000..02e4cb8 --- /dev/null +++ b/.github/workflows/php-reusable.yml @@ -0,0 +1,56 @@ +on: + workflow_call: + inputs: + php_version: + description: 'PHP version to use' + type: string + required: true + secrets: + COMPOSER_TOKEN: + required: true + +permissions: + contents: read + +jobs: + php-quality-checks: + name: 'PHP ${{ inputs.php_version }} Quality & Testing' + timeout-minutes: 60 + runs-on: ubuntu-latest + + steps: + # Setup Phase + - name: Checkout repository + uses: actions/checkout@v4 + with: + ref: ${{ github.event.pull_request.head.sha }} + + - name: Setup PHP environment and dependencies + uses: ./.github/workflows/set-up-php-tests + with: + php_version: ${{ inputs.php_version }} + COMPOSER_TOKEN: ${{ secrets.COMPOSER_TOKEN }} + + + # Testing Phase + - name: Run tests + run: ./vendor/bin/phpunit tests/ + + # Code Quality Checks + - name: Run codesniffer checks + run: | + composer sniffer:php81 + composer sniffer:php84 + composer sniffer:psr12 + + # Code Quality Checks + - name: Get files changed in PR for Rector + id: changed-files + uses: tj-actions/changed-files@ed68ef82c095e0d48ec87eccea555d944a631a4c # v46.0.5 + + - name: Run Rector checks + if: ${{ '!cancelled()' && steps.changed-files.outputs.all_changed_files }} + run: composer rector --ansi ${{ steps.changed-files.outputs.all_changed_files }} + + - name: Run PHPStan analysis + run: composer stan diff --git a/.github/workflows/php.yml b/.github/workflows/php.yml index 2fe8f01..5559446 100644 --- a/.github/workflows/php.yml +++ b/.github/workflows/php.yml @@ -2,29 +2,24 @@ name: PHP on: pull_request: - # push: - # branches: - # - main + push: + branches: + - main -# concurrency: - # group: ${{ github.workflow }}-${{ github.event.pull_request.number }} - # cancel-in-progress: true +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number }} + cancel-in-progress: true jobs: - hello: - runs-on: ubuntu-latest-2-core - steps: - - name: Hello World - run: echo "Hello from PHP workflow" - # php-checks: - # name: 'PHP ${{ matrix.php_version }}' - # uses: ./.github/workflows/php-reusable.yml - # strategy: - # matrix: - # include: - # - php_version: '8.1' - # # - php_version: '8.4' - # with: - # php_version: ${{ matrix.php_version }} - # secrets: - # COMPOSER_TOKEN: ${{ secrets.ACTIONS_COMPOSER_TOKEN }} + php-checks: + name: 'PHP ${{ matrix.php_version }}' + uses: ./.github/workflows/php-reusable.yml + strategy: + matrix: + include: + - php_version: '8.1' + # - php_version: '8.4' + with: + php_version: ${{ matrix.php_version }} + secrets: + COMPOSER_TOKEN: ${{ secrets.ACTIONS_COMPOSER_TOKEN }} diff --git a/.github/workflows/set-up-php-tests/action.yml b/.github/workflows/set-up-php-tests/action.yml new file mode 100644 index 0000000..1d6fd96 --- /dev/null +++ b/.github/workflows/set-up-php-tests/action.yml @@ -0,0 +1,62 @@ +name: Set Up PHP Tests +description: Sets up PHP and dependencies for testing + +inputs: + php_version: + description: PHP version to use + required: true + COMPOSER_TOKEN: + description: The GitHub Actions token for Composer to use + required: true + +runs: + using: 'composite' + + steps: + - name: Configure time zones + shell: bash + run: sudo timedatectl set-timezone Europe/London + + - name: Set up PHP + id: setup-php + uses: shivammathur/setup-php@0f7f1d08e3e32076e51cae65eb0b0c871405b16e # v2.34.1 + with: + php-version: ${{ inputs.php_version }} + ini-values: error_reporting=E_ALL, date.timezone=Europe/London, max_execution_time=120 + tools: composer + extensions: zip, mbstring, pdo, pdo_mysql, bcmath, ctype, fileinfo, json, tokenizer, xml + coverage: none + env: + GITHUB_TOKEN: ${{ inputs.COMPOSER_TOKEN }} + + - name: Set env + shell: bash + run: | + echo "PATH=~/.config/composer/vendor/bin:$PATH" >> $GITHUB_ENV + echo "ENVIRONMENT=github" >> $GITHUB_ENV + + - name: Configure Composer + shell: bash + env: + COMPOSER_TOKEN: ${{ inputs.COMPOSER_TOKEN }} + run: composer config --global github-oauth.github.com "$COMPOSER_TOKEN" + + - name: Get composer cache directory + shell: bash + id: composer-cache + run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT + + - name: Cache composer dependencies + uses: actions/cache@v4 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: ${{ runner.os }}-php-${{ inputs.php_version }}-${{ hashFiles('**/composer.lock') }} + restore-keys: ${{ runner.os }}-php-${{ inputs.php_version }}- + + - name: Install Phing + shell: bash + run: composer global require phing/phing:^2.17 + + - name: Install PHP dependencies + shell: bash + run: composer install --prefer-dist --no-progress --no-interaction