Skip to content

Commit 7abf5ec

Browse files
committed
MC-38348: Make SVC and Infra changes
- Code refactoring - Add helper methods to XmlRegistry
1 parent 038da88 commit 7abf5ec

14 files changed

+115
-186
lines changed

src/Analyzer/DBSchema/DbSchemaWhitelistAnalyzer.php

Lines changed: 38 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,17 @@
55
* See COPYING.txt for license details.
66
*/
77

8-
declare(strict_types=1);
9-
108
namespace Magento\SemanticVersionChecker\Analyzer\DBSchema;
119

1210
use Magento\SemanticVersionChecker\Analyzer\AnalyzerInterface;
1311
use Magento\SemanticVersionChecker\Operation\InvalidWhitelist;
12+
use Magento\SemanticVersionChecker\Operation\WhiteListWasRemoved;
1413
use PHPSemVerChecker\Registry\Registry;
1514
use PHPSemVerChecker\Report\Report;
1615

1716
/**
18-
* Implements an analyzer fdr the database schema whitelist files.
19-
* @noinspection PhpUnused
17+
* Class DbSchemaAnalyzer
18+
* @package Magento\SemanticVersionChecker\Analyzer
2019
*/
2120
class DbSchemaWhitelistAnalyzer implements AnalyzerInterface
2221
{
@@ -26,44 +25,58 @@ class DbSchemaWhitelistAnalyzer implements AnalyzerInterface
2625
* @var string
2726
*/
2827
protected $context = 'db_schema';
29-
/**
30-
* @var Report
31-
*/
32-
private $report;
33-
34-
/**
35-
* @param Report $report
36-
*/
37-
public function __construct(
38-
Report $report
39-
) {
40-
$this->report = $report;
41-
}
4228

4329
/**
4430
* Class analyzer.
4531
*
4632
* @param Registry $registryBefore
4733
* @param Registry $registryAfter
48-
*
4934
* @return Report
5035
*/
5136
public function analyze($registryBefore, $registryAfter)
5237
{
38+
$report = new Report();
5339
$registryTablesAfter = $registryAfter->data['table'] ?? [];
54-
$dbWhiteListContent = $registryAfter->data['whitelist_json'] ?? [];
40+
$registryTablesBefore = $registryBefore->data['table'] ?? [];
5541

5642
foreach ($registryTablesAfter as $moduleName => $tablesData) {
57-
$fileAfter = $registryAfter->mapping['table'][$moduleName];
5843
if (count($tablesData)) {
59-
foreach (array_keys($tablesData) as $table) {
60-
if (!isset($dbWhiteListContent[$moduleName][$table])) {
61-
$operation = new InvalidWhitelist($fileAfter, $table);
62-
$this->report->add('database', $operation);
44+
//Take file like an example
45+
//We will replace module_name in file_path in order to get
46+
//correct module
47+
$dbFile = $registryAfter->getCurrentFile();
48+
$dbWhiteListFile = preg_replace(
49+
'/(.*Magento\/)\w+(\/.*)/',
50+
'$1' . explode("_", $moduleName)[1] . '$2',
51+
$dbFile
52+
);
53+
$dbWhiteListFile = str_replace(
54+
'db_schema.xml',
55+
'db_schema_whitelist.json',
56+
$dbWhiteListFile
57+
);
58+
if (!file_exists($dbWhiteListFile)) {
59+
$operation = new WhiteListWasRemoved($dbWhiteListFile, $moduleName);
60+
$report->add('database', $operation);
61+
continue;
62+
} else {
63+
$dbWhiteListContent = json_decode(
64+
file_get_contents($dbWhiteListFile),
65+
true
66+
);
67+
}
68+
69+
$tables = array_replace($tablesData, $registryTablesBefore[$moduleName] ?? []);
70+
foreach (array_keys($tables) as $table) {
71+
if (!isset($dbWhiteListContent[$table])) {
72+
$operation = new InvalidWhitelist($dbWhiteListFile, $table);
73+
$report->add('database', $operation);
6374
}
6475
}
6576
}
6677
}
67-
return $this->report;
78+
79+
80+
return $report;
6881
}
6982
}

src/Analyzer/DBSchema/DbSchemaWhitelistReductionOrRemovalAnalyzer.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -103,14 +103,14 @@ public function isArrayExistsAndHasSameSize(array $after, array $beforeArray, st
103103
}
104104

105105
/**
106-
* @param string $filePath
106+
* @param string $location
107107
* @param string $target
108108
*
109109
* @return void
110110
*/
111-
public function addReport(string $filePath, string $target): void
111+
public function addReport(string $location, string $target): void
112112
{
113-
$operation = new WhiteListReduced($filePath, $target);
113+
$operation = new WhiteListReduced($location, $target);
114114
$this->report->add('database', $operation);
115115
}
116116
}

src/Analyzer/DbSchemaWhitelistAnalyzer.php

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

src/Analyzer/Factory/DbSchemaAnalyzerFactory.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
use Magento\SemanticVersionChecker\Analyzer\DBSchema\DbSchemaUniqueKeyAnalyzer;
1717
use Magento\SemanticVersionChecker\Analyzer\DBSchema\DbSchemaTableAnalyzer;
1818
use Magento\SemanticVersionChecker\Analyzer\DBSchema\DbSchemaColumnAnalyzer;
19-
use Magento\SemanticVersionChecker\Analyzer\DBSchema\DbSchemaWhitelistAnalyzer;
19+
use Magento\SemanticVersionChecker\Analyzer\DbSchema\DbSchemaWhitelistAnalyzer;
2020
use Magento\SemanticVersionChecker\Analyzer\DBSchema\DbSchemaWhitelistReductionOrRemovalAnalyzer;
2121
use Magento\SemanticVersionChecker\ClassHierarchy\DependencyGraph;
2222
use PHPSemVerChecker\Report\Report;

src/Analyzer/Layout/Analyzer.php

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ public function __construct(Report $report)
4646
/**
4747
* Compared registryBefore and registryAfter find changes for layout block types
4848
*
49-
* @param XmlRegistry|Registry $registryBefore
50-
* @param XmlRegistry|Registry $registryAfter
49+
* @param XmlRegistry $registryBefore
50+
* @param XmlRegistry $registryAfter
5151
* @return Report
5252
*/
5353
public function analyze($registryBefore, $registryAfter)
@@ -74,9 +74,10 @@ public function analyze($registryBefore, $registryAfter)
7474
* @var LayoutNodeInterface $node
7575
*/
7676
foreach ($moduleNodesBefore as $nodeName => $node) {
77-
$nodeAfter = $moduleNodesAfter[$moduleName][$node->getUniqueKey()] ?? false;
78-
$beforeFilePath = $registryBefore->mapping[XmlRegistry::NODES_KEY][$moduleName][$node->getUniqueKey()];
77+
$uniqueKey = $node->getUniqueKey();
78+
$nodeAfter = $moduleNodesAfter[$moduleName][$uniqueKey] ?? false;
7979
if ($nodeAfter === false) {
80+
$beforeFilePath = $registryBefore->getLayoutFile($moduleName, $uniqueKey);
8081
$this->triggerNodeRemoved($moduleName, $node, $beforeFilePath);
8182
}
8283
}

src/Analyzer/SystemXml/Analyzer.php

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -88,13 +88,15 @@ public function analyze($registryBefore, $registryAfter)
8888
$moduleNodesAfter = $nodesAfter[$moduleName];
8989
$addedNodes = array_diff_key($moduleNodesAfter, $moduleNodesBefore);
9090
$removedNodes = array_diff_key($moduleNodesBefore, $moduleNodesAfter);
91-
$afterFile = $registryAfter->mapping[XmlRegistry::NODES_KEY][$moduleName];
92-
93-
94-
$this->reportAddedNodes($afterFile, $addedNodes);
95-
$this->reportRemovedNodes($afterFile, $removedNodes);
91+
if (isset($registryBefore->mapping[XmlRegistry::NODES_KEY][$moduleName])) {
92+
$beforeFile = $registryBefore->mapping[XmlRegistry::NODES_KEY][$moduleName];
93+
$this->reportRemovedNodes($beforeFile, $removedNodes);
94+
}
95+
if (isset($registryAfter->mapping[XmlRegistry::NODES_KEY][$moduleName])) {
96+
$afterFile = $registryAfter->mapping[XmlRegistry::NODES_KEY][$moduleName];
97+
$this->reportAddedNodes($afterFile, $addedNodes);
98+
}
9699
}
97-
98100
return $this->report;
99101
}
100102

src/Analyzer/Xsd/Analyzer.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -170,8 +170,8 @@ private function getNodes(XmlRegistry $registry): array
170170
private function reportAddedModules(array $modules, Registry $beforeRegistry): void
171171
{
172172
foreach ($modules as $moduleName => $files) {
173-
$fileNames = array_keys($files);
174-
$this->reportAddedSchemaDeclarations($moduleName, $fileNames, $beforeRegistry);
173+
$relativeFilePaths = array_keys($files);
174+
$this->reportAddedSchemaDeclarations($moduleName, $relativeFilePaths, $beforeRegistry);
175175
}
176176
}
177177

@@ -229,8 +229,8 @@ private function reportAddedSchemaDeclarations(string $module, array $relativeFi
229229
private function reportRemovedModules(array $modules, Registry $registryBefore): void
230230
{
231231
foreach ($modules as $moduleName => $files) {
232-
$fileNames = array_keys($files);
233-
$this->reportRemovedSchemaDeclarations($moduleName, $fileNames, $registryBefore);
232+
$relativeFilePaths = array_keys($files);
233+
$this->reportRemovedSchemaDeclarations($moduleName, $relativeFilePaths, $registryBefore);
234234
}
235235
}
236236

src/Helper/PackageNameResolver.php

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class PackageNameResolver
2626
*
2727
* @param InputInterface|null $input
2828
*/
29-
public function __construct(InputInterface $input = null)
29+
public function __construct(InputInterface $input)
3030
{
3131
$this->input = $input;
3232
}
@@ -38,22 +38,15 @@ public function __construct(InputInterface $input = null)
3838
* @return string|null
3939
*/
4040
private function getComposerPackageLocation(string $filepath):?string {
41-
$sourceBeforeDir = '.';
42-
$sourceAfterDir = '.';
43-
44-
if ($this->input) {
45-
$sourceBeforeDirArg = $this->input->getArgument('source-before');
46-
$sourceBeforeDir = realpath($sourceBeforeDirArg);
47-
$sourceAfterDirArg = $this->input->getArgument('source-after');
48-
$sourceAfterDir = realpath($sourceAfterDirArg);
49-
}
41+
$sourceBeforeDir = realpath($this->input->getArgument('source-before'));
42+
$sourceAfterDir = realpath($this->input->getArgument('source-after'));
5043
$level = 1;
5144
$composerDirPath = dirname($filepath, $level);
5245
while ($composerDirPath !== $sourceBeforeDir
5346
&& $composerDirPath !== $sourceAfterDir
5447
&& $composerDirPath !== '.') {
5548

56-
$composerPath = "$composerDirPath/composer.json";
49+
$composerPath = '$composerDirPath' . '/composer.json';
5750
if (is_readable($composerPath)) {
5851
return $composerPath;
5952
}

src/Operation/InvalidWhitelist.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,12 @@ class InvalidWhitelist extends Operation
4646
protected $fileBefore;
4747

4848
/**
49-
* @param string $fileBefore
49+
* @param string $fileAfter
5050
* @param string $target
5151
*/
52-
public function __construct($fileBefore, $target)
52+
public function __construct($fileAfter, $target)
5353
{
54-
$this->fileBefore = $fileBefore;
54+
$this->fileBefore = $fileAfter;
5555
$this->target = $target;
5656
}
5757

src/Operation/WhiteListWasRemoved.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,12 @@ class WhiteListWasRemoved extends Operation
4848
private $location;
4949

5050
/**
51-
* @param string $location
5251
* @param string $target
52+
* @param string $module
5353
*/
54-
public function __construct($location, $module)
54+
public function __construct($target, $module)
5555
{
56-
$this->location = $location;
56+
$this->location = $target;
5757
$this->target = $module;
5858
}
5959

0 commit comments

Comments
 (0)