From 7acc03d4f079ed85b912e7dd676c95f697c20daa Mon Sep 17 00:00:00 2001 From: ashleyhindle <454975+ashleyhindle@users.noreply.github.com> Date: Thu, 4 Sep 2025 09:21:19 +0000 Subject: [PATCH 01/15] Update CHANGELOG --- CHANGELOG.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7b3f76ec..cbedbb0d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,14 @@ # Release Notes -## [Unreleased](https://github.com/laravel/boost/compare/v1.1.2...main) +## [Unreleased](https://github.com/laravel/boost/compare/v1.1.3...main) + +## [v1.1.3](https://github.com/laravel/boost/compare/v1.1.2...v1.1.3) - 2025-09-04 + +### What's Changed + +* fix: package priorities should work on php8.1 by [@ashleyhindle](https://github.com/ashleyhindle) in https://github.com/laravel/boost/pull/243 + +**Full Changelog**: https://github.com/laravel/boost/compare/v1.1.2...v1.1.3 ## [v1.1.2](https://github.com/laravel/boost/compare/v1.1.1...v1.1.2) - 2025-09-04 From 66d863f412774c771ad5f332fb4aebeb15568f47 Mon Sep 17 00:00:00 2001 From: Ashley Hindle Date: Thu, 4 Sep 2025 10:42:14 +0100 Subject: [PATCH 02/15] feat: add windows to tests CI check --- .github/workflows/tests.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 5b3baf03..ad74b386 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -14,15 +14,16 @@ permissions: jobs: tests: - runs-on: ubuntu-22.04 + runs-on: ${{ matrix.os }} strategy: fail-fast: true matrix: + os: [ ubuntu-22.04, windows-latest ] php: [ 8.2, 8.3, 8.4 ] laravel: [ 11, 12 ] - name: PHP ${{ matrix.php }} - Laravel ${{ matrix.laravel }} + name: PHP ${{ matrix.php }} - Laravel ${{ matrix.laravel }} - ${{ matrix.os }} steps: - name: Checkout code @@ -51,15 +52,16 @@ jobs: - name: Execute tests run: vendor/bin/pest test-l10: - runs-on: ubuntu-22.04 + runs-on: ${{ matrix.os }} strategy: fail-fast: true matrix: + os: [ ubuntu-22.04, windows-latest ] php: [ 8.1, 8.2 ] laravel: [ 10 ] - name: PHP ${{ matrix.php }} - Laravel ${{ matrix.laravel }} + name: PHP ${{ matrix.php }} - Laravel ${{ matrix.laravel }} - ${{ matrix.os }} steps: - name: Checkout code From a12287b8f3611863eabd48d78d641b4205caab52 Mon Sep 17 00:00:00 2001 From: Ashley Hindle Date: Thu, 4 Sep 2025 10:46:22 +0100 Subject: [PATCH 03/15] ci: add fileinfo extension when running tests --- .github/workflows/tests.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index ad74b386..eb088841 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -33,7 +33,7 @@ jobs: uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php }} - extensions: dom, curl, libxml, mbstring, zip + extensions: dom, curl, libxml, mbstring, zip, fileinfo ini-values: error_reporting=E_ALL tools: composer:v2 coverage: none @@ -71,7 +71,7 @@ jobs: uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php }} - extensions: dom, curl, libxml, mbstring, zip + extensions: dom, curl, libxml, mbstring, zip, fileinfo ini-values: error_reporting=E_ALL tools: composer:v2 coverage: none From 4338932727213de13e1787af596b7e98ba046052 Mon Sep 17 00:00:00 2001 From: Ashley Hindle Date: Thu, 4 Sep 2025 10:58:35 +0100 Subject: [PATCH 04/15] ci: pin composer version for consistency --- .github/workflows/tests.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index eb088841..cb15670f 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -35,7 +35,7 @@ jobs: php-version: ${{ matrix.php }} extensions: dom, curl, libxml, mbstring, zip, fileinfo ini-values: error_reporting=E_ALL - tools: composer:v2 + tools: composer:v2.8 coverage: none - name: Setup SSH Keys @@ -73,7 +73,7 @@ jobs: php-version: ${{ matrix.php }} extensions: dom, curl, libxml, mbstring, zip, fileinfo ini-values: error_reporting=E_ALL - tools: composer:v2 + tools: composer:v2.8 coverage: none - name: Setup SSH Keys From bd286f62ce91d5857cad2fee90211d53004eb97a Mon Sep 17 00:00:00 2001 From: Ashley Hindle Date: Thu, 4 Sep 2025 11:04:59 +0100 Subject: [PATCH 05/15] ci: pin contracts with better constraint --- .github/workflows/tests.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index cb15670f..262302ce 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -47,7 +47,7 @@ jobs: - name: Install dependencies run: | - composer update --prefer-dist --no-interaction --no-progress --with="illuminate/contracts:^${{ matrix.laravel }}" + composer update --prefer-dist --no-interaction --no-progress --with="illuminate/contracts:^${{ matrix.laravel }}.0" - name: Execute tests run: vendor/bin/pest @@ -85,7 +85,7 @@ jobs: - name: Install dependencies run: | - composer update --prefer-dist --no-interaction --no-progress --with="illuminate/contracts:^${{ matrix.laravel }}" + composer update --prefer-dist --no-interaction --no-progress --with="illuminate/contracts:^${{ matrix.laravel }}.0" - name: Execute tests run: vendor/bin/pest From 53dac1df47d476d04b0588963298c17cf9391386 Mon Sep 17 00:00:00 2001 From: Ashley Hindle Date: Thu, 4 Sep 2025 11:58:03 +0100 Subject: [PATCH 06/15] ci: try to fix windows composer --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 262302ce..3b65a3ac 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -47,7 +47,7 @@ jobs: - name: Install dependencies run: | - composer update --prefer-dist --no-interaction --no-progress --with="illuminate/contracts:^${{ matrix.laravel }}.0" + composer update --prefer-dist --no-interaction --no-progress --with='illuminate/contracts:^${{ matrix.laravel }}.0' - name: Execute tests run: vendor/bin/pest From 7db70abfb480b1d3f4049dea87ad69a8cc969e2d Mon Sep 17 00:00:00 2001 From: Ashley Hindle Date: Thu, 4 Sep 2025 12:03:24 +0100 Subject: [PATCH 07/15] ci: try to fix windows composer --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 3b65a3ac..29781a2c 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -47,7 +47,7 @@ jobs: - name: Install dependencies run: | - composer update --prefer-dist --no-interaction --no-progress --with='illuminate/contracts:^${{ matrix.laravel }}.0' + composer update --prefer-dist --no-interaction --no-progress --with='illuminate/contracts:`^${{ matrix.laravel }}.0' - name: Execute tests run: vendor/bin/pest From 35adf45511761bfb5777d07109e5bd746711c5cb Mon Sep 17 00:00:00 2001 From: Ashley Hindle Date: Thu, 4 Sep 2025 12:05:05 +0100 Subject: [PATCH 08/15] ci: try to fix windows composer --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 29781a2c..c9cd479a 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -47,7 +47,7 @@ jobs: - name: Install dependencies run: | - composer update --prefer-dist --no-interaction --no-progress --with='illuminate/contracts:`^${{ matrix.laravel }}.0' + composer update --prefer-dist --no-interaction --no-progress --with='illuminate/contracts:^^^^${{ matrix.laravel }}.0' - name: Execute tests run: vendor/bin/pest From bc591a61a144a000fce33cb2ef0d9b8846fd2fa4 Mon Sep 17 00:00:00 2001 From: Ashley Hindle Date: Thu, 4 Sep 2025 12:08:34 +0100 Subject: [PATCH 09/15] ci: try to fix windows composer --- .github/workflows/tests.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index c9cd479a..f9e86ca0 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -46,8 +46,9 @@ jobs: ssh-keyscan github.com >> ~/.ssh/known_hosts - name: Install dependencies + shell: bash run: | - composer update --prefer-dist --no-interaction --no-progress --with='illuminate/contracts:^^^^${{ matrix.laravel }}.0' + composer update --prefer-dist --no-interaction --no-progress --with='illuminate/contracts:^${{ matrix.laravel }}' - name: Execute tests run: vendor/bin/pest From 107f831894f835cae7726468888ff9e39eded23f Mon Sep 17 00:00:00 2001 From: Ashley Hindle Date: Thu, 4 Sep 2025 12:14:58 +0100 Subject: [PATCH 10/15] ci: add sqlite to extensions --- .github/workflows/tests.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index f9e86ca0..fd2c0489 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -15,6 +15,9 @@ permissions: jobs: tests: runs-on: ${{ matrix.os }} + defaults: + run: + shell: bash strategy: fail-fast: true @@ -33,7 +36,7 @@ jobs: uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php }} - extensions: dom, curl, libxml, mbstring, zip, fileinfo + extensions: dom, curl, libxml, mbstring, zip, fileinfo, sqlite, pdo_sqlite ini-values: error_reporting=E_ALL tools: composer:v2.8 coverage: none @@ -46,7 +49,6 @@ jobs: ssh-keyscan github.com >> ~/.ssh/known_hosts - name: Install dependencies - shell: bash run: | composer update --prefer-dist --no-interaction --no-progress --with='illuminate/contracts:^${{ matrix.laravel }}' @@ -54,6 +56,9 @@ jobs: run: vendor/bin/pest test-l10: runs-on: ${{ matrix.os }} + defaults: + run: + shell: bash strategy: fail-fast: true From 05609233514e837f02b6628008d48eccf18dec12 Mon Sep 17 00:00:00 2001 From: Ashley Hindle Date: Thu, 4 Sep 2025 12:23:23 +0100 Subject: [PATCH 11/15] ci: fix some windows tests --- .github/workflows/tests.yml | 2 +- src/Install/GuidelineComposer.php | 3 +- .../Console/InstallCommandMultiselectTest.php | 167 ++++++++---------- 3 files changed, 77 insertions(+), 95 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index fd2c0489..478d629c 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -77,7 +77,7 @@ jobs: uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php }} - extensions: dom, curl, libxml, mbstring, zip, fileinfo + extensions: dom, curl, libxml, mbstring, zip, fileinfo, sqlite, pdo_sqlite ini-values: error_reporting=E_ALL tools: composer:v2.8 coverage: none diff --git a/src/Install/GuidelineComposer.php b/src/Install/GuidelineComposer.php index 020eb903..85a06e30 100644 --- a/src/Install/GuidelineComposer.php +++ b/src/Install/GuidelineComposer.php @@ -296,7 +296,8 @@ protected function guidelinePath(string $path): ?string } // The path is not a custom guideline, check if the user has an override for this - $relativePath = ltrim(str_replace([realpath(__DIR__.'/../../'), '.ai/'], '', $path), '/'); + $basePath = realpath(__DIR__.'/../../'); + $relativePath = ltrim(str_replace([$basePath, '.ai'.DIRECTORY_SEPARATOR, '.ai/'], '', $path), '/\\'); $customPath = $this->prependUserGuidelinePath($relativePath); return file_exists($customPath) ? $customPath : $path; diff --git a/tests/Feature/Console/InstallCommandMultiselectTest.php b/tests/Feature/Console/InstallCommandMultiselectTest.php index 1027efdf..66282bbb 100644 --- a/tests/Feature/Console/InstallCommandMultiselectTest.php +++ b/tests/Feature/Console/InstallCommandMultiselectTest.php @@ -2,110 +2,91 @@ declare(strict_types=1); -namespace Tests\Feature\Console; - use Laravel\Prompts\Key; use Laravel\Prompts\Prompt; -use Tests\TestCase; -class InstallCommandMultiselectTest extends TestCase -{ - /** - * Test that multiselect returns keys when given an associative array. - */ - public function test_multiselect_returns_keys_for_associative_array(): void - { - // Mock the prompt to simulate user selecting options - // Note: mcp_server is already selected by default, so we don't toggle it - Prompt::fake([ - Key::DOWN, // Move to second option (ai_guidelines) - Key::SPACE, // Select second option - Key::ENTER, // Submit - ]); +test('multiselect returns keys for associative array', function () { + // Mock the prompt to simulate user selecting options + // Note: mcp_server is already selected by default, so we don't toggle it + Prompt::fake([ + Key::DOWN, // Move to second option (ai_guidelines) + Key::SPACE, // Select second option + Key::ENTER, // Submit + ]); - $result = \Laravel\Prompts\multiselect( - label: 'What shall we install?', - options: [ - 'mcp_server' => 'Boost MCP Server', - 'ai_guidelines' => 'Package AI Guidelines', - 'style_guidelines' => 'Laravel Style AI Guidelines', - ], - default: ['mcp_server'] - ); + $result = \Laravel\Prompts\multiselect( + label: 'What shall we install?', + options: [ + 'mcp_server' => 'Boost MCP Server', + 'ai_guidelines' => 'Package AI Guidelines', + 'style_guidelines' => 'Laravel Style AI Guidelines', + ], + default: ['mcp_server'] + ); - // Assert that we get the keys, not the values - $this->assertIsArray($result); - $this->assertCount(2, $result, 'Should have 2 items selected'); - $this->assertContains('mcp_server', $result); - $this->assertContains('ai_guidelines', $result); - $this->assertNotContains('Boost MCP Server', $result); - $this->assertNotContains('Package AI Guidelines', $result); - } + // Assert that we get the keys, not the values + expect($result)->toBeArray(); + expect($result)->toHaveCount(2, 'Should have 2 items selected'); + expect($result)->toContain('mcp_server'); + expect($result)->toContain('ai_guidelines'); + expect($result)->not->toContain('Boost MCP Server'); + expect($result)->not->toContain('Package AI Guidelines'); +})->skipOnWindows(); - /** - * Test multiselect with numeric indexed array returns values. - */ - public function test_multiselect_returns_values_for_indexed_array(): void - { - Prompt::fake([ - Key::SPACE, // Select first option - Key::DOWN, // Move to second option - Key::SPACE, // Select second option - Key::ENTER, // Submit - ]); +test('multiselect returns values for indexed array', function () { + Prompt::fake([ + Key::SPACE, // Select first option + Key::DOWN, // Move to second option + Key::SPACE, // Select second option + Key::ENTER, // Submit + ]); - $result = \Laravel\Prompts\multiselect( - label: 'Select options', - options: ['Option 1', 'Option 2', 'Option 3'], - default: [] - ); + $result = \Laravel\Prompts\multiselect( + label: 'Select options', + options: ['Option 1', 'Option 2', 'Option 3'], + default: [] + ); - // For indexed arrays, it returns the actual values - $this->assertIsArray($result); - $this->assertContains('Option 1', $result); - $this->assertContains('Option 2', $result); - } + // For indexed arrays, it returns the actual values + expect($result)->toBeArray(); + expect($result)->toContain('Option 1'); + expect($result)->toContain('Option 2'); +})->skipOnWindows(); - /** - * Test that demonstrates multiselect behavior is consistent with InstallCommand expectations. - * This ensures Laravel 10/11 compatibility. - */ - public function test_multiselect_behavior_matches_install_command_expectations(): void - { - // Test the exact same structure used in InstallCommand::selectBoostFeatures() - // Note: mcp_server and ai_guidelines are already selected by default - Prompt::fake([ - Key::DOWN, // Move to ai_guidelines (already selected) - Key::DOWN, // Move to style_guidelines - Key::SPACE, // Select style_guidelines - Key::ENTER, // Submit - ]); +test('multiselect behavior matches install command expectations', function () { + // Test the exact same structure used in InstallCommand::selectBoostFeatures() + // Note: mcp_server and ai_guidelines are already selected by default + Prompt::fake([ + Key::DOWN, // Move to ai_guidelines (already selected) + Key::DOWN, // Move to style_guidelines + Key::SPACE, // Select style_guidelines + Key::ENTER, // Submit + ]); - $toInstallOptions = [ - 'mcp_server' => 'Boost MCP Server', - 'ai_guidelines' => 'Package AI Guidelines (i.e. Framework, Inertia, Pest)', - 'style_guidelines' => 'Laravel Style AI Guidelines', - ]; + $toInstallOptions = [ + 'mcp_server' => 'Boost MCP Server', + 'ai_guidelines' => 'Package AI Guidelines (i.e. Framework, Inertia, Pest)', + 'style_guidelines' => 'Laravel Style AI Guidelines', + ]; - $result = \Laravel\Prompts\multiselect( - label: 'What shall we install?', - options: $toInstallOptions, - default: ['mcp_server', 'ai_guidelines'], - required: true, - hint: 'Style guidelines are best for new projects', - ); + $result = \Laravel\Prompts\multiselect( + label: 'What shall we install?', + options: $toInstallOptions, + default: ['mcp_server', 'ai_guidelines'], + required: true, + hint: 'Style guidelines are best for new projects', + ); - // Verify we get keys that can be used with in_array checks - $this->assertIsArray($result); - $this->assertCount(3, $result); // All 3 selected (2 default + 1 added) + // Verify we get keys that can be used with in_array checks + expect($result)->toBeArray(); + expect($result)->toHaveCount(3); // All 3 selected (2 default + 1 added) - // These are the exact checks used in InstallCommand - $this->assertTrue(in_array('mcp_server', $result, true)); - $this->assertTrue(in_array('ai_guidelines', $result, true)); - $this->assertTrue(in_array('style_guidelines', $result, true)); + // These are the exact checks used in InstallCommand + expect(in_array('mcp_server', $result, true))->toBeTrue(); + expect(in_array('ai_guidelines', $result, true))->toBeTrue(); + expect(in_array('style_guidelines', $result, true))->toBeTrue(); - // Verify it doesn't contain the display values - $this->assertFalse(in_array('Boost MCP Server', $result, true)); - $this->assertFalse(in_array('Package AI Guidelines (i.e. Framework, Inertia, Pest)', $result, true)); - } -} + // Verify it doesn't contain the display values + expect(in_array('Boost MCP Server', $result, true))->toBeFalse(); + expect(in_array('Package AI Guidelines (i.e. Framework, Inertia, Pest)', $result, true))->toBeFalse(); +})->skipOnWindows(); \ No newline at end of file From 32dd9e801aa0623ed8923da116dbce6d15458fd2 Mon Sep 17 00:00:00 2001 From: Ashley Hindle Date: Thu, 4 Sep 2025 12:25:32 +0100 Subject: [PATCH 12/15] ci: fix some windows tests --- src/Install/Mcp/FileWriter.php | 8 ++++++++ tests/Unit/Install/GuidelineWriterTest.php | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/Install/Mcp/FileWriter.php b/src/Install/Mcp/FileWriter.php index dce5e66d..237d12f3 100644 --- a/src/Install/Mcp/FileWriter.php +++ b/src/Install/Mcp/FileWriter.php @@ -187,6 +187,9 @@ protected function injectNewConfigKey(string $content): bool protected function generateServerJson(string $key, array $serverConfig, int $baseIndent = 0): string { $json = json_encode($serverConfig, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + + // Normalize line endings to Unix style + $json = str_replace("\r\n", "\n", $json); // If no indentation needed, return as-is if (empty($baseIndent)) { @@ -379,6 +382,11 @@ protected function addServersToConfig(array &$config): void protected function writeJsonConfig(array $config): bool { $json = json_encode($config, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + + // Normalize line endings to Unix style + if ($json) { + $json = str_replace("\r\n", "\n", $json); + } return $json && $this->writeFile($json); } diff --git a/tests/Unit/Install/GuidelineWriterTest.php b/tests/Unit/Install/GuidelineWriterTest.php index 892ee6ad..9422c804 100644 --- a/tests/Unit/Install/GuidelineWriterTest.php +++ b/tests/Unit/Install/GuidelineWriterTest.php @@ -47,7 +47,7 @@ expect(fn () => $writer->write('test guidelines')) ->toThrow(RuntimeException::class, 'Failed to create directory: /root/boost_test'); -}); +})->skipOnWindows(); test('it writes guidelines to new file', function () { $tempFile = tempnam(sys_get_temp_dir(), 'boost_test_'); @@ -150,7 +150,7 @@ expect(fn () => $writer->write('test guidelines')) ->toThrow(RuntimeException::class, "Failed to open file: {$dirPath}"); -}); +})->skipOnWindows(); test('it preserves file content structure with proper spacing', function () { $tempFile = tempnam(sys_get_temp_dir(), 'boost_test_'); From dd7c891a7299e7033256d69b89a49ab23994b4f3 Mon Sep 17 00:00:00 2001 From: Ashley Hindle Date: Thu, 4 Sep 2025 12:28:04 +0100 Subject: [PATCH 13/15] ci: fix some windows tests --- src/Install/Mcp/FileWriter.php | 4 ++-- tests/Feature/Console/InstallCommandMultiselectTest.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Install/Mcp/FileWriter.php b/src/Install/Mcp/FileWriter.php index 237d12f3..98c508e5 100644 --- a/src/Install/Mcp/FileWriter.php +++ b/src/Install/Mcp/FileWriter.php @@ -187,7 +187,7 @@ protected function injectNewConfigKey(string $content): bool protected function generateServerJson(string $key, array $serverConfig, int $baseIndent = 0): string { $json = json_encode($serverConfig, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); - + // Normalize line endings to Unix style $json = str_replace("\r\n", "\n", $json); @@ -382,7 +382,7 @@ protected function addServersToConfig(array &$config): void protected function writeJsonConfig(array $config): bool { $json = json_encode($config, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); - + // Normalize line endings to Unix style if ($json) { $json = str_replace("\r\n", "\n", $json); diff --git a/tests/Feature/Console/InstallCommandMultiselectTest.php b/tests/Feature/Console/InstallCommandMultiselectTest.php index 66282bbb..9ad7d53d 100644 --- a/tests/Feature/Console/InstallCommandMultiselectTest.php +++ b/tests/Feature/Console/InstallCommandMultiselectTest.php @@ -89,4 +89,4 @@ // Verify it doesn't contain the display values expect(in_array('Boost MCP Server', $result, true))->toBeFalse(); expect(in_array('Package AI Guidelines (i.e. Framework, Inertia, Pest)', $result, true))->toBeFalse(); -})->skipOnWindows(); \ No newline at end of file +})->skipOnWindows(); From fd1b0ee206a97c381cee4191beacdbf25a1e436c Mon Sep 17 00:00:00 2001 From: Ashley Hindle Date: Thu, 4 Sep 2025 12:30:24 +0100 Subject: [PATCH 14/15] ci: set git config line endings before checkout --- .github/workflows/tests.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 478d629c..be9b6915 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -29,6 +29,11 @@ jobs: name: PHP ${{ matrix.php }} - Laravel ${{ matrix.laravel }} - ${{ matrix.os }} steps: + - name: Set git to use LF + run: | + git config --global core.autocrlf false + git config --global core.eol lf + - name: Checkout code uses: actions/checkout@v4 @@ -70,6 +75,11 @@ jobs: name: PHP ${{ matrix.php }} - Laravel ${{ matrix.laravel }} - ${{ matrix.os }} steps: + - name: Set git to use LF + run: | + git config --global core.autocrlf false + git config --global core.eol lf + - name: Checkout code uses: actions/checkout@v4 From 0eea496e495bd5618b1d8c4933fe077fd727ed9a Mon Sep 17 00:00:00 2001 From: Ashley Hindle Date: Thu, 4 Sep 2025 12:32:27 +0100 Subject: [PATCH 15/15] ci: fix database schema tests on windows --- .github/workflows/tests.yml | 4 ++-- tests/Feature/Mcp/Tools/DatabaseSchemaTest.php | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index be9b6915..b7d3b9fc 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -41,7 +41,7 @@ jobs: uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php }} - extensions: dom, curl, libxml, mbstring, zip, fileinfo, sqlite, pdo_sqlite + extensions: dom, curl, libxml, mbstring, zip, fileinfo, pdo, sqlite, pdo_sqlite ini-values: error_reporting=E_ALL tools: composer:v2.8 coverage: none @@ -87,7 +87,7 @@ jobs: uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php }} - extensions: dom, curl, libxml, mbstring, zip, fileinfo, sqlite, pdo_sqlite + extensions: dom, curl, libxml, mbstring, zip, fileinfo, pdo, sqlite, pdo_sqlite ini-values: error_reporting=E_ALL tools: composer:v2.8 coverage: none diff --git a/tests/Feature/Mcp/Tools/DatabaseSchemaTest.php b/tests/Feature/Mcp/Tools/DatabaseSchemaTest.php index ca08d1c2..f7397876 100644 --- a/tests/Feature/Mcp/Tools/DatabaseSchemaTest.php +++ b/tests/Feature/Mcp/Tools/DatabaseSchemaTest.php @@ -22,6 +22,7 @@ } // Build a throw-away table that we expect in the dump. + Schema::dropIfExists('examples'); Schema::create('examples', function (Blueprint $table) { $table->id(); $table->string('name');