Skip to content

Commit b83cc00

Browse files
committed
MQE-1650: update MFTF configuration to read Test entities from new location
- address reviews
1 parent 1639361 commit b83cc00

File tree

11 files changed

+188
-306
lines changed

11 files changed

+188
-306
lines changed
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\FunctionalTestingFramework\Composer;
7+
8+
use Composer\IO\BufferIO;
9+
10+
/**
11+
* Abstract Composer Handler
12+
*/
13+
abstract class AbstractComposer
14+
{
15+
const TEST_MODULE_PACKAGE_TYPE = 'magento2-functional-test-module';
16+
const MAGENTO_MODULE_PACKAGE_TYPE = 'magento2-module';
17+
18+
const MODULE_NAME_IN_SUGGEST_REGEX_INDEX = 'module_name';
19+
const MODULE_NAME_IN_SUGGEST_REGEX = '/type:\s*'
20+
. self::MAGENTO_MODULE_PACKAGE_TYPE
21+
. '\s*,\s*name:\s*(?<'
22+
. self::MODULE_NAME_IN_SUGGEST_REGEX_INDEX
23+
. '>[^,\s]+_[^,\s]+)/';
24+
25+
/**#@+
26+
* Composer package array keys
27+
*/
28+
const PACKAGE_NAME = 'name';
29+
const PACKAGE_TYPE = 'type';
30+
const PACKAGE_VERSION = 'version';
31+
const PACKAGE_DESCRIPTION = 'description';
32+
const PACKAGE_INSTALLEDPATH = 'installedPath';
33+
const PACKAGE_REQUIRES = 'requires';
34+
const PACKAGE_DEVREQUIRES = 'devRequires';
35+
const PACKAGE_SUGGESTS = 'suggests';
36+
const PACKAGE_SUGGESTED_MAGENTO_MODULES = 'suggestedMagentoModules';
37+
/**#@-*/
38+
39+
/**
40+
* @var \Composer\Composer
41+
*/
42+
protected $composer;
43+
44+
/**
45+
* @param string $composerFile
46+
*/
47+
public function __construct($composerFile)
48+
{
49+
$this->composer = \Composer\Factory::create(new BufferIO(), $composerFile);
50+
}
51+
52+
/**
53+
* Get composer
54+
*
55+
* @return \Composer\Composer
56+
*/
57+
protected function getComposer()
58+
{
59+
return $this->composer;
60+
}
61+
62+
/**
63+
* Parse input array and return all suggested magento module names, i.e. an example "suggest" in composer.json
64+
*
65+
* "suggest": {
66+
* "magento/module-backend": "type: magento2-module, name: Magento_Backend, version: ~100.0.0",
67+
* "magento/module-store": "type: magento2-module, name: Magento_Store, version: ~100.0.0"
68+
* }
69+
*
70+
* @param array $suggests
71+
* @return array
72+
*/
73+
protected function parseSuggestsForMagentoModuleNames($suggests)
74+
{
75+
$magentoModuleNames = [];
76+
foreach ($suggests as $suggest) {
77+
// Expecting pattern - type: magento2-module, name: Magento_Store, version: ~100.0.0
78+
preg_match(self::MODULE_NAME_IN_SUGGEST_REGEX, $suggest, $match);
79+
if (isset($match[self::MODULE_NAME_IN_SUGGEST_REGEX_INDEX])) {
80+
$magentoModuleNames[] = $match[self::MODULE_NAME_IN_SUGGEST_REGEX_INDEX];
81+
}
82+
}
83+
84+
return array_unique($magentoModuleNames);
85+
}
86+
}

src/Magento/FunctionalTestingFramework/Composer/Handlers/ComposerInstaller.php renamed to src/Magento/FunctionalTestingFramework/Composer/ComposerInstall.php

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,20 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6-
namespace Magento\FunctionalTestingFramework\Composer\Handlers;
6+
namespace Magento\FunctionalTestingFramework\Composer;
77

88
use Composer\Package\CompletePackageInterface;
99

1010
/**
1111
* Class ComposerInstaller handles information and dependencies for composer installed packages
1212
*/
13-
class ComposerInstaller extends AbstractComposerHandler
13+
class ComposerInstall extends AbstractComposer
1414
{
15+
/**
16+
* @var \Composer\Package\Locker
17+
*/
18+
private $locker;
19+
1520
/**
1621
* Determines if package is a mftf test package
1722
*
@@ -64,17 +69,17 @@ public function getInstalledTestPackages()
6469
foreach ($this->getLocker()->getLockedRepository()->getPackages() as $package) {
6570
if ($package->getType() == self::TEST_MODULE_PACKAGE_TYPE) {
6671
$packages[$package->getName()] = [
67-
self::KEY_PACKAGE_NAME => $package->getName(),
68-
self::KEY_PACKAGE_TYPE => $package->getType(),
69-
self::KEY_PACKAGE_VERSION => $package->getPrettyVersion(),
70-
self::KEY_PACKAGE_DESCRIPTION => $package->getDescription(),
71-
self::KEY_PACKAGE_SUGGESTS => $package->getSuggests(),
72-
self::KEY_PACKAGE_REQUIRES => $package->getRequires(),
73-
self::KEY_PACKAGE_DEVREQUIRES => $package->getDevRequires(),
74-
self::KEY_PACKAGE_SUGGESTED_MAGENTO_MODULES => $this->parseSuggestsForMagentoModuleNames(
72+
self::PACKAGE_NAME => $package->getName(),
73+
self::PACKAGE_TYPE => $package->getType(),
74+
self::PACKAGE_VERSION => $package->getPrettyVersion(),
75+
self::PACKAGE_DESCRIPTION => $package->getDescription(),
76+
self::PACKAGE_SUGGESTS => $package->getSuggests(),
77+
self::PACKAGE_REQUIRES => $package->getRequires(),
78+
self::PACKAGE_DEVREQUIRES => $package->getDevRequires(),
79+
self::PACKAGE_SUGGESTED_MAGENTO_MODULES => $this->parseSuggestsForMagentoModuleNames(
7580
$package->getSuggests()
7681
),
77-
self::KEY_PACKAGE_INSTALLEDPATH => $this->getComposer()->getInstallationManager()
82+
self::PACKAGE_INSTALLEDPATH => $this->getComposer()->getInstallationManager()
7883
->getInstallPath($package)
7984
];
8085
}

src/Magento/FunctionalTestingFramework/Composer/Handlers/ComposerPackager.php renamed to src/Magento/FunctionalTestingFramework/Composer/ComposerPackage.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,18 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6-
namespace Magento\FunctionalTestingFramework\Composer\Handlers;
6+
namespace Magento\FunctionalTestingFramework\Composer;
77

88
/**
99
* Class ComposerPackage contains composer json information in a MFTF test package
1010
*/
11-
class ComposerPackager extends AbstractComposerHandler
11+
class ComposerPackage extends AbstractComposer
1212
{
13+
/**
14+
* @var \Composer\Package\CompletePackage
15+
*/
16+
private $rootPackage;
17+
1318
/**
1419
* Retrieve package name from composer json
1520
*

src/Magento/FunctionalTestingFramework/Composer/Handlers/AbstractComposerHandler.php

Lines changed: 0 additions & 131 deletions
This file was deleted.

src/Magento/FunctionalTestingFramework/Composer/Objects/ComposerFactory.php

Lines changed: 0 additions & 39 deletions
This file was deleted.

src/Magento/FunctionalTestingFramework/Composer/Util/ComposerJsonFinder.php

Lines changed: 0 additions & 68 deletions
This file was deleted.

0 commit comments

Comments
 (0)