diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index 07185e3..7bebd10 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -16,6 +16,7 @@ jobs: - '8.1' - '8.2' - '8.3' + - '8.4' steps: - name: Setup PHP uses: shivammathur/setup-php@v2 @@ -25,6 +26,10 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - uses: actions/checkout@v4 + # temporarily remove Psalm until ready for PHP 8.4 + - name: remove psalm + if: matrix.php-versions == '8.4' + run: composer remove --dev --no-install vimeo/psalm psalm/plugin-phpunit php-standard-library/psalm-plugin - uses: ramsey/composer-install@v3 - name: Run PHPUnit on Windows if: matrix.operating-system == 'windows-latest' @@ -44,6 +49,7 @@ jobs: - '8.1' - '8.2' - '8.3' + - '8.4' steps: - name: Setup PHP uses: shivammathur/setup-php@v2 @@ -53,6 +59,10 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - uses: actions/checkout@v4 + # temporarily remove Psalm until ready for PHP 8.4 + - name: remove psalm + if: matrix.php-versions == '8.4' + run: composer remove --dev --no-install vimeo/psalm psalm/plugin-phpunit php-standard-library/psalm-plugin - uses: ramsey/composer-install@v3 - name: Run Behat on Windows if: matrix.operating-system == 'windows-latest' diff --git a/composer.json b/composer.json index 74027ad..0a7964f 100644 --- a/composer.json +++ b/composer.json @@ -27,7 +27,7 @@ } ], "require": { - "php": "8.1.*||8.2.*||8.3.*", + "php": "8.1.*||8.2.*||8.3.*||8.4.*", "ext-zip": "*", "composer/composer": "dev-main@dev", "guzzlehttp/guzzle": "^7.8", diff --git a/composer.lock b/composer.lock index 19218dc..a130f39 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": "168d8a3d4c71ff2f4b9a0c83427040c0", + "content-hash": "4a784fb98e95ae5703b3153be0bd69fa", "packages": [ { "name": "composer/ca-bundle", @@ -84,16 +84,16 @@ }, { "name": "composer/class-map-generator", - "version": "1.3.4", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/composer/class-map-generator.git", - "reference": "b1b3fd0b4eaf3ddf3ee230bc340bf3fff454a1a3" + "reference": "98bbf6780e56e0fd2404fe4b82eb665a0f93b783" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/class-map-generator/zipball/b1b3fd0b4eaf3ddf3ee230bc340bf3fff454a1a3", - "reference": "b1b3fd0b4eaf3ddf3ee230bc340bf3fff454a1a3", + "url": "https://api.github.com/repos/composer/class-map-generator/zipball/98bbf6780e56e0fd2404fe4b82eb665a0f93b783", + "reference": "98bbf6780e56e0fd2404fe4b82eb665a0f93b783", "shasum": "" }, "require": { @@ -106,8 +106,8 @@ "phpstan/phpstan-deprecation-rules": "^1", "phpstan/phpstan-phpunit": "^1", "phpstan/phpstan-strict-rules": "^1.1", - "symfony/filesystem": "^5.4 || ^6", - "symfony/phpunit-bridge": "^5" + "phpunit/phpunit": "^8", + "symfony/filesystem": "^5.4 || ^6" }, "type": "library", "extra": { @@ -137,7 +137,7 @@ ], "support": { "issues": "https://github.com/composer/class-map-generator/issues", - "source": "https://github.com/composer/class-map-generator/tree/1.3.4" + "source": "https://github.com/composer/class-map-generator/tree/1.4.0" }, "funding": [ { @@ -153,7 +153,7 @@ "type": "tidelift" } ], - "time": "2024-06-12T14:13:04+00:00" + "time": "2024-10-03T18:14:00+00:00" }, { "name": "composer/composer", @@ -161,17 +161,17 @@ "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "dfee3dec57fe7459e89abb75a1f855109cec2bdd" + "reference": "a67ce984e9d833d791a8fb4657b49315bfe61158" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/dfee3dec57fe7459e89abb75a1f855109cec2bdd", - "reference": "dfee3dec57fe7459e89abb75a1f855109cec2bdd", + "url": "https://api.github.com/repos/composer/composer/zipball/a67ce984e9d833d791a8fb4657b49315bfe61158", + "reference": "a67ce984e9d833d791a8fb4657b49315bfe61158", "shasum": "" }, "require": { "composer/ca-bundle": "^1.5", - "composer/class-map-generator": "^1.3.3", + "composer/class-map-generator": "^1.4.0", "composer/metadata-minifier": "^1.0", "composer/pcre": "^2.2 || ^3.2", "composer/semver": "^3.3", @@ -268,7 +268,7 @@ "type": "tidelift" } ], - "time": "2024-09-25T08:12:58+00:00" + "time": "2024-10-04T14:39:31+00:00" }, { "name": "composer/metadata-minifier", @@ -3566,16 +3566,16 @@ }, { "name": "felixfbecker/language-server-protocol", - "version": "v1.5.2", + "version": "v1.5.3", "source": { "type": "git", "url": "https://github.com/felixfbecker/php-language-server-protocol.git", - "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842" + "reference": "a9e113dbc7d849e35b8776da39edaf4313b7b6c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/6e82196ffd7c62f7794d778ca52b69feec9f2842", - "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842", + "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/a9e113dbc7d849e35b8776da39edaf4313b7b6c9", + "reference": "a9e113dbc7d849e35b8776da39edaf4313b7b6c9", "shasum": "" }, "require": { @@ -3616,9 +3616,9 @@ ], "support": { "issues": "https://github.com/felixfbecker/php-language-server-protocol/issues", - "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/v1.5.2" + "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/v1.5.3" }, - "time": "2022-03-02T22:36:06+00:00" + "time": "2024-04-30T00:40:11+00:00" }, { "name": "fidry/cpu-core-counter", @@ -3794,16 +3794,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.19.2", + "version": "v4.19.4", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "0ed4c8949a32986043e977dbe14776c14d644c45" + "reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/0ed4c8949a32986043e977dbe14776c14d644c45", - "reference": "0ed4c8949a32986043e977dbe14776c14d644c45", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/715f4d25e225bc47b293a8b997fe6ce99bf987d2", + "reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2", "shasum": "" }, "require": { @@ -3812,7 +3812,7 @@ }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" }, "bin": [ "bin/php-parse" @@ -3844,9 +3844,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.2" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.4" }, - "time": "2024-09-17T19:36:00+00:00" + "time": "2024-09-29T15:01:53+00:00" }, { "name": "phar-io/manifest", @@ -4197,16 +4197,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.31.0", + "version": "1.32.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "249f15fb843bf240cf058372dad29e100cee6c17" + "reference": "6ca22b154efdd9e3c68c56f5d94670920a1c19a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/249f15fb843bf240cf058372dad29e100cee6c17", - "reference": "249f15fb843bf240cf058372dad29e100cee6c17", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/6ca22b154efdd9e3c68c56f5d94670920a1c19a4", + "reference": "6ca22b154efdd9e3c68c56f5d94670920a1c19a4", "shasum": "" }, "require": { @@ -4238,9 +4238,9 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.31.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.32.0" }, - "time": "2024-09-22T11:32:18+00:00" + "time": "2024-09-26T07:23:32+00:00" }, { "name": "phpunit/php-code-coverage", @@ -6706,7 +6706,7 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "8.1.*||8.2.*||8.3.*", + "php": "8.1.*||8.2.*||8.3.*||8.4.*", "ext-zip": "*" }, "platform-dev": [], diff --git a/features/install-extensions.feature b/features/install-extensions.feature index 08b27a4..fc258ba 100644 --- a/features/install-extensions.feature +++ b/features/install-extensions.feature @@ -10,8 +10,8 @@ Feature: Extensions can be installed with Behat Examples: | constraint | version | - | 2.0.0 | 2.0.0 | - | ^2.0 | 2.0.0 | + | 2.0.2 | 2.0.2 | + | ^2.0 | 2.0.2 | @non-windows Example: An in-development version can be downloaded on non-Windows systems diff --git a/src/Platform/TargetPlatform.php b/src/Platform/TargetPlatform.php index ce7625e..879ce31 100644 --- a/src/Platform/TargetPlatform.php +++ b/src/Platform/TargetPlatform.php @@ -115,6 +115,9 @@ public static function fromPhpBinaryPath(PhpBinaryPath $phpBinaryPath): self case 'VS16': $windowsCompiler = WindowsCompiler::VS16; break; + case 'VS17': + $windowsCompiler = WindowsCompiler::VS17; + break; } } } diff --git a/src/Platform/WindowsCompiler.php b/src/Platform/WindowsCompiler.php index 607925b..7b5bc37 100644 --- a/src/Platform/WindowsCompiler.php +++ b/src/Platform/WindowsCompiler.php @@ -14,4 +14,5 @@ enum WindowsCompiler case VC14; case VC15; case VS16; + case VS17; } diff --git a/test/assets/pie_test_ext_win/php_pie_test_ext-1.2.3-8.4-ts-vs16-x86_64.dll b/test/assets/pie_test_ext_win/php_pie_test_ext-1.2.3-8.4-ts-vs16-x86_64.dll new file mode 100644 index 0000000..c78b62b --- /dev/null +++ b/test/assets/pie_test_ext_win/php_pie_test_ext-1.2.3-8.4-ts-vs16-x86_64.dll @@ -0,0 +1 @@ +only a test file diff --git a/test/assets/pie_test_ext_win/php_pie_test_ext-1.2.3-8.4-ts-vs16-x86_64.pdb b/test/assets/pie_test_ext_win/php_pie_test_ext-1.2.3-8.4-ts-vs16-x86_64.pdb new file mode 100644 index 0000000..c78b62b --- /dev/null +++ b/test/assets/pie_test_ext_win/php_pie_test_ext-1.2.3-8.4-ts-vs16-x86_64.pdb @@ -0,0 +1 @@ +only a test file diff --git a/test/integration/Command/DownloadCommandTest.php b/test/integration/Command/DownloadCommandTest.php index 07e836d..521ed87 100644 --- a/test/integration/Command/DownloadCommandTest.php +++ b/test/integration/Command/DownloadCommandTest.php @@ -46,12 +46,12 @@ public function setUp(): void public static function validVersionsList(): array { $versionsAndExpected = [ - [self::TEST_PACKAGE, self::TEST_PACKAGE . ':2.0.0'], - [self::TEST_PACKAGE . ':*', self::TEST_PACKAGE . ':2.0.0'], - [self::TEST_PACKAGE . ':^2.0', self::TEST_PACKAGE . ':2.0.0'], + [self::TEST_PACKAGE, self::TEST_PACKAGE . ':2.0.2'], + [self::TEST_PACKAGE . ':*', self::TEST_PACKAGE . ':2.0.2'], + [self::TEST_PACKAGE . ':^2.0', self::TEST_PACKAGE . ':2.0.2'], ]; - if (PHP_VERSION_ID >= 80300 && PHP_VERSION_ID <= 80400) { + if (PHP_VERSION_ID >= 80300 && PHP_VERSION_ID < 80400) { $versionsAndExpected[] = [self::TEST_PACKAGE . ':^1.0', self::TEST_PACKAGE . ':1.0.1']; $versionsAndExpected[] = [self::TEST_PACKAGE . ':1.0.1-alpha.3@alpha', self::TEST_PACKAGE . ':1.0.1-alpha.3']; $versionsAndExpected[] = [self::TEST_PACKAGE . ':~1.0.0@alpha', self::TEST_PACKAGE . ':1.0.1']; diff --git a/test/integration/DependencyResolver/ResolveDependencyWithComposerTest.php b/test/integration/DependencyResolver/ResolveDependencyWithComposerTest.php index b194a57..e78a3f6 100644 --- a/test/integration/DependencyResolver/ResolveDependencyWithComposerTest.php +++ b/test/integration/DependencyResolver/ResolveDependencyWithComposerTest.php @@ -34,13 +34,13 @@ final class ResolveDependencyWithComposerTest extends TestCase public static function validVersionsList(): array { $versionsAndExpected = [ - [null, '2.0.0', self::DOWNLOAD_URL_ANY], - ['*', '2.0.0', self::DOWNLOAD_URL_ANY], + [null, '2.0.2', self::DOWNLOAD_URL_ANY], + ['*', '2.0.2', self::DOWNLOAD_URL_ANY], ['dev-main', 'dev-main', self::DOWNLOAD_URL_ANY], ['dev-main#769f906413d6d1e12152f6d34134cbcd347ca253', 'dev-main', self::DOWNLOAD_URL_1_0_1], ]; - if (PHP_VERSION_ID >= 80300 && PHP_VERSION_ID <= 80400) { + if (PHP_VERSION_ID >= 80300 && PHP_VERSION_ID <= 80300) { $versionsAndExpected[] = ['1.0.1-alpha.3@alpha', '1.0.1-alpha.3', self::DOWNLOAD_URL_1_0_1_ALPHA_3]; $versionsAndExpected[] = ['^1.0', '1.0.1', self::DOWNLOAD_URL_1_0_1]; $versionsAndExpected[] = ['^1.1.0@alpha', '1.1.0-beta.1', self::DOWNLOAD_URL_1_1_0_BETA_1];