Skip to content

Commit 6231184

Browse files
committed
Merge remote-tracking branch 'origin/2.3-develop-pr19' into 2.3-develop-pr19
2 parents b3fe5f8 + db2d875 commit 6231184

File tree

5 files changed

+117
-70
lines changed

5 files changed

+117
-70
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?xml version="1.0"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
9+
<router id="admin">
10+
<route id="checkout" frontName="checkout">
11+
<module name="Magento_Checkout" before="Magento_Backend" />
12+
</route>
13+
</router>
14+
</config>

app/code/Magento/CheckoutAgreements/etc/adminhtml/routes.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
-->
88
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
99
<router id="admin">
10-
<route id="checkout" frontName="checkout">
10+
<route id="checkout">
1111
<module name="Magento_CheckoutAgreements" before="Magento_Backend" />
1212
</route>
1313
</router>

dev/tests/static/framework/Magento/TestFramework/Dependency/DiRule.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ private function getPattern()
4040
{
4141
if ($this->pattern === null) {
4242
$this->pattern = '~\b(?<class>(?<module>('
43-
. implode('_|', Files::init()->getNamespaces())
43+
. implode('[_\\\\]|', Files::init()->getNamespaces())
4444
. '[_\\\\])[a-zA-Z0-9]+)[a-zA-Z0-9_\\\\]*)\b~';
4545
}
4646

dev/tests/static/framework/Magento/TestFramework/Dependency/PhpRule.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ private function caseClassesAndIdentifiers($currentModule, $file, &$contents)
116116
{
117117
$pattern = '~\b(?<class>(?<module>('
118118
. implode(
119-
'_|',
119+
'[_\\\\]|',
120120
Files::init()->getNamespaces()
121121
)
122122
. '[_\\\\])[a-zA-Z0-9]+)'

dev/tests/static/testsuite/Magento/Test/Integrity/DependencyTest.php

Lines changed: 100 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
/**
2222
* @SuppressWarnings(PHPMD.ExcessiveClassComplexity)
23+
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
2324
*/
2425
class DependencyTest extends \PHPUnit\Framework\TestCase
2526
{
@@ -124,7 +125,7 @@ class DependencyTest extends \PHPUnit\Framework\TestCase
124125
* )))
125126
* @var array
126127
*/
127-
protected static $_mapDependencies = [];
128+
protected static $mapDependencies = [];
128129

129130
/**
130131
* Regex pattern for validation file path of theme
@@ -410,7 +411,7 @@ private function collectDependency($dependency, $currentModule, &$undeclared)
410411
$this->_setDependencies($currentModule, $type, self::MAP_TYPE_REDUNDANT, $module);
411412
}
412413

413-
$this->_addDependencies($currentModule, $type, self::MAP_TYPE_FOUND, $nsModule);
414+
$this->addDependency($currentModule, $type, self::MAP_TYPE_FOUND, $nsModule);
414415
}
415416

416417
/**
@@ -421,7 +422,7 @@ private function collectDependency($dependency, $currentModule, &$undeclared)
421422
*/
422423
public function collectRedundant()
423424
{
424-
foreach (array_keys(self::$_mapDependencies) as $module) {
425+
foreach (array_keys(self::$mapDependencies) as $module) {
425426
$declared = $this->_getDependencies($module, self::TYPE_HARD, self::MAP_TYPE_DECLARED);
426427
$found = array_merge(
427428
$this->_getDependencies($module, self::TYPE_HARD, self::MAP_TYPE_FOUND),
@@ -440,7 +441,7 @@ public function collectRedundant()
440441
public function testRedundant()
441442
{
442443
$output = [];
443-
foreach (array_keys(self::$_mapDependencies) as $module) {
444+
foreach (array_keys(self::$mapDependencies) as $module) {
444445
$result = [];
445446
$redundant = $this->_getDependencies($module, self::TYPE_HARD, self::MAP_TYPE_REDUNDANT);
446447
if (count($redundant)) {
@@ -687,37 +688,40 @@ protected static function _getTypes()
687688
* Converts a composer json component name into the Magento Module form
688689
*
689690
* @param string $jsonName The name of a composer json component or dependency e.g. 'magento/module-theme'
691+
* @param array $packageModuleMap Mapping package name with module namespace.
690692
* @return string The corresponding Magento Module e.g. 'Magento\Theme'
691693
*/
692-
protected static function convertModuleName($jsonName)
694+
protected static function convertModuleName(string $jsonName, array $packageModuleMap): string
693695
{
694-
if (strpos($jsonName, 'magento/module') !== false) {
695-
$moduleName = str_replace('-', ' ', $jsonName);
696-
$moduleName = ucwords($moduleName);
697-
$moduleName = str_replace('module ', '', $moduleName);
698-
$moduleName = str_replace(' ', '', $moduleName);
699-
$moduleName = str_replace('/', '\\', $moduleName);
700-
return $moduleName;
701-
} elseif (strpos($jsonName, 'magento/magento') !== false || strpos($jsonName, 'magento/framework') !== false) {
696+
if (isset($packageModuleMap[$jsonName])) {
697+
return $packageModuleMap[$jsonName];
698+
}
699+
700+
if (strpos($jsonName, 'magento/magento') !== false || strpos($jsonName, 'magento/framework') !== false) {
702701
$moduleName = str_replace('/', "\t", $jsonName);
703702
$moduleName = str_replace('framework-', "Framework\t", $moduleName);
704703
$moduleName = str_replace('-', ' ', $moduleName);
705704
$moduleName = ucwords($moduleName);
706705
$moduleName = str_replace("\t", '\\', $moduleName);
707706
$moduleName = str_replace(' ', '', $moduleName);
707+
708708
return $moduleName;
709709
}
710+
710711
return $jsonName;
711712
}
712713

713714
/**
714-
* Initialise map of dependencies
715+
* Initialise map of dependencies.
715716
*
717+
* @return void
716718
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
717719
* @SuppressWarnings(PHPMD.NPathComplexity)
720+
* @throws \Exception
718721
*/
719722
protected static function _initDependencies()
720723
{
724+
$packageModuleMap = self::getPackageModuleMapping();
721725
$jsonFiles = Files::init()->getComposerFiles(ComponentRegistrar::MODULE, false);
722726
foreach ($jsonFiles as $file) {
723727
$contents = file_get_contents($file);
@@ -726,72 +730,100 @@ protected static function _initDependencies()
726730
throw new \Exception("Invalid Json: $file");
727731
}
728732
$json = new \Magento\Framework\Config\Composer\Package(json_decode($contents));
729-
$moduleName = self::convertModuleName($json->get('name'));
730-
self::$_mapDependencies[$moduleName] = @(self::$_mapDependencies[$moduleName] ?: []);
731-
733+
$moduleName = self::convertModuleName($json->get('name'), $packageModuleMap);
734+
if (!isset(self::$mapDependencies[$moduleName])) {
735+
self::$mapDependencies[$moduleName] = [];
736+
}
732737
foreach (self::_getTypes() as $type) {
733-
if (!isset(self::$_mapDependencies[$moduleName][$type])) {
734-
self::$_mapDependencies[$moduleName][$type] = [
738+
if (!isset(self::$mapDependencies[$moduleName][$type])) {
739+
self::$mapDependencies[$moduleName][$type] = [
735740
self::MAP_TYPE_DECLARED => [],
736741
self::MAP_TYPE_FOUND => [],
737742
self::MAP_TYPE_REDUNDANT => [],
738743
];
739744
}
740745
}
741746

742-
$require = $json->get('require');
743-
if (isset($require) && !empty($require)) {
744-
foreach ($require as $requiredModule => $version) {
745-
if (0 === strpos($requiredModule, 'magento/')
746-
&& 'magento/magento-composer-installer' != $requiredModule
747-
) {
748-
$type = self::TYPE_HARD;
749-
self::_addDependencies(
750-
$moduleName,
751-
$type,
752-
self::MAP_TYPE_DECLARED,
753-
self::convertModuleName($requiredModule)
754-
);
755-
}
756-
}
757-
}
758-
$suggest = $json->get('suggest');
759-
if (isset($suggest) && !empty($suggest)) {
760-
foreach ($suggest as $requiredModule => $version) {
761-
if (0 === strpos($requiredModule, 'magento/')
762-
&& 'magento/magento-composer-installer' != $requiredModule
763-
) {
764-
$type = self::TYPE_SOFT;
765-
self::_addDependencies(
766-
$moduleName,
767-
$type,
768-
self::MAP_TYPE_DECLARED,
769-
self::convertModuleName($requiredModule)
770-
);
771-
}
772-
}
773-
}
747+
$require = array_keys((array)$json->get('require'));
748+
self::addDependencies($moduleName, $require, self::TYPE_HARD, $packageModuleMap);
749+
750+
$suggest = array_keys((array)$json->get('suggest'));
751+
self::addDependencies($moduleName, $suggest, self::TYPE_SOFT, $packageModuleMap);
774752
}
775753
}
776754

777755
/**
778-
* Add dependency map items
756+
* Add dependencies to dependency list.
779757
*
780-
* @param $module
781-
* @param $type
782-
* @param $mapType
783-
* @param $dependencies
758+
* @param string $moduleName
759+
* @param array $packageNames
760+
* @param string $type
761+
* @param array $packageModuleMap
762+
*
763+
* @return void
764+
*/
765+
private static function addDependencies(
766+
string $moduleName,
767+
array $packageNames,
768+
string $type,
769+
array $packageModuleMap
770+
): void {
771+
$packageNames = array_filter($packageNames, function ($packageName) use ($packageModuleMap) {
772+
return isset($packageModuleMap[$packageName]) ||
773+
0 === strpos($packageName, 'magento/') && 'magento/magento-composer-installer' != $packageName;
774+
});
775+
776+
foreach ($packageNames as $packageName) {
777+
self::addDependency(
778+
$moduleName,
779+
$type,
780+
self::MAP_TYPE_DECLARED,
781+
self::convertModuleName($packageName, $packageModuleMap)
782+
);
783+
}
784+
}
785+
786+
/**
787+
* Add dependency map items.
788+
*
789+
* @param string $module
790+
* @param string $type
791+
* @param string $mapType
792+
* @param string $dependency
793+
*
794+
* @return void
784795
*/
785-
protected static function _addDependencies($module, $type, $mapType, $dependencies)
796+
private static function addDependency(string $module, string $type, string $mapType, string $dependency): void
786797
{
787-
if (!is_array($dependencies)) {
788-
$dependencies = [$dependencies];
798+
if (isset(self::$mapDependencies[$module][$type][$mapType])) {
799+
self::$mapDependencies[$module][$type][$mapType][$dependency] = $dependency;
789800
}
790-
foreach ($dependencies as $dependency) {
791-
if (isset(self::$_mapDependencies[$module][$type][$mapType])) {
792-
self::$_mapDependencies[$module][$type][$mapType][$dependency] = $dependency;
801+
}
802+
803+
/**
804+
* Returns package name on module name mapping.
805+
*
806+
* @return array
807+
* @throws \Exception
808+
*/
809+
private static function getPackageModuleMapping(): array
810+
{
811+
$jsonFiles = Files::init()->getComposerFiles(ComponentRegistrar::MODULE, false);
812+
813+
$packageModuleMapping = [];
814+
foreach ($jsonFiles as $file) {
815+
$contents = file_get_contents($file);
816+
$composerJson = json_decode($contents);
817+
if (null == $composerJson) {
818+
throw new \Exception("Invalid Json: $file");
793819
}
820+
$moduleXml = simplexml_load_file(dirname($file) . '/etc/module.xml');
821+
$moduleName = str_replace('_', '\\', (string)$moduleXml->module->attributes()->name);
822+
$packageName = $composerJson->name;
823+
$packageModuleMapping[$packageName] = $moduleName;
794824
}
825+
826+
return $packageModuleMapping;
795827
}
796828

797829
/**
@@ -804,9 +836,10 @@ protected static function _addDependencies($module, $type, $mapType, $dependenci
804836
*/
805837
protected function _getDependencies($module, $type, $mapType)
806838
{
807-
if (isset(self::$_mapDependencies[$module][$type][$mapType])) {
808-
return self::$_mapDependencies[$module][$type][$mapType];
839+
if (isset(self::$mapDependencies[$module][$type][$mapType])) {
840+
return self::$mapDependencies[$module][$type][$mapType];
809841
}
842+
810843
return [];
811844
}
812845

@@ -823,8 +856,8 @@ protected function _setDependencies($module, $type, $mapType, $dependencies)
823856
if (!is_array($dependencies)) {
824857
$dependencies = [$dependencies];
825858
}
826-
if (isset(self::$_mapDependencies[$module][$type][$mapType])) {
827-
self::$_mapDependencies[$module][$type][$mapType] = $dependencies;
859+
if (isset(self::$mapDependencies[$module][$type][$mapType])) {
860+
self::$mapDependencies[$module][$type][$mapType] = $dependencies;
828861
}
829862
}
830863

@@ -836,6 +869,6 @@ protected function _setDependencies($module, $type, $mapType, $dependencies)
836869
*/
837870
protected function _isFake($module)
838871
{
839-
return isset(self::$_mapDependencies[$module]) ? false : true;
872+
return isset(self::$mapDependencies[$module]) ? false : true;
840873
}
841874
}

0 commit comments

Comments
 (0)