Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
CircularDependencyTest.php
Go to the documentation of this file.
1 <?php
8 namespace Magento\Test\Integrity;
9 
12 
13 class CircularDependencyTest extends \PHPUnit\Framework\TestCase
14 {
20  protected $moduleDependencies = [];
21 
28 
29  public function setUp()
30  {
31  $this->buildModulesDependencies();
33  }
34 
38  protected function buildModulesDependencies()
39  {
40  $configFiles = Files::init()->getConfigFiles('module.xml', [], false);
41 
42  foreach ($configFiles as $configFile) {
43  preg_match('#/([^/]+?/[^/]+?)/etc/module\.xml$#', $configFile, $moduleName);
44  $moduleName = str_replace('/', '_', $moduleName[1]);
45  $config = simplexml_load_file($configFile);
46  $result = $config->xpath("/config/module/depends/module") ?: [];
47  foreach ($result as $node) {
49  $this->moduleDependencies[$moduleName][] = (string) $node['name'];
50  }
51  }
52  }
53 
57  protected function buildCircularModulesDependencies()
58  {
59  $this->circularModuleDependencies = (new Circular())->buildCircularDependencies($this->moduleDependencies);
60  }
61 
65  public function testCircularDependencies()
66  {
67  $this->markTestSkipped('Skipped before circular dependencies will be fixed MAGETWO-10938');
68  if ($this->circularModuleDependencies) {
69  $result = '';
70  foreach ($this->circularModuleDependencies as $module => $chains) {
71  $result .= $module . ' dependencies:' . PHP_EOL;
72  foreach ($chains as $chain) {
73  $result .= 'Chain : ' . implode('->', $chain) . PHP_EOL;
74  }
75  $result .= PHP_EOL;
76  }
77  $this->fail('Circular dependencies:' . PHP_EOL . $result);
78  }
79  }
80 }
$config
Definition: fraud_order.php:17