Skip to content

Commit 4f682f8

Browse files
Merge pull request #62 from acquia/ACMS-3964
ACMS-3964: Support Drupal 11 on acquia/drupal-recommended-settings
2 parents 034bde5 + 075283e commit 4f682f8

9 files changed

+71
-46
lines changed

.github/workflows/drs_ci.yml

+6-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ jobs:
4848
../orca/bin/ci/after_script.sh
4949
PHPUNIT_TESTS:
5050
name: "Run PHPUnit tests for CORE: ${{ matrix.orca-job }}, PHP: ${{ matrix.php-version }}"
51-
runs-on: ubuntu-latest
51+
runs-on: ubuntu-24.04
5252
strategy:
5353
matrix:
5454
php-version:
@@ -58,11 +58,16 @@ jobs:
5858
orca-job:
5959
- ISOLATED_TEST_ON_CURRENT
6060
- INTEGRATED_TEST_ON_PREVIOUS_MINOR
61+
- ISOLATED_TEST_ON_NEXT_MAJOR_LATEST_MINOR_BETA_OR_LATER
6162
exclude:
6263
- orca-job: INTEGRATED_TEST_ON_PREVIOUS_MINOR
6364
php-version: 8.3
6465
- orca-job: INTEGRATED_TEST_ON_PREVIOUS_MINOR
6566
php-version: 8.2
67+
- orca-job: ISOLATED_TEST_ON_NEXT_MAJOR_LATEST_MINOR_BETA_OR_LATER
68+
php-version: 8.1
69+
- orca-job: ISOLATED_TEST_ON_NEXT_MAJOR_LATEST_MINOR_BETA_OR_LATER
70+
php-version: 8.2
6671
env:
6772
ORCA_JOB: ${{ matrix.orca-job }}
6873
CI: TRUE

composer.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
"php": ">=8.1",
2323
"composer-plugin-api": "^2",
2424
"acquia/drupal-environment-detector": "^1.5.3",
25-
"consolidation/config": "^2.0.0",
26-
"drush/drush": "^11.6 || ^12",
25+
"consolidation/config": "^2 || ^3",
26+
"drush/drush": "^12 || ^13",
2727
"grasmash/yaml-expander": "^3.0",
2828
"loophp/phposinfo": "^1.7.1"
2929
},

src/Config/ConfigInitializer.php

+5-5
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
namespace Acquia\Drupal\RecommendedSettings\Config;
44

55
use Acquia\Drupal\RecommendedSettings\Helpers\EnvironmentDetector;
6-
use Consolidation\Config\Config;
76
use Consolidation\Config\ConfigInterface;
87
use Consolidation\Config\Loader\YamlConfigLoader;
8+
use Drush\Config\DrushConfig;
99
use Symfony\Component\Console\Input\InputInterface;
1010

1111
/**
@@ -18,7 +18,7 @@ class ConfigInitializer {
1818
/**
1919
* Config.
2020
*/
21-
protected Config $config;
21+
protected DrushConfig $config;
2222

2323
/**
2424
* Loader.
@@ -43,7 +43,7 @@ class ConfigInitializer {
4343
/**
4444
* ConfigInitializer constructor.
4545
*
46-
* @param \Consolidation\Config\ConfigInterface|\Consolidation\Config\Config $config
46+
* @param \Consolidation\Config\ConfigInterface|\Drush\Config\DrushConfig $config
4747
* The config object.
4848
* @param \Symfony\Component\Console\Input\InputInterface|null $input
4949
* An input object or null.
@@ -147,7 +147,7 @@ protected function loadSiteConfig(): ConfigInitializer {
147147
* @param string[] $data
148148
* An array of data.
149149
*/
150-
public function addConfig(array $data): Config {
150+
public function addConfig(array $data): DrushConfig {
151151
$this->processor->add($data);
152152
return $this->config;
153153
}
@@ -170,7 +170,7 @@ protected function determineEnvironment(): string {
170170
/**
171171
* Process config.
172172
*/
173-
public function processConfig(): Config {
173+
public function processConfig(): DrushConfig {
174174
$this->config->replace($this->processor->export());
175175
return $this->config;
176176
}

src/Config/DefaultConfig.php

+1-3
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,10 @@
22

33
namespace Acquia\Drupal\RecommendedSettings\Config;
44

5-
use Consolidation\Config\Config;
6-
75
/**
86
* The configuration for settings.
97
*/
10-
class DefaultConfig extends Config {
8+
class DefaultConfig extends DefaultDrushConfig {
119

1210
/**
1311
* Config Constructor.

src/Config/DefaultDrushConfig.php

+29-11
Original file line numberDiff line numberDiff line change
@@ -2,30 +2,48 @@
22

33
namespace Acquia\Drupal\RecommendedSettings\Config;
44

5-
use Consolidation\Config\Config;
65
use Drush\Config\DrushConfig;
76

87
/**
98
* The configuration for settings.
109
*/
11-
class DefaultDrushConfig extends Config {
10+
class DefaultDrushConfig extends DrushConfig {
1211

1312
/**
1413
* Config Constructor.
1514
*
1615
* @param \Drush\Config\DrushConfig $config
1716
* The drush config object.
1817
*/
19-
public function __construct(DrushConfig $config) {
20-
$config->set('repo.root', $config->get("runtime.project"));
21-
$config->set('docroot', $config->get("options.root"));
22-
$config->set('composer.bin', $config->get("drush.vendor-dir") . '/bin');
23-
if ($config->get("options.ansi")) {
24-
$config->set('drush.ansi', $config->get("options.ansi"));
18+
public function __construct(?DrushConfig $config = NULL) {
19+
parent::__construct();
20+
if ($config) {
21+
$this->set('repo.root', $config->get("runtime.project"));
22+
$this->set('docroot', $config->get("options.root"));
23+
$this->set('composer.bin', $config->get("drush.vendor-dir") . '/bin');
24+
if ($config->get("options.ansi") !== NULL) {
25+
$this->set('drush.ansi', $config->get("options.ansi"));
26+
}
27+
$this->set('drush.bin', $config->get("runtime.drush-script"));
28+
$this->setDefault('drush.alias', "self");
29+
$this->combine($config->export());
2530
}
26-
$config->set('drush.bin', $config->get("runtime.drush-script"));
27-
$config->setDefault('drush.alias', "self");
28-
parent::__construct($config->export());
31+
}
32+
33+
/**
34+
* {@inheritdoc}
35+
*/
36+
public function combine($data) {
37+
$this->getContext(self::PROCESS_CONTEXT)->combine($data);
38+
return $this;
39+
}
40+
41+
/**
42+
* {@inheritdoc}
43+
*/
44+
public function replace($data) {
45+
$this->getContext(self::PROCESS_CONTEXT)->replace($data);
46+
return $this;
2947
}
3048

3149
}

tests/packages_alter.yml

+5-5
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ acquia/drupal-recommended-settings:
44
drush/drush:
55
is_company_package: false
66
core_matrix:
7-
10.1.x:
8-
version: 11.x
9-
version_dev: 11.x
10-
'*':
7+
10.x:
118
version: 12.x
12-
version_dev: 12.x-dev
9+
version_dev: 12.x-dev
10+
'*':
11+
version: 13.x
12+
version_dev: 13.x-dev

tests/src/CommandsTestBase.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@
66
use Acquia\Drupal\RecommendedSettings\Tests\Helpers\NullLogOutputStylers;
77
use Acquia\Drupal\RecommendedSettings\Tests\Traits\OutputAwareTrait;
88
use Consolidation\Log\Logger;
9+
use Drush\Config\DrushConfig;
910
use League\Container\Container;
1011
use PHPUnit\Framework\TestCase;
1112
use Psr\Container\ContainerInterface;
1213
use Robo\Collection\CollectionBuilder;
1314
use Robo\Common\BuilderAwareTrait;
14-
use Robo\Config\Config;
1515
use Robo\Robo;
1616
use Robo\Tasks;
1717
use Symfony\Component\Console\Output\NullOutput;
@@ -49,7 +49,7 @@ protected function createContainer(?ContainerInterface $container = NULL): void
4949
$output = new NullOutput();
5050
$this->setOutput($output);
5151

52-
$config = new Config();
52+
$config = new DrushConfig();
5353
$this->setConfig($config);
5454
$logger = new Logger($this->getOutput());
5555
$null_log_output = new NullLogOutputStylers;

tests/src/Functional/Config/ConfigInitializerTest.php

+10-10
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
namespace Acquia\Drupal\RecommendedSettings\Tests\Functional\Config;
44

55
use Acquia\Drupal\RecommendedSettings\Config\ConfigInitializer;
6+
use Acquia\Drupal\RecommendedSettings\Config\DefaultDrushConfig;
67
use Acquia\Drupal\RecommendedSettings\Tests\FunctionalTestBase;
7-
use Consolidation\Config\Config;
88
use Symfony\Component\Console\Input\InputDefinition;
99
use Symfony\Component\Console\Input\InputOption;
1010
use Symfony\Component\Console\Input\StringInput;
@@ -22,7 +22,7 @@ class ConfigInitializerTest extends FunctionalTestBase {
2222
* @throws \ReflectionException
2323
*/
2424
public function testSetSite(): void {
25-
$config = new Config();
25+
$config = new DefaultDrushConfig();
2626
$config_initializer = new ConfigInitializer($config);
2727

2828
$method = $this->getReflectionMethod($config_initializer::class, "setSite");
@@ -46,7 +46,7 @@ public function testSetSite(): void {
4646
* @throws \ReflectionException
4747
*/
4848
public function testDetermineSite(): void {
49-
$config = new Config();
49+
$config = new DefaultDrushConfig();
5050
$config_initializer = new ConfigInitializer($config);
5151
$method = $this->getReflectionMethod($config_initializer::class, "determineSite");
5252
$result = $method->invoke($config_initializer);
@@ -74,7 +74,7 @@ public function testDetermineSite(): void {
7474
*/
7575
public function testDetermineEnvironment(): void {
7676
putenv("CI=");
77-
$config = new Config();
77+
$config = new DefaultDrushConfig();
7878
$config_initializer = new ConfigInitializer($config);
7979
$method = $this->getReflectionMethod($config_initializer::class, "determineEnvironment");
8080
$result = $method->invoke($config_initializer);
@@ -85,7 +85,7 @@ public function testDetermineEnvironment(): void {
8585
$this->assertSame("ci", $result);
8686
putenv("CI=");
8787

88-
$config = new Config();
88+
$config = new DefaultDrushConfig();
8989
$config->set("environment", "dev");
9090
$config_initializer = new ConfigInitializer($config);
9191
$method = $this->getReflectionMethod($config_initializer::class, "determineEnvironment");
@@ -98,7 +98,7 @@ public function testDetermineEnvironment(): void {
9898
*/
9999
public function testInitialize(): void {
100100
putenv("CI=");
101-
$config = new Config();
101+
$config = new DefaultDrushConfig();
102102
$config_initializer = new ConfigInitializer($config);
103103
$config_initializer->initialize();
104104
$this->assertEquals($config_initializer->processConfig()->export(), [
@@ -122,7 +122,7 @@ public function testInitialize(): void {
122122
]);
123123

124124
putenv("CI=true");
125-
$config = new Config();
125+
$config = new DefaultDrushConfig();
126126
$config_initializer = new ConfigInitializer($config);
127127
$config_initializer->initialize();
128128

@@ -141,7 +141,7 @@ public function testInitialize(): void {
141141
*/
142142
public function testLoadAllConfig(): void {
143143
putenv("CI=");
144-
$config = new Config();
144+
$config = new DefaultDrushConfig();
145145
$config_initializer = new ConfigInitializer($config);
146146
$config = $config_initializer->initialize()->loadAllConfig()->processConfig();
147147
$this->assertEquals($config->export(), [
@@ -161,7 +161,7 @@ public function testLoadAllConfig(): void {
161161
],
162162
]);
163163

164-
$config = new Config();
164+
$config = new DefaultDrushConfig();
165165
$project_root = $this->getProjectRoot();
166166
$drupal_root = $this->getDrupalRoot();
167167
$config->set("repo.root", $project_root);
@@ -191,7 +191,7 @@ public function testLoadAllConfig(): void {
191191
],
192192
]);
193193

194-
$config = new Config();
194+
$config = new DefaultDrushConfig();
195195
$config->set("repo.root", $project_root);
196196
$config->set("docroot", $this->getDrupalRoot());
197197
$config_initializer = new ConfigInitializer($config);

tests/src/unit/Robo/Config/ConfigAwareTraitTest.php

+11-7
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,19 @@ class ConfigAwareTraitTest extends TestCase {
2020
* Tests the getConfigValue() for ConfigAwareTrait trait.
2121
*/
2222
public function testGetConfigValue(): void {
23+
$this->config = new DrushConfig();
24+
// Tests when no value exist for the key, then default value must return.
2325
$this->assertEquals(
24-
"/var/www/html/acms.prod/vendor",
25-
$this->getConfigValue("composer.bin", "/var/www/html/acms.prod/vendor"),
26+
"/var/www/html/acms.prod/vendor/bin",
27+
$this->getConfigValue("composer.bin", "/var/www/html/acms.prod/vendor/bin"),
2628
);
27-
$config = new DrushConfig();
28-
$config->set("runtime.project", "/var/www/html/acms.prod");
29-
$config->set("options.root", "/var/www/html/acms.prod/docroot");
30-
$drush_config = new DefaultDrushConfig($config);
31-
$this->setConfig($drush_config);
29+
$drush_config = new DrushConfig();
30+
$drush_config->set("runtime.project", "/var/www/html/acms.prod");
31+
$drush_config->set("options.root", "/var/www/html/acms.prod/docroot");
32+
$drush_config->set("drush.vendor-dir", $drush_config->get("runtime.project") . "/vendor");
33+
$drush_config->set("options.root", "/var/www/html/acms.prod");
34+
$default_drush_config = new DefaultDrushConfig($drush_config);
35+
$this->setConfig($default_drush_config);
3236
$this->assertEquals("/var/www/html/acms.prod", $this->getConfigValue("repo.root"));
3337
}
3438

0 commit comments

Comments
 (0)