Skip to content

Commit 35c4142

Browse files
committed
Merge branch 'MAGETWO-73694' into MPI-PR-2.2.5
2 parents 5afa7d3 + b7a443a commit 35c4142

File tree

3 files changed

+112
-68
lines changed

3 files changed

+112
-68
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/testsuite/Magento/Test/Integrity/DependencyTest.php

Lines changed: 97 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ class DependencyTest extends \PHPUnit\Framework\TestCase
112112
* )))
113113
* @var array
114114
*/
115-
protected static $_mapDependencies = [];
115+
protected static $mapDependencies = [];
116116

117117
/**
118118
* Regex pattern for validation file path of theme
@@ -395,7 +395,7 @@ private function collectDependency($dependency, $currentModule, &$undeclared)
395395
$this->_setDependencies($currentModule, $type, self::MAP_TYPE_REDUNDANT, $module);
396396
}
397397

398-
$this->_addDependencies($currentModule, $type, self::MAP_TYPE_FOUND, $nsModule);
398+
$this->addDependency($currentModule, $type, self::MAP_TYPE_FOUND, $nsModule);
399399
}
400400

401401
/**
@@ -406,7 +406,7 @@ private function collectDependency($dependency, $currentModule, &$undeclared)
406406
*/
407407
public function collectRedundant()
408408
{
409-
foreach (array_keys(self::$_mapDependencies) as $module) {
409+
foreach (array_keys(self::$mapDependencies) as $module) {
410410
$declared = $this->_getDependencies($module, self::TYPE_HARD, self::MAP_TYPE_DECLARED);
411411
$found = $this->_getDependencies($module, self::TYPE_HARD, self::MAP_TYPE_FOUND);
412412
$found['Magento\Framework'] = 'Magento\Framework';
@@ -422,7 +422,7 @@ public function collectRedundant()
422422
public function testRedundant()
423423
{
424424
$output = [];
425-
foreach (array_keys(self::$_mapDependencies) as $module) {
425+
foreach (array_keys(self::$mapDependencies) as $module) {
426426
$result = [];
427427
$redundant = $this->_getDependencies($module, self::TYPE_HARD, self::MAP_TYPE_REDUNDANT);
428428
if (count($redundant)) {
@@ -649,18 +649,16 @@ protected static function _getTypes()
649649
* Converts a composer json component name into the Magento Module form
650650
*
651651
* @param string $jsonName The name of a composer json component or dependency e.g. 'magento/module-theme'
652+
* @param array $packageModuleMap Mapping package name with module namespace.
652653
* @return string The corresponding Magento Module e.g. 'Magento\Theme'
653654
*/
654-
protected static function convertModuleName($jsonName)
655+
protected static function convertModuleName($jsonName, array $packageModuleMap)
655656
{
656-
if (strpos($jsonName, 'magento/module') !== false) {
657-
$moduleName = str_replace('-', ' ', $jsonName);
658-
$moduleName = ucwords($moduleName);
659-
$moduleName = str_replace('module ', '', $moduleName);
660-
$moduleName = str_replace(' ', '', $moduleName);
661-
$moduleName = str_replace('/', '\\', $moduleName);
662-
return $moduleName;
663-
} elseif (strpos($jsonName, 'magento/magento') !== false || strpos($jsonName, 'magento/framework') !== false) {
657+
if (isset($packageModuleMap[$jsonName])) {
658+
return $packageModuleMap[$jsonName];
659+
}
660+
661+
if (strpos($jsonName, 'magento/magento') !== false || strpos($jsonName, 'magento/framework') !== false) {
664662
$moduleName = str_replace('/', "\t", $jsonName);
665663
$moduleName = str_replace('framework-', "Framework\t", $moduleName);
666664
$moduleName = str_replace('-', ' ', $moduleName);
@@ -669,17 +667,21 @@ protected static function convertModuleName($jsonName)
669667
$moduleName = str_replace(' ', '', $moduleName);
670668
return $moduleName;
671669
}
670+
672671
return $jsonName;
673672
}
674673

675674
/**
676-
* Initialise map of dependencies
675+
* Initialise map of dependencies.
677676
*
677+
* @return void
678678
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
679679
* @SuppressWarnings(PHPMD.NPathComplexity)
680+
* @throws \Exception
680681
*/
681682
protected static function _initDependencies()
682683
{
684+
$packageModuleMap = self::getPackageModuleMapping();
683685
$jsonFiles = Files::init()->getComposerFiles(ComponentRegistrar::MODULE, false);
684686
foreach ($jsonFiles as $file) {
685687
$contents = file_get_contents($file);
@@ -688,72 +690,100 @@ protected static function _initDependencies()
688690
throw new \Exception("Invalid Json: $file");
689691
}
690692
$json = new \Magento\Framework\Config\Composer\Package(json_decode($contents));
691-
$moduleName = self::convertModuleName($json->get('name'));
692-
self::$_mapDependencies[$moduleName] = @(self::$_mapDependencies[$moduleName] ?: []);
693-
693+
$moduleName = self::convertModuleName($json->get('name'), $packageModuleMap);
694+
if (!isset(self::$mapDependencies[$moduleName])) {
695+
self::$mapDependencies[$moduleName] = [];
696+
}
694697
foreach (self::_getTypes() as $type) {
695-
if (!isset(self::$_mapDependencies[$moduleName][$type])) {
696-
self::$_mapDependencies[$moduleName][$type] = [
698+
if (!isset(self::$mapDependencies[$moduleName][$type])) {
699+
self::$mapDependencies[$moduleName][$type] = [
697700
self::MAP_TYPE_DECLARED => [],
698701
self::MAP_TYPE_FOUND => [],
699702
self::MAP_TYPE_REDUNDANT => [],
700703
];
701704
}
702705
}
703706

704-
$require = $json->get('require');
705-
if (isset($require) && !empty($require)) {
706-
foreach ($require as $requiredModule => $version) {
707-
if (0 === strpos($requiredModule, 'magento/')
708-
&& 'magento/magento-composer-installer' != $requiredModule
709-
) {
710-
$type = self::TYPE_HARD;
711-
self::_addDependencies(
712-
$moduleName,
713-
$type,
714-
self::MAP_TYPE_DECLARED,
715-
self::convertModuleName($requiredModule)
716-
);
717-
}
718-
}
719-
}
720-
$suggest = $json->get('suggest');
721-
if (isset($suggest) && !empty($suggest)) {
722-
foreach ($suggest as $requiredModule => $version) {
723-
if (0 === strpos($requiredModule, 'magento/')
724-
&& 'magento/magento-composer-installer' != $requiredModule
725-
) {
726-
$type = self::TYPE_SOFT;
727-
self::_addDependencies(
728-
$moduleName,
729-
$type,
730-
self::MAP_TYPE_DECLARED,
731-
self::convertModuleName($requiredModule)
732-
);
733-
}
734-
}
735-
}
707+
$require = array_keys((array)$json->get('require'));
708+
self::addDependencies($moduleName, $require, self::TYPE_HARD, $packageModuleMap);
709+
710+
$suggest = array_keys((array)$json->get('suggest'));
711+
self::addDependencies($moduleName, $suggest, self::TYPE_SOFT, $packageModuleMap);
736712
}
737713
}
738714

739715
/**
740-
* Add dependency map items
716+
* Add dependencies to dependency list.
741717
*
742-
* @param $module
743-
* @param $type
744-
* @param $mapType
745-
* @param $dependencies
718+
* @param string $moduleName
719+
* @param array $packageNames
720+
* @param string $type
721+
* @param array $packageModuleMap
722+
*
723+
* @return void
724+
*/
725+
private static function addDependencies(
726+
string $moduleName,
727+
array $packageNames,
728+
string $type,
729+
array $packageModuleMap
730+
) {
731+
$packageNames = array_filter($packageNames, function ($packageName) use ($packageModuleMap) {
732+
return isset($packageModuleMap[$packageName]) ||
733+
0 === strpos($packageName, 'magento/') && 'magento/magento-composer-installer' != $packageName;
734+
});
735+
736+
foreach ($packageNames as $packageName) {
737+
self::addDependency(
738+
$moduleName,
739+
$type,
740+
self::MAP_TYPE_DECLARED,
741+
self::convertModuleName($packageName, $packageModuleMap)
742+
);
743+
}
744+
}
745+
746+
/**
747+
* Add dependency map items.
748+
*
749+
* @param string $module
750+
* @param string $type
751+
* @param string $mapType
752+
* @param string $dependency
753+
*
754+
* @return void
746755
*/
747-
protected static function _addDependencies($module, $type, $mapType, $dependencies)
756+
private static function addDependency(string $module, string $type, string $mapType, string $dependency)
748757
{
749-
if (!is_array($dependencies)) {
750-
$dependencies = [$dependencies];
758+
if (isset(self::$mapDependencies[$module][$type][$mapType])) {
759+
self::$mapDependencies[$module][$type][$mapType][$dependency] = $dependency;
751760
}
752-
foreach ($dependencies as $dependency) {
753-
if (isset(self::$_mapDependencies[$module][$type][$mapType])) {
754-
self::$_mapDependencies[$module][$type][$mapType][$dependency] = $dependency;
761+
}
762+
763+
/**
764+
* Returns package name on module name mapping.
765+
*
766+
* @return array
767+
* @throws \Exception
768+
*/
769+
private static function getPackageModuleMapping()
770+
{
771+
$jsonFiles = Files::init()->getComposerFiles(ComponentRegistrar::MODULE, false);
772+
773+
$packageModuleMapping = [];
774+
foreach ($jsonFiles as $file) {
775+
$contents = file_get_contents($file);
776+
$composerJson = json_decode($contents);
777+
if (null == $composerJson) {
778+
throw new \Exception("Invalid Json: $file");
755779
}
780+
$moduleXml = simplexml_load_file(dirname($file) . '/etc/module.xml');
781+
$moduleName = str_replace('_', '\\', (string)$moduleXml->module->attributes()->name);
782+
$packageName = $composerJson->name;
783+
$packageModuleMapping[$packageName] = $moduleName;
756784
}
785+
786+
return $packageModuleMapping;
757787
}
758788

759789
/**
@@ -766,8 +796,8 @@ protected static function _addDependencies($module, $type, $mapType, $dependenci
766796
*/
767797
protected function _getDependencies($module, $type, $mapType)
768798
{
769-
if (isset(self::$_mapDependencies[$module][$type][$mapType])) {
770-
return self::$_mapDependencies[$module][$type][$mapType];
799+
if (isset(self::$mapDependencies[$module][$type][$mapType])) {
800+
return self::$mapDependencies[$module][$type][$mapType];
771801
}
772802
return [];
773803
}
@@ -785,8 +815,8 @@ protected function _setDependencies($module, $type, $mapType, $dependencies)
785815
if (!is_array($dependencies)) {
786816
$dependencies = [$dependencies];
787817
}
788-
if (isset(self::$_mapDependencies[$module][$type][$mapType])) {
789-
self::$_mapDependencies[$module][$type][$mapType] = $dependencies;
818+
if (isset(self::$mapDependencies[$module][$type][$mapType])) {
819+
self::$mapDependencies[$module][$type][$mapType] = $dependencies;
790820
}
791821
}
792822

@@ -798,6 +828,6 @@ protected function _setDependencies($module, $type, $mapType, $dependencies)
798828
*/
799829
protected function _isFake($module)
800830
{
801-
return isset(self::$_mapDependencies[$module]) ? false : true;
831+
return isset(self::$mapDependencies[$module]) ? false : true;
802832
}
803833
}

0 commit comments

Comments
 (0)