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' => <<