From c5fd9be7004cea756f999ed8e743ad129912902f Mon Sep 17 00:00:00 2001 From: Dane Powell Date: Fri, 19 May 2023 14:12:55 -0700 Subject: [PATCH] BLT-5214: Drush 12 support (#4681) * BLT-5214: Drush 12 support * doublepipe * lockfile * PHP 8.2 * fix tests --- .github/workflows/orca.yml | 13 ++++- composer.json | 2 +- composer.lock | 69 ++++++++++++------------ docs/README.md | 14 ++--- src/Robo/Common/ArrayManipulator.php | 6 +++ src/Robo/Inspector/Inspector.php | 5 +- tests/phpunit/src/BltProjectTestBase.php | 2 +- 7 files changed, 63 insertions(+), 48 deletions(-) diff --git a/.github/workflows/orca.yml b/.github/workflows/orca.yml index d444bd44b..fb48f8941 100644 --- a/.github/workflows/orca.yml +++ b/.github/workflows/orca.yml @@ -13,7 +13,7 @@ jobs: env: ORCA_SUT_NAME: acquia/blt ORCA_SUT_BRANCH: main - ORCA_VERSION: ^3 + ORCA_VERSION: ${{ matrix.orca-version }} ORCA_PHPCS_STANDARD: AcquiaDrupalStrict BLT_PRINT_COMMAND_OUTPUT: 1 ORCA_JOB: ${{ matrix.orca-job }} @@ -42,22 +42,33 @@ jobs: - LOOSE_DEPRECATED_CODE_SCAN php-version: [ "8.1" ] coveralls-enable: [ "FALSE" ] + orca-version: [ "^4" ] include: - orca-job: INTEGRATED_TEST_ON_OLDEST_SUPPORTED php-version: "7.4" coveralls-enable: "FALSE" + orca-version: "^3" - orca-job: INTEGRATED_TEST_ON_OLDEST_SUPPORTED php-version: "8.0" coveralls-enable: "FALSE" + orca-version: "^3" - orca-job: INTEGRATED_TEST_ON_LATEST_LTS php-version: "7.4" coveralls-enable: "FALSE" + orca-version: "^3" + + - orca-job: INTEGRATED_TEST_ON_LATEST_LTS + php-version: "8.2" + coveralls-enable: "FALSE" - orca-job: ISOLATED_TEST_ON_CURRENT php-version: "8.1" coveralls-enable: "TRUE" + + - orca-job: ISOLATED_TEST_ON_CURRENT + php-version: "8.2" # - orca-job: ISOLATED_TEST_ON_NEXT_MAJOR_LATEST_MINOR_DEV # php-version: "8.1" # coveralls-enable: "FALSE" diff --git a/composer.json b/composer.json index 9340d509c..754621aea 100644 --- a/composer.json +++ b/composer.json @@ -26,7 +26,7 @@ "dflydev/dot-access-data": "^1.1.0 || ^2 || ^3", "doctrine/annotations": "^1.10.0", "drupal/core": "^9.0.0-alpha1 || ^10.0.0-alpha1", - "drush/drush": "^11", + "drush/drush": "^11 || ^12", "enlightn/security-checker": "^1.3", "grasmash/yaml-cli": "^2.0.0 || ^3.0.0", "grasmash/yaml-expander": "^3.0.2", diff --git a/composer.lock b/composer.lock index 6447f8ae2..7b5647c77 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": "935e1d6fe57036f6bdabda1f8314c2bb", + "content-hash": "40d7a25c2e9f012a061b7d20098fc83c", "packages": [ { "name": "acquia/drupal-environment-detector", @@ -1801,16 +1801,16 @@ }, { "name": "guzzlehttp/guzzle", - "version": "7.5.1", + "version": "7.6.1", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "b964ca597e86b752cd994f27293e9fa6b6a95ed9" + "reference": "8444a2bacf1960bc6a2b62ed86b8e72e11eebe51" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b964ca597e86b752cd994f27293e9fa6b6a95ed9", - "reference": "b964ca597e86b752cd994f27293e9fa6b6a95ed9", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/8444a2bacf1960bc6a2b62ed86b8e72e11eebe51", + "reference": "8444a2bacf1960bc6a2b62ed86b8e72e11eebe51", "shasum": "" }, "require": { @@ -1841,9 +1841,6 @@ "bamarni-bin": { "bin-links": true, "forward-command": false - }, - "branch-alias": { - "dev-master": "7.5-dev" } }, "autoload": { @@ -1909,7 +1906,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.5.1" + "source": "https://github.com/guzzle/guzzle/tree/7.6.1" }, "funding": [ { @@ -1925,7 +1922,7 @@ "type": "tidelift" } ], - "time": "2023-04-17T16:30:08+00:00" + "time": "2023-05-15T20:43:01+00:00" }, { "name": "guzzlehttp/promises", @@ -2729,16 +2726,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.15.4", + "version": "v4.15.5", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290" + "reference": "11e2663a5bc9db5d714eedb4277ee300403b4a9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6bb5176bc4af8bcb7d926f88718db9b96a2d4290", - "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/11e2663a5bc9db5d714eedb4277ee300403b4a9e", + "reference": "11e2663a5bc9db5d714eedb4277ee300403b4a9e", "shasum": "" }, "require": { @@ -2779,9 +2776,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.4" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.5" }, - "time": "2023-03-05T19:49:14+00:00" + "time": "2023-05-19T20:20:00+00:00" }, { "name": "pear/archive_tar", @@ -3330,16 +3327,16 @@ }, { "name": "psy/psysh", - "version": "v0.11.16", + "version": "v0.11.17", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "151b145906804eea8e5d71fea23bfb470c904bfb" + "reference": "3dc5d4018dabd80bceb8fe1e3191ba8460569f0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/151b145906804eea8e5d71fea23bfb470c904bfb", - "reference": "151b145906804eea8e5d71fea23bfb470c904bfb", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/3dc5d4018dabd80bceb8fe1e3191ba8460569f0a", + "reference": "3dc5d4018dabd80bceb8fe1e3191ba8460569f0a", "shasum": "" }, "require": { @@ -3400,9 +3397,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.11.16" + "source": "https://github.com/bobthecow/psysh/tree/v0.11.17" }, - "time": "2023-04-26T12:53:57+00:00" + "time": "2023-05-05T20:02:42+00:00" }, { "name": "ralouphie/getallheaders", @@ -6517,16 +6514,16 @@ }, { "name": "twig/twig", - "version": "v2.15.4", + "version": "v2.15.5", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "3e059001d6d597dd50ea7c74dd2464b4adea48d3" + "reference": "fc02a6af3eeb97c4bf5650debc76c2eda85ac22e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/3e059001d6d597dd50ea7c74dd2464b4adea48d3", - "reference": "3e059001d6d597dd50ea7c74dd2464b4adea48d3", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/fc02a6af3eeb97c4bf5650debc76c2eda85ac22e", + "reference": "fc02a6af3eeb97c4bf5650debc76c2eda85ac22e", "shasum": "" }, "require": { @@ -6581,7 +6578,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v2.15.4" + "source": "https://github.com/twigphp/Twig/tree/v2.15.5" }, "funding": [ { @@ -6593,7 +6590,7 @@ "type": "tidelift" } ], - "time": "2022-12-27T12:26:20+00:00" + "time": "2023-05-03T17:49:41+00:00" }, { "name": "typo3/phar-stream-wrapper", @@ -7160,16 +7157,16 @@ }, { "name": "slevomat/coding-standard", - "version": "8.11.1", + "version": "8.12.1", "source": { "type": "git", "url": "https://github.com/slevomat/coding-standard.git", - "reference": "af87461316b257e46e15bb041dca6fca3796d822" + "reference": "f69e2524e8770efb9b3e5ac4a0ebc0d54eb446d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/af87461316b257e46e15bb041dca6fca3796d822", - "reference": "af87461316b257e46e15bb041dca6fca3796d822", + "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/f69e2524e8770efb9b3e5ac4a0ebc0d54eb446d7", + "reference": "f69e2524e8770efb9b3e5ac4a0ebc0d54eb446d7", "shasum": "" }, "require": { @@ -7181,11 +7178,11 @@ "require-dev": { "phing/phing": "2.17.4", "php-parallel-lint/php-parallel-lint": "1.3.2", - "phpstan/phpstan": "1.10.14", + "phpstan/phpstan": "1.10.15", "phpstan/phpstan-deprecation-rules": "1.1.3", "phpstan/phpstan-phpunit": "1.3.11", "phpstan/phpstan-strict-rules": "1.5.1", - "phpunit/phpunit": "7.5.20|8.5.21|9.6.6|10.1.1" + "phpunit/phpunit": "7.5.20|8.5.21|9.6.8|10.1.3" }, "type": "phpcodesniffer-standard", "extra": { @@ -7209,7 +7206,7 @@ ], "support": { "issues": "https://github.com/slevomat/coding-standard/issues", - "source": "https://github.com/slevomat/coding-standard/tree/8.11.1" + "source": "https://github.com/slevomat/coding-standard/tree/8.12.1" }, "funding": [ { @@ -7221,7 +7218,7 @@ "type": "tidelift" } ], - "time": "2023-04-24T08:19:01+00:00" + "time": "2023-05-15T21:42:25+00:00" }, { "name": "squizlabs/php_codesniffer", diff --git a/docs/README.md b/docs/README.md index 350ca6ff4..ab34b73a7 100644 --- a/docs/README.md +++ b/docs/README.md @@ -12,13 +12,15 @@ BLT (Build and Launch Tool) provides an automation layer for testing, building, ## BLT Versions -| BLT Version | Supported? | Major Drupal Version | PHP Version | Drush Version | -|-------------|------------|----------------------|---------------|---------------| -| 13.x | Yes | 9.x and 10.x | 8.0 and 8.1 * | 11.x * | -| 12.x | **No** | 9.x | 7.4 | 10.x | -| 11.x | **No** | 8.x | 7.4 | 9.x and 10.x | +| BLT Version | Supported? | Major Drupal Version | PHP Version | Drush Version | +|-------------|------------|----------------------|-----------------|---------------| +| 13.x | Yes | 9.x, 10.x | 8.0, 8.1, 8.2 * | 11.x, 12.x * | +| 12.x | **No** | 9.x | 7.4 | 10.x | +| 11.x | **No** | 8.x | 7.4 | 9.x, 10.x | -BLT users must upgrade to at least BLT 13.5.x to upgrade to PHP 8.1. and Drush 11.0.7 (or beyond). +\* BLT users must upgrade to at least BLT 13.5.x to upgrade to PHP 8.1. and Drush 11.0.7 (or beyond). + +PHP 8.2, Drush 12, and Drupal 10 support is unstable. # License diff --git a/src/Robo/Common/ArrayManipulator.php b/src/Robo/Common/ArrayManipulator.php index 2ab77fd16..b3a15f319 100644 --- a/src/Robo/Common/ArrayManipulator.php +++ b/src/Robo/Common/ArrayManipulator.php @@ -132,6 +132,9 @@ public static function convertArrayToFlatTextArray(array $array) { elseif ($sub_value === FALSE) { $sub_value = 'false'; } + elseif ($sub_value === NULL) { + $sub_value = ''; + } $rows[] = [ "$key.$sub_key", wordwrap($sub_value, $max_line_length, "\n", TRUE), @@ -145,6 +148,9 @@ public static function convertArrayToFlatTextArray(array $array) { elseif ($value === FALSE) { $contents = 'false'; } + elseif ($value === NULL) { + $contents = ''; + } else { $contents = wordwrap($value, $max_line_length, "\n", TRUE); } diff --git a/src/Robo/Inspector/Inspector.php b/src/Robo/Inspector/Inspector.php index 22568bf40..9935f3228 100644 --- a/src/Robo/Inspector/Inspector.php +++ b/src/Robo/Inspector/Inspector.php @@ -189,9 +189,8 @@ public function isDrupalSettingsFileValid() { */ public function isDrupalInstalled() { $this->logger->debug("Verifying that Drupal is installed..."); - $result = $this->executor->drush(["status", "bootstrap"])->run(); - $output = trim($result->getMessage()); - $installed = $result->wasSuccessful() && strpos($output, 'Drupal bootstrap : Successful') !== FALSE; + $output = $this->getDrushStatus()['bootstrap']; + $installed = $output === 'Successful'; $this->logger->debug("Drupal bootstrap results: $output"); return $installed; diff --git a/tests/phpunit/src/BltProjectTestBase.php b/tests/phpunit/src/BltProjectTestBase.php index 58bbbf797..ba924a707 100644 --- a/tests/phpunit/src/BltProjectTestBase.php +++ b/tests/phpunit/src/BltProjectTestBase.php @@ -288,7 +288,7 @@ protected function blt($command, array $args = [], $stop_on_error = TRUE) { */ protected function writeFullWidthLine($message, OutputInterface $output) { $terminal_width = (new Terminal())->getWidth(); - $padding_len = ($terminal_width - strlen($message)) / 2; + $padding_len = ceil(($terminal_width - strlen($message)) / 2); $pad = $padding_len > 0 ? str_repeat('-', $padding_len) : ''; $output->writeln("{$pad}{$message}{$pad}"); }