Skip to content

Commit 64b806f

Browse files
committed
#28579:DependencyTest does not analyze GraphQL schema files - added tests and missing dependency for SwatchesGraphQl module
1 parent b3d318d commit 64b806f

File tree

8 files changed

+538
-184
lines changed

8 files changed

+538
-184
lines changed

app/code/Magento/SwatchesGraphQl/composer.json

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,7 @@
66
"php": "~7.3.0||~7.4.0",
77
"magento/framework": "*",
88
"magento/module-swatches": "*",
9-
"magento/module-catalog": "*"
10-
},
11-
"suggest": {
9+
"magento/module-catalog": "*",
1210
"magento/module-catalog-graph-ql": "*"
1311
},
1412
"license": [

composer.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dev/tests/static/testsuite/Magento/Test/Integrity/Dependency/DeclarativeSchemaDependencyProvider.php

Lines changed: 2 additions & 177 deletions
Original file line numberDiff line numberDiff line change
@@ -17,23 +17,8 @@
1717
*
1818
* @SuppressWarnings(PHPMD.ExcessiveClassComplexity)
1919
*/
20-
class DeclarativeSchemaDependencyProvider
20+
class DeclarativeSchemaDependencyProvider extends DependencyProvider
2121
{
22-
/**
23-
* Types of dependency between modules.
24-
*/
25-
const TYPE_HARD = 'hard';
26-
27-
/**
28-
* The identifier of dependency for mapping.
29-
*/
30-
const MAP_TYPE_DECLARED = 'declared';
31-
32-
/**
33-
* The identifier of dependency for mapping.
34-
*/
35-
const MAP_TYPE_FOUND = 'found';
36-
3722
/**
3823
* Declarative name for table entity of the declarative schema.
3924
*/
@@ -54,21 +39,11 @@ class DeclarativeSchemaDependencyProvider
5439
*/
5540
const SCHEMA_ENTITY_INDEX = 'index';
5641

57-
/**
58-
* @var array
59-
*/
60-
private $mapDependencies = [];
61-
6242
/**
6343
* @var array
6444
*/
6545
private $dbSchemaDeclaration = [];
6646

67-
/**
68-
* @var array
69-
*/
70-
private $packageModuleMapping = [];
71-
7247
/**
7348
* @var array
7449
*/
@@ -145,42 +120,6 @@ private function getSchemaFileNameByModuleName(string $module): string
145120
return $this->moduleSchemaFileMapping[$module] ?? '';
146121
}
147122

148-
/**
149-
* Initialise map of dependencies.
150-
*
151-
* @throws \Exception
152-
*/
153-
private function initDeclaredDependencies()
154-
{
155-
if (empty($this->mapDependencies)) {
156-
$jsonFiles = Files::init()->getComposerFiles(ComponentRegistrar::MODULE, false);
157-
foreach ($jsonFiles as $file) {
158-
$json = new \Magento\Framework\Config\Composer\Package($this->readJsonFile($file));
159-
$moduleName = $this->convertModuleName($json->get('name'));
160-
$require = array_keys((array)$json->get('require'));
161-
$this->presetDependencies($moduleName, $require, self::TYPE_HARD);
162-
}
163-
}
164-
}
165-
166-
/**
167-
* Read data from json file.
168-
*
169-
* @param string $file
170-
* @return mixed
171-
* @throws \Exception
172-
*/
173-
private function readJsonFile(string $file, bool $asArray = false)
174-
{
175-
$decodedJson = json_decode(file_get_contents($file), $asArray);
176-
if (null == $decodedJson) {
177-
//phpcs:ignore Magento2.Exceptions.DirectThrow
178-
throw new \Exception("Invalid Json: $file");
179-
}
180-
181-
return $decodedJson;
182-
}
183-
184123
/**
185124
* Remove self dependencies.
186125
*
@@ -629,74 +568,6 @@ private function collectDependency(
629568
}
630569
}
631570

632-
/**
633-
* Add dependencies to dependency list.
634-
*
635-
* @param string $moduleName
636-
* @param array $packageNames
637-
* @param string $type
638-
*
639-
* @return void
640-
* @throws \Exception
641-
*/
642-
private function presetDependencies(
643-
string $moduleName,
644-
array $packageNames,
645-
string $type
646-
): void {
647-
$packageNames = array_filter($packageNames, function ($packageName) {
648-
return $this->getModuleName($packageName) ||
649-
0 === strpos($packageName, 'magento/') && 'magento/magento-composer-installer' != $packageName;
650-
});
651-
652-
foreach ($packageNames as $packageName) {
653-
$this->addDependencies(
654-
$moduleName,
655-
$type,
656-
self::MAP_TYPE_DECLARED,
657-
[$this->convertModuleName($packageName)]
658-
);
659-
}
660-
}
661-
662-
/**
663-
* Returns package name on module name mapping.
664-
*
665-
* @return array
666-
* @throws \Exception
667-
*/
668-
private function getPackageModuleMapping(): array
669-
{
670-
if (!$this->packageModuleMapping) {
671-
$jsonFiles = Files::init()->getComposerFiles(ComponentRegistrar::MODULE, false);
672-
673-
$packageModuleMapping = [];
674-
foreach ($jsonFiles as $file) {
675-
$moduleXml = simplexml_load_file(dirname($file) . '/etc/module.xml');
676-
$moduleName = str_replace('_', '\\', (string)$moduleXml->module->attributes()->name);
677-
$composerJson = $this->readJsonFile($file);
678-
$packageName = $composerJson->name;
679-
$packageModuleMapping[$packageName] = $moduleName;
680-
}
681-
682-
$this->packageModuleMapping = $packageModuleMapping;
683-
}
684-
685-
return $this->packageModuleMapping;
686-
}
687-
688-
/**
689-
* Retrieve Magento style module name.
690-
*
691-
* @param string $packageName
692-
* @return null|string
693-
* @throws \Exception
694-
*/
695-
private function getModuleName(string $packageName): ?string
696-
{
697-
return $this->getPackageModuleMapping()[$packageName] ?? null;
698-
}
699-
700571
/**
701572
* Retrieve array of dependency items.
702573
*
@@ -705,54 +576,8 @@ private function getModuleName(string $packageName): ?string
705576
* @param $mapType
706577
* @return array
707578
*/
708-
private function getDeclaredDependencies(string $module, string $type, string $mapType)
579+
protected function getDeclaredDependencies(string $module, string $type, string $mapType)
709580
{
710581
return $this->mapDependencies[$module][$type][$mapType] ?? [];
711582
}
712-
713-
/**
714-
* Add dependency map items.
715-
*
716-
* @param $module
717-
* @param $type
718-
* @param $mapType
719-
* @param $dependencies
720-
*/
721-
protected function addDependencies(string $module, string $type, string $mapType, array $dependencies)
722-
{
723-
$this->mapDependencies[$module][$type][$mapType] = array_merge_recursive(
724-
$this->getDeclaredDependencies($module, $type, $mapType),
725-
$dependencies
726-
);
727-
}
728-
729-
/**
730-
* Converts a composer json component name into the Magento Module form.
731-
*
732-
* @param string $jsonName The name of a composer json component or dependency e.g. 'magento/module-theme'
733-
* @return string The corresponding Magento Module e.g. 'Magento\Theme'
734-
* @throws \Exception
735-
*/
736-
private function convertModuleName(string $jsonName): string
737-
{
738-
$moduleName = $this->getModuleName($jsonName);
739-
if ($moduleName) {
740-
return $moduleName;
741-
}
742-
743-
if (strpos($jsonName, 'magento/magento') !== false
744-
|| strpos($jsonName, 'magento/framework') !== false
745-
) {
746-
$moduleName = str_replace('/', "\t", $jsonName);
747-
$moduleName = str_replace('framework-', "Framework\t", $moduleName);
748-
$moduleName = str_replace('-', ' ', $moduleName);
749-
$moduleName = ucwords($moduleName);
750-
$moduleName = str_replace("\t", '\\', $moduleName);
751-
$moduleName = str_replace(' ', '', $moduleName);
752-
} else {
753-
$moduleName = $jsonName;
754-
}
755-
756-
return $moduleName;
757-
}
758583
}

0 commit comments

Comments
 (0)