Skip to content

Commit a66ffdb

Browse files
MCLOUD-5507: Improve the GitHub installation workflow (magento#710)
1 parent cd74e9a commit a66ffdb

File tree

3 files changed

+39
-20
lines changed

3 files changed

+39
-20
lines changed

src/Command/Dev/UpdateComposer.php

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,12 @@
99

1010
use Magento\MagentoCloud\Command\Dev\UpdateComposer\ClearModuleRequirements;
1111
use Magento\MagentoCloud\Command\Dev\UpdateComposer\ComposerGenerator;
12+
use Magento\MagentoCloud\Config\ConfigException;
1213
use Magento\MagentoCloud\Config\GlobalSection;
1314
use Magento\MagentoCloud\Filesystem\Driver\File;
1415
use Magento\MagentoCloud\Filesystem\FileList;
16+
use Magento\MagentoCloud\Filesystem\FileSystemException;
17+
use Magento\MagentoCloud\Package\UndefinedPackageException;
1518
use Magento\MagentoCloud\Shell\ShellInterface;
1619
use Symfony\Component\Console\Command\Command;
1720
use Symfony\Component\Console\Input\InputInterface;
@@ -24,7 +27,7 @@
2427
*/
2528
class UpdateComposer extends Command
2629
{
27-
const NAME = 'dev:git:update-composer';
30+
public const NAME = 'dev:git:update-composer';
2831

2932
/**
3033
* @var ComposerGenerator
@@ -85,7 +88,7 @@ public function __construct(
8588
/**
8689
* @inheritdoc
8790
*/
88-
protected function configure()
91+
protected function configure(): void
8992
{
9093
$this->setName(static::NAME)
9194
->setDescription('Updates composer for deployment from git.');
@@ -96,6 +99,10 @@ protected function configure()
9699
/**
97100
* {@inheritdoc}
98101
*
102+
* @throws ConfigException
103+
* @throws FileSystemException
104+
* @throws UndefinedPackageException
105+
*
99106
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
100107
*/
101108
protected function execute(InputInterface $input, OutputInterface $output)
@@ -116,7 +123,7 @@ protected function execute(InputInterface $input, OutputInterface $output)
116123

117124
$this->file->filePutContents(
118125
$this->fileList->getMagentoComposer(),
119-
json_encode($composer, JSON_PRETTY_PRINT)
126+
json_encode($composer, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES)
120127
);
121128

122129
$output->writeln('Run composer update');

src/Command/Dev/UpdateComposer/ComposerGenerator.php

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,21 @@
99

1010
use Magento\MagentoCloud\Filesystem\DirectoryList;
1111
use Magento\MagentoCloud\Filesystem\Driver\File;
12+
use Magento\MagentoCloud\Filesystem\FileSystemException;
1213
use Magento\MagentoCloud\Package\MagentoVersion;
14+
use Magento\MagentoCloud\Package\UndefinedPackageException;
1315

1416
/**
1517
* Generates composer.json data for installation from git.
1618
*/
1719
class ComposerGenerator
1820
{
19-
const REPO_TYPE_SINGLE_PACKAGE = 'single-package';
21+
public const REPO_TYPE_SINGLE_PACKAGE = 'single-package';
2022

2123
/**
2224
* Type for packages with modules in the root directory such as Inventory
2325
*/
24-
const REPO_TYPE_FLAT_STRUCTURE = 'flat-structure';
26+
public const REPO_TYPE_FLAT_STRUCTURE = 'flat-structure';
2527

2628
/**
2729
* @var DirectoryList
@@ -58,6 +60,9 @@ public function __construct(
5860
*
5961
* @param array $repoOptions
6062
* @return array
63+
* @throws UndefinedPackageException
64+
* @throws FileSystemException
65+
*
6166
* @codeCoverageIgnore
6267
*/
6368
public function generate(array $repoOptions): array
@@ -125,6 +130,7 @@ public function getInstallFromGitScripts(array $repoOptions): array
125130
*
126131
* @param array $repoOptions
127132
* @return array
133+
* @throws UndefinedPackageException
128134
*/
129135
private function getBaseComposer(array $repoOptions): array
130136
{
@@ -208,8 +214,11 @@ private function getBaseComposer(array $repoOptions): array
208214
* @param array $repoOptions
209215
* @param array $composer
210216
* @return array
211-
* @codeCoverageIgnore
217+
* @throws FilesystemException
218+
*
212219
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
220+
*
221+
* @codeCoverageIgnore
213222
*/
214223
private function addModules(array $repoOptions, array $composer): array
215224
{
@@ -252,7 +261,7 @@ private function addModules(array $repoOptions, array $composer): array
252261
* @param string $dir
253262
* @param array $composer
254263
* @param string|null $version
255-
* @throws \Magento\MagentoCloud\Filesystem\FileSystemException
264+
* @throws FileSystemException
256265
*/
257266
private function addModule(string $dir, array &$composer, string $version = null): void
258267
{
@@ -277,7 +286,7 @@ private function addModule(string $dir, array &$composer, string $version = null
277286
*/
278287
private function isSinglePackage(array $repoOptions): bool
279288
{
280-
return isset($repoOptions['type']) && $repoOptions['type'] == self::REPO_TYPE_SINGLE_PACKAGE;
289+
return isset($repoOptions['type']) && $repoOptions['type'] === self::REPO_TYPE_SINGLE_PACKAGE;
281290
}
282291

283292
/**
@@ -288,6 +297,6 @@ private function isSinglePackage(array $repoOptions): bool
288297
*/
289298
private function isFlatStructurePackage(array $repoOptions): bool
290299
{
291-
return isset($repoOptions['type']) && $repoOptions['type'] == self::REPO_TYPE_FLAT_STRUCTURE;
300+
return isset($repoOptions['type']) && $repoOptions['type'] === self::REPO_TYPE_FLAT_STRUCTURE;
292301
}
293302
}

src/Test/Unit/Command/Dev/UpdateComposerTest.php

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
use Magento\MagentoCloud\Filesystem\Driver\File;
1313
use Magento\MagentoCloud\Filesystem\FileList;
1414
use Magento\MagentoCloud\Shell\ShellInterface;
15+
use PHPUnit\Framework\MockObject\MockObject;
1516
use PHPUnit\Framework\TestCase;
16-
use PHPUnit_Framework_MockObject_MockObject as Mock;
1717
use Symfony\Component\Console\Tester\CommandTester;
1818

1919
/**
@@ -22,40 +22,43 @@
2222
class UpdateComposerTest extends TestCase
2323
{
2424
/**
25-
* @var UpdateComposer\ComposerGenerator|Mock
25+
* @var UpdateComposer
26+
*/
27+
private $updateComposerCommand;
28+
29+
/**
30+
* @var UpdateComposer\ComposerGenerator|MockObject
2631
*/
2732
private $composerGeneratorMock;
2833

2934
/**
30-
* @var UpdateComposer\ClearModuleRequirements|Mock
35+
* @var UpdateComposer\ClearModuleRequirements|MockObject
3136
*/
3237
private $clearModuleRequirementsMock;
3338

3439
/**
35-
* @var ShellInterface|Mock
40+
* @var ShellInterface|MockObject
3641
*/
3742
private $shellMock;
3843

3944
/**
40-
* @var GlobalSection|Mock
45+
* @var GlobalSection|MockObject
4146
*/
4247
private $globalSectionMock;
4348

4449
/**
45-
* @var FileList|Mock
50+
* @var FileList|MockObject
4651
*/
4752
private $fileListMock;
4853

4954
/**
50-
* @var File|Mock
55+
* @var File|MockObject
5156
*/
5257
private $fileMock;
5358

5459
/**
55-
* @var UpdateComposer
60+
* @inheritDoc
5661
*/
57-
private $updateComposerCommand;
58-
5962
protected function setUp()
6063
{
6164
$this->composerGeneratorMock = $this->createMock(UpdateComposer\ComposerGenerator::class);
@@ -75,7 +78,7 @@ protected function setUp()
7578
);
7679
}
7780

78-
public function testExecute()
81+
public function testExecute(): void
7982
{
8083
$gitOptions = [
8184
'clear_magento_module_requirements' => true,

0 commit comments

Comments
 (0)