diff --git a/.env b/.env index e36496d53..93c4a1b3c 100644 --- a/.env +++ b/.env @@ -248,7 +248,7 @@ VORTEX_NOTIFY_EMAIL_FROM=webmaster@your-site-domain.example # Multiple names can be specified as a comma-separated list of email addresses # with optional names in the format "email|name". # Example: "to1@example.com|Jane Doe, to2@example.com|John Doe" -VORTEX_NOTIFY_EMAIL_RECIPIENTS=webmaster@your-site-domain.example +VORTEX_NOTIFY_EMAIL_RECIPIENTS="webmaster@your-site-domain.example|Webmaster" #;> NOTIFICATIONS #;< DEMO diff --git a/.vortex/docs/content/workflows/variables.mdx b/.vortex/docs/content/workflows/variables.mdx index 0f274256f..dc307fa56 100644 --- a/.vortex/docs/content/workflows/variables.mdx +++ b/.vortex/docs/content/workflows/variables.mdx @@ -1319,7 +1319,7 @@ Applies to email notifications. Multiple names can be specified as a comma-separated list of email addresses
with optional names in the format "email|name".
Example: "to1@example.com|Jane Doe, to2@example.com|John Doe" -Default value: `webmaster@your-site-domain.example` +Default value: `webmaster@your-site-domain.example|Webmaster` Defined in: `.env`, `scripts/vortex/notify-email.sh` diff --git a/.vortex/installer/src/Command/InstallCommand.php b/.vortex/installer/src/Command/InstallCommand.php index 02c87090e..e3f0be3f0 100644 --- a/.vortex/installer/src/Command/InstallCommand.php +++ b/.vortex/installer/src/Command/InstallCommand.php @@ -397,7 +397,7 @@ protected function header(): void { EOT; $logo = Tui::terminalWidth() >= 80 ? $logo_large : $logo_small; - $logo = Tui::center($logo, min(Tui::terminalWidth(), 80), '─'); + $logo = Tui::center($logo, Tui::terminalWidth(), '─'); $logo = Tui::cyan($logo); $version = $this->getApplication()->getVersion(); @@ -410,7 +410,7 @@ protected function header(): void { $version = str_replace('@vortex-installer-version@', 'development', $version); } - $logo .= PHP_EOL . Tui::dim(str_pad(sprintf('Installer version: %s', $version), min(Tui::terminalWidth(), 80) - 2, ' ', STR_PAD_LEFT)); + $logo .= PHP_EOL . Tui::dim(str_pad(sprintf('Installer version: %s', $version), Tui::terminalWidth() - 2, ' ', STR_PAD_LEFT)); Tui::note($logo); diff --git a/.vortex/installer/src/Prompts/Handlers/Starter.php b/.vortex/installer/src/Prompts/Handlers/Starter.php index b5ac121ec..30028b344 100644 --- a/.vortex/installer/src/Prompts/Handlers/Starter.php +++ b/.vortex/installer/src/Prompts/Handlers/Starter.php @@ -141,7 +141,7 @@ public function postInstall(): ?string { // @todo Update to use separate steps for hosting and CI/CD configuration. $output .= 'Setup integration with your hosting and CI/CD providers:' . PHP_EOL; - $output .= ' See https://www.vortextemplate.com/docs/quickstart'; + $output .= ' See https://www.vortextemplate.com/docs/getting-started/installation'; $output .= PHP_EOL; return $output; diff --git a/.vortex/installer/src/Prompts/Handlers/Tools.php b/.vortex/installer/src/Prompts/Handlers/Tools.php index 5d642832b..b2698774e 100644 --- a/.vortex/installer/src/Prompts/Handlers/Tools.php +++ b/.vortex/installer/src/Prompts/Handlers/Tools.php @@ -67,17 +67,14 @@ public function discover(): null|string|bool|array { $tools = []; - $cj = JsonManipulator::fromFile($this->dstDir . '/composer.json'); - if ($cj instanceof JsonManipulator) { - foreach (static::getToolDefinitions('tools') as $tool => $config) { - if (isset($config['present']) && $config['present'] instanceof \Closure && $config['present']->bindTo($this)()) { - $tools[] = $tool; - } + foreach (static::getToolDefinitions('tools') as $tool => $config) { + if (isset($config['present']) && $config['present'] instanceof \Closure && $config['present']->bindTo($this)()) { + $tools[] = $tool; } - - sort($tools); } + sort($tools); + return $tools; } @@ -184,7 +181,8 @@ public static function getToolDefinitions(string $filter = 'all'): array { 'present' => function (): mixed { return File::contains($this->dstDir . '/composer.json', 'dealerdirect/phpcodesniffer-composer-installer') || File::contains($this->dstDir . '/composer.json', 'drupal/coder') || - File::contains($this->dstDir . '/composer.json', 'squizlabs/php_codesniffer'); + File::contains($this->dstDir . '/composer.json', 'squizlabs/php_codesniffer') || + File::exists($this->dstDir . '/phpcs.xml'); }, 'composer.json' => function (JsonManipulator $cj): void { $cj->removeSubNode('require-dev', 'dealerdirect/phpcodesniffer-composer-installer'); @@ -203,7 +201,8 @@ public static function getToolDefinitions(string $filter = 'all'): array { 'title' => 'PHPStan', 'present' => function (): mixed { return File::contains($this->dstDir . '/composer.json', 'phpstan/phpstan') || - File::contains($this->dstDir . '/composer.json', 'mglaman/phpstan-drupal'); + File::contains($this->dstDir . '/composer.json', 'mglaman/phpstan-drupal') || + File::exists($this->dstDir . '/phpstan.neon'); }, 'composer.json' => function (JsonManipulator $cj): void { $cj->removeSubNode('require-dev', 'phpstan/phpstan'); @@ -220,7 +219,9 @@ public static function getToolDefinitions(string $filter = 'all'): array { self::RECTOR => [ 'title' => 'Rector', 'present' => function (): mixed { - return File::contains($this->dstDir . '/composer.json', 'rector/rector'); + return File::contains($this->dstDir . '/composer.json', 'rector/rector') || + File::contains($this->dstDir . '/composer.json', 'palantirnet/drupal-rector') || + File::exists($this->dstDir . '/rector.php'); }, 'composer.json' => function (JsonManipulator $cj): void { $cj->removeSubNode('require-dev', 'rector/rector'); @@ -233,7 +234,8 @@ public static function getToolDefinitions(string $filter = 'all'): array { self::PHPMD => [ 'title' => 'PHP Mess Detector', 'present' => function (): mixed { - return File::contains($this->dstDir . '/composer.json', 'phpmd/phpmd'); + return File::contains($this->dstDir . '/composer.json', 'phpmd/phpmd') || + File::exists($this->dstDir . '/phpmd.xml'); }, 'composer.json' => function (JsonManipulator $cj): void { $cj->removeSubNode('require-dev', 'phpmd/phpmd'); @@ -249,7 +251,8 @@ public static function getToolDefinitions(string $filter = 'all'): array { self::PHPUNIT => [ 'title' => 'PHPUnit', 'present' => function (): mixed { - return File::contains($this->dstDir . '/composer.json', 'phpunit/phpunit'); + return File::contains($this->dstDir . '/composer.json', 'phpunit/phpunit') || + File::exists($this->dstDir . '/phpunit.xml'); }, 'composer.json' => function (JsonManipulator $cj): void { $cj->removeSubNode('require-dev', 'phpunit/phpunit'); @@ -279,7 +282,8 @@ public static function getToolDefinitions(string $filter = 'all'): array { 'title' => 'Behat', 'present' => function (): mixed { return File::contains($this->dstDir . '/composer.json', 'behat/behat') || - File::contains($this->dstDir . '/composer.json', 'drupal/drupal-extension'); + File::contains($this->dstDir . '/composer.json', 'drupal/drupal-extension') || + File::exists($this->dstDir . '/behat.yml'); }, 'composer.json' => function (JsonManipulator $cj): void { $cj->removeSubNode('require-dev', 'behat/behat'); diff --git a/.vortex/installer/src/Utils/Tui.php b/.vortex/installer/src/Utils/Tui.php index 53e613084..f1c908bf6 100644 --- a/.vortex/installer/src/Utils/Tui.php +++ b/.vortex/installer/src/Utils/Tui.php @@ -143,15 +143,15 @@ public static function list(array $values, ?string $title): void { table($header, $rows); } - public static function box(string $content, ?string $title = NULL, int $width = 80): void { + public static function box(string $content, ?string $title = NULL, ?int $width = NULL): void { $rows = []; - $width = min($width, static::terminalWidth()); + $width = $width ?? static::terminalWidth(); // 1 margin + 1 border + 1 padding + 1 padding + 1 border + 1 margin. $offset = 6; - $content = wordwrap($content, $width - $offset, PHP_EOL, FALSE); + $content = wordwrap($content, $width - $offset, PHP_EOL, TRUE); if ($title) { $title = wordwrap($title, $width - $offset, PHP_EOL, FALSE); @@ -193,8 +193,8 @@ public static function center(string $text, int $width = 80, ?string $border = N return implode(PHP_EOL, $centered_lines); } - public static function terminalWidth(): int { - return max(20, (new Terminal())->cols()); + public static function terminalWidth(int $max = 100): int { + return min($max, max(20, (new Terminal())->cols())); } public static function normalizeText(string $text): string { diff --git a/.vortex/installer/tests/Fixtures/install/_baseline/.env b/.vortex/installer/tests/Fixtures/install/_baseline/.env index 6d09a5c28..47eb5e083 100644 --- a/.vortex/installer/tests/Fixtures/install/_baseline/.env +++ b/.vortex/installer/tests/Fixtures/install/_baseline/.env @@ -189,7 +189,7 @@ VORTEX_NOTIFY_EMAIL_FROM=webmaster@star-wars.com # Multiple names can be specified as a comma-separated list of email addresses # with optional names in the format "email|name". # Example: "to1@example.com|Jane Doe, to2@example.com|John Doe" -VORTEX_NOTIFY_EMAIL_RECIPIENTS=webmaster@star-wars.com +VORTEX_NOTIFY_EMAIL_RECIPIENTS="webmaster@star-wars.com|Webmaster" ################################################################################ # DEMO # diff --git a/.vortex/installer/tests/Fixtures/install/db_download_source_acquia/.env b/.vortex/installer/tests/Fixtures/install/db_download_source_acquia/.env index 73a5052d1..0847dc843 100644 --- a/.vortex/installer/tests/Fixtures/install/db_download_source_acquia/.env +++ b/.vortex/installer/tests/Fixtures/install/db_download_source_acquia/.env @@ -16,7 +16,7 @@ @@ -190,17 +185,3 @@ # with optional names in the format "email|name". # Example: "to1@example.com|Jane Doe, to2@example.com|John Doe" - VORTEX_NOTIFY_EMAIL_RECIPIENTS=webmaster@star-wars.com + VORTEX_NOTIFY_EMAIL_RECIPIENTS="webmaster@star-wars.com|Webmaster" - -################################################################################ -# DEMO # diff --git a/.vortex/installer/tests/Fixtures/install/db_download_source_container_registry/.env b/.vortex/installer/tests/Fixtures/install/db_download_source_container_registry/.env index 50bc3b9ca..aade470a7 100644 --- a/.vortex/installer/tests/Fixtures/install/db_download_source_container_registry/.env +++ b/.vortex/installer/tests/Fixtures/install/db_download_source_container_registry/.env @@ -18,7 +18,7 @@ @@ -190,17 +189,3 @@ # with optional names in the format "email|name". # Example: "to1@example.com|Jane Doe, to2@example.com|John Doe" - VORTEX_NOTIFY_EMAIL_RECIPIENTS=webmaster@star-wars.com + VORTEX_NOTIFY_EMAIL_RECIPIENTS="webmaster@star-wars.com|Webmaster" - -################################################################################ -# DEMO # diff --git a/.vortex/installer/tests/Fixtures/install/db_download_source_ftp/.env b/.vortex/installer/tests/Fixtures/install/db_download_source_ftp/.env index aca5be492..424b485a9 100644 --- a/.vortex/installer/tests/Fixtures/install/db_download_source_ftp/.env +++ b/.vortex/installer/tests/Fixtures/install/db_download_source_ftp/.env @@ -26,7 +26,7 @@ @@ -190,17 +196,3 @@ # with optional names in the format "email|name". # Example: "to1@example.com|Jane Doe, to2@example.com|John Doe" - VORTEX_NOTIFY_EMAIL_RECIPIENTS=webmaster@star-wars.com + VORTEX_NOTIFY_EMAIL_RECIPIENTS="webmaster@star-wars.com|Webmaster" - -################################################################################ -# DEMO # diff --git a/.vortex/installer/tests/Fixtures/install/db_download_source_lagoon/.env b/.vortex/installer/tests/Fixtures/install/db_download_source_lagoon/.env index e479ab04f..60db18b3c 100644 --- a/.vortex/installer/tests/Fixtures/install/db_download_source_lagoon/.env +++ b/.vortex/installer/tests/Fixtures/install/db_download_source_lagoon/.env @@ -16,7 +16,7 @@ @@ -190,17 +185,3 @@ # with optional names in the format "email|name". # Example: "to1@example.com|Jane Doe, to2@example.com|John Doe" - VORTEX_NOTIFY_EMAIL_RECIPIENTS=webmaster@star-wars.com + VORTEX_NOTIFY_EMAIL_RECIPIENTS="webmaster@star-wars.com|Webmaster" - -################################################################################ -# DEMO # diff --git a/.vortex/installer/tests/Fixtures/install/hosting_acquia/.env b/.vortex/installer/tests/Fixtures/install/hosting_acquia/.env index e4d58d221..ffa024e68 100644 --- a/.vortex/installer/tests/Fixtures/install/hosting_acquia/.env +++ b/.vortex/installer/tests/Fixtures/install/hosting_acquia/.env @@ -64,11 +64,10 @@ # Email address(es) to send notifications to. # -@@ -189,18 +194,4 @@ - # Multiple names can be specified as a comma-separated list of email addresses +@@ -190,17 +195,3 @@ # with optional names in the format "email|name". # Example: "to1@example.com|Jane Doe, to2@example.com|John Doe" --VORTEX_NOTIFY_EMAIL_RECIPIENTS=webmaster@star-wars.com + VORTEX_NOTIFY_EMAIL_RECIPIENTS="webmaster@star-wars.com|Webmaster" - -################################################################################ -# DEMO # @@ -83,4 +82,3 @@ - -# URL of the database used for demonstration with URL database download type. -VORTEX_DB_DOWNLOAD_URL=https://github.com/drevops/vortex/releases/download/25.4.0/db_d11.demo.sql -+VORTEX_NOTIFY_EMAIL_RECIPIENTS=docrootmaster@star-wars.com diff --git a/.vortex/installer/tests/Fixtures/install/hosting_lagoon/.env b/.vortex/installer/tests/Fixtures/install/hosting_lagoon/.env index a005d67f2..971b32882 100644 --- a/.vortex/installer/tests/Fixtures/install/hosting_lagoon/.env +++ b/.vortex/installer/tests/Fixtures/install/hosting_lagoon/.env @@ -44,7 +44,7 @@ @@ -190,17 +197,3 @@ # with optional names in the format "email|name". # Example: "to1@example.com|Jane Doe, to2@example.com|John Doe" - VORTEX_NOTIFY_EMAIL_RECIPIENTS=webmaster@star-wars.com + VORTEX_NOTIFY_EMAIL_RECIPIENTS="webmaster@star-wars.com|Webmaster" - -################################################################################ -# DEMO # diff --git a/.vortex/installer/tests/Fixtures/install/names/.env b/.vortex/installer/tests/Fixtures/install/names/.env index b6c48387a..92f6afbbf 100644 --- a/.vortex/installer/tests/Fixtures/install/names/.env +++ b/.vortex/installer/tests/Fixtures/install/names/.env @@ -53,8 +53,8 @@ # Multiple names can be specified as a comma-separated list of email addresses # with optional names in the format "email|name". # Example: "to1@example.com|Jane Doe, to2@example.com|John Doe" --VORTEX_NOTIFY_EMAIL_RECIPIENTS=webmaster@star-wars.com -+VORTEX_NOTIFY_EMAIL_RECIPIENTS=webmaster@death-star.com +-VORTEX_NOTIFY_EMAIL_RECIPIENTS="webmaster@star-wars.com|Webmaster" ++VORTEX_NOTIFY_EMAIL_RECIPIENTS="webmaster@death-star.com|Webmaster" ################################################################################ # DEMO # diff --git a/.vortex/installer/tests/Fixtures/install/provision_database_lagoon/.env b/.vortex/installer/tests/Fixtures/install/provision_database_lagoon/.env index a005d67f2..971b32882 100644 --- a/.vortex/installer/tests/Fixtures/install/provision_database_lagoon/.env +++ b/.vortex/installer/tests/Fixtures/install/provision_database_lagoon/.env @@ -44,7 +44,7 @@ @@ -190,17 +197,3 @@ # with optional names in the format "email|name". # Example: "to1@example.com|Jane Doe, to2@example.com|John Doe" - VORTEX_NOTIFY_EMAIL_RECIPIENTS=webmaster@star-wars.com + VORTEX_NOTIFY_EMAIL_RECIPIENTS="webmaster@star-wars.com|Webmaster" - -################################################################################ -# DEMO # diff --git a/.vortex/installer/tests/Fixtures/install/provision_profile/.env b/.vortex/installer/tests/Fixtures/install/provision_profile/.env index 85fb09a09..c60304a28 100644 --- a/.vortex/installer/tests/Fixtures/install/provision_profile/.env +++ b/.vortex/installer/tests/Fixtures/install/provision_profile/.env @@ -32,7 +32,7 @@ @@ -190,17 +175,3 @@ # with optional names in the format "email|name". # Example: "to1@example.com|Jane Doe, to2@example.com|John Doe" - VORTEX_NOTIFY_EMAIL_RECIPIENTS=webmaster@star-wars.com + VORTEX_NOTIFY_EMAIL_RECIPIENTS="webmaster@star-wars.com|Webmaster" - -################################################################################ -# DEMO # diff --git a/.vortex/installer/tests/Fixtures/install/starter_drupal_cms_profile/.env b/.vortex/installer/tests/Fixtures/install/starter_drupal_cms_profile/.env index bcdb452b6..b5735ba08 100644 --- a/.vortex/installer/tests/Fixtures/install/starter_drupal_cms_profile/.env +++ b/.vortex/installer/tests/Fixtures/install/starter_drupal_cms_profile/.env @@ -10,7 +10,7 @@ @@ -190,17 +190,3 @@ # with optional names in the format "email|name". # Example: "to1@example.com|Jane Doe, to2@example.com|John Doe" - VORTEX_NOTIFY_EMAIL_RECIPIENTS=webmaster@star-wars.com + VORTEX_NOTIFY_EMAIL_RECIPIENTS="webmaster@star-wars.com|Webmaster" - -################################################################################ -# DEMO # diff --git a/.vortex/installer/tests/Fixtures/install/starter_drupal_profile/.env b/.vortex/installer/tests/Fixtures/install/starter_drupal_profile/.env index ef456848b..5d89a426f 100644 --- a/.vortex/installer/tests/Fixtures/install/starter_drupal_profile/.env +++ b/.vortex/installer/tests/Fixtures/install/starter_drupal_profile/.env @@ -1,7 +1,7 @@ @@ -190,17 +190,3 @@ # with optional names in the format "email|name". # Example: "to1@example.com|Jane Doe, to2@example.com|John Doe" - VORTEX_NOTIFY_EMAIL_RECIPIENTS=webmaster@star-wars.com + VORTEX_NOTIFY_EMAIL_RECIPIENTS="webmaster@star-wars.com|Webmaster" - -################################################################################ -# DEMO # diff --git a/.vortex/installer/tests/Unit/Handlers/ToolsPromptManagerTest.php b/.vortex/installer/tests/Unit/Handlers/ToolsPromptManagerTest.php index 4c5fe00fb..cb572524f 100644 --- a/.vortex/installer/tests/Unit/Handlers/ToolsPromptManagerTest.php +++ b/.vortex/installer/tests/Unit/Handlers/ToolsPromptManagerTest.php @@ -6,6 +6,7 @@ use DrevOps\VortexInstaller\Prompts\Handlers\Tools; use DrevOps\VortexInstaller\Utils\Config; +use DrevOps\VortexInstaller\Utils\File; use Laravel\Prompts\Key; use PHPUnit\Framework\Attributes\CoversClass; @@ -65,6 +66,14 @@ function (AbstractPromptManagerTestCase $test, Config $config): void { ], 'tools - discovery - phpcs' => [ + [], + [Tools::id() => [Tools::PHPCS]] + $expected_installed, + function (AbstractPromptManagerTestCase $test, Config $config): void { + $test->stubVortexProject($config); + $test->stubComposerJsonDependencies(['drupal/coder' => '*'], TRUE); + }, + ], + 'tools - discovery - phpcs, alt' => [ [], [Tools::id() => [Tools::PHPCS]] + $expected_installed, function (AbstractPromptManagerTestCase $test, Config $config): void { @@ -72,13 +81,12 @@ function (AbstractPromptManagerTestCase $test, Config $config): void { $test->stubComposerJsonDependencies(['squizlabs/php_codesniffer' => '*'], TRUE); }, ], - - 'tools - discovery - phpmd' => [ + 'tools - discovery - phpcs, alt2' => [ [], - [Tools::id() => [Tools::PHPMD]] + $expected_installed, + [Tools::id() => [Tools::PHPCS]] + $expected_installed, function (AbstractPromptManagerTestCase $test, Config $config): void { $test->stubVortexProject($config); - $test->stubComposerJsonDependencies(['phpmd/phpmd' => '*'], TRUE); + File::dump(static::$sut . '/phpcs.xml'); }, ], @@ -90,6 +98,23 @@ function (AbstractPromptManagerTestCase $test, Config $config): void { $test->stubComposerJsonDependencies(['phpstan/phpstan' => '*'], TRUE); }, ], + 'tools - discovery - phpstan, alt' => [ + [], + [Tools::id() => [Tools::PHPSTAN]] + $expected_installed, + function (AbstractPromptManagerTestCase $test, Config $config): void { + $test->stubVortexProject($config); + $test->stubComposerJsonDependencies(['mglaman/phpstan-drupal' => '*'], TRUE); + }, + ], + 'tools - discovery - phpstan, alt2' => [ + [], + [Tools::id() => [Tools::PHPSTAN]] + $expected_installed, + function (AbstractPromptManagerTestCase $test, Config $config): void { + $test->stubVortexProject($config); + File::dump(static::$sut . '/phpstan.neon'); + }, + ], + 'tools - discovery - rector' => [ [], [Tools::id() => [Tools::RECTOR]] + $expected_installed, @@ -98,6 +123,39 @@ function (AbstractPromptManagerTestCase $test, Config $config): void { $test->stubComposerJsonDependencies(['rector/rector' => '*'], TRUE); }, ], + 'tools - discovery - rector, alt' => [ + [], + [Tools::id() => [Tools::RECTOR]] + $expected_installed, + function (AbstractPromptManagerTestCase $test, Config $config): void { + $test->stubVortexProject($config); + $test->stubComposerJsonDependencies(['palantirnet/drupal-rector' => '*'], TRUE); + }, + ], + 'tools - discovery - rector, alt2' => [ + [], + [Tools::id() => [Tools::RECTOR]] + $expected_installed, + function (AbstractPromptManagerTestCase $test, Config $config): void { + $test->stubVortexProject($config); + File::dump(static::$sut . '/rector.php'); + }, + ], + + 'tools - discovery - phpmd' => [ + [], + [Tools::id() => [Tools::PHPMD]] + $expected_installed, + function (AbstractPromptManagerTestCase $test, Config $config): void { + $test->stubVortexProject($config); + $test->stubComposerJsonDependencies(['phpmd/phpmd' => '*'], TRUE); + }, + ], + 'tools - discovery - phpmd, alt' => [ + [], + [Tools::id() => [Tools::PHPMD]] + $expected_installed, + function (AbstractPromptManagerTestCase $test, Config $config): void { + $test->stubVortexProject($config); + File::dump(static::$sut . '/phpmd.xml'); + }, + ], 'tools - discovery - phpunit' => [ [], @@ -107,6 +165,14 @@ function (AbstractPromptManagerTestCase $test, Config $config): void { $test->stubComposerJsonDependencies(['phpunit/phpunit' => '*'], TRUE); }, ], + 'tools - discovery - phpunit, alt' => [ + [], + [Tools::id() => [Tools::PHPUNIT]] + $expected_installed, + function (AbstractPromptManagerTestCase $test, Config $config): void { + $test->stubVortexProject($config); + File::dump(static::$sut . '/phpunit.xml'); + }, + ], 'tools - discovery - behat' => [ [], @@ -116,6 +182,22 @@ function (AbstractPromptManagerTestCase $test, Config $config): void { $test->stubComposerJsonDependencies(['behat/behat' => '*'], TRUE); }, ], + 'tools - discovery - behat, alt' => [ + [], + [Tools::id() => [Tools::BEHAT]] + $expected_installed, + function (AbstractPromptManagerTestCase $test, Config $config): void { + $test->stubVortexProject($config); + $test->stubComposerJsonDependencies(['drupal/drupal-extension' => '*'], TRUE); + }, + ], + 'tools - discovery - behat, alt2' => [ + [], + [Tools::id() => [Tools::BEHAT]] + $expected_installed, + function (AbstractPromptManagerTestCase $test, Config $config): void { + $test->stubVortexProject($config); + File::dump(static::$sut . '/behat.yml'); + }, + ], ]; } diff --git a/.vortex/installer/tests/Unit/TuiTest.php b/.vortex/installer/tests/Unit/TuiTest.php index 3d032a76b..35d242c68 100644 --- a/.vortex/installer/tests/Unit/TuiTest.php +++ b/.vortex/installer/tests/Unit/TuiTest.php @@ -424,12 +424,14 @@ public static function dataProviderBox(): array { 'terminal_width' => 100, 'expected_output' => <<