Skip to content

Commit

Permalink
MAGETWO-47639: [Github] Not all files are pre-compiled #2888
Browse files Browse the repository at this point in the history
- Fixed single tenant compiler
  • Loading branch information
Joan He committed Jan 12, 2016
1 parent e7f5b9f commit 1a13f4d
Show file tree
Hide file tree
Showing 11 changed files with 251 additions and 251 deletions.
8 changes: 8 additions & 0 deletions app/code/Magento/Cron/etc/di.xml
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,12 @@
</argument>
</arguments>
</type>
<type name="Magento\Framework\App\AreaList">
<arguments>
<argument name="areas" xsi:type="array">
<item name="crontab" xsi:type="array">
</item>
</argument>
</arguments>
</type>
</config>
10 changes: 10 additions & 0 deletions lib/internal/Magento/Framework/Config/Reader/Filesystem.php
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,16 @@ class Filesystem implements \Magento\Framework\Config\ReaderInterface
*/
protected $validationState;

/**
* @var string
*/
protected $_defaultScope;

/**
* @var string
*/
protected $_schemaFile;

/**
* Constructor
*
Expand Down
13 changes: 2 additions & 11 deletions setup/src/Magento/Setup/Console/Command/DiCompileCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -299,20 +299,11 @@ private function getOperationsConfiguration(
}

$operations = [
OperationFactory::PROXY_GENERATOR => [
'paths' => $compiledPathsList['application'],
'filePatterns' => ['di' => '/\/etc\/([a-zA-Z_]*\/di|di)\.xml$/'],
'excludePatterns' => $excludePatterns,
],
OperationFactory::PROXY_GENERATOR => [],
OperationFactory::REPOSITORY_GENERATOR => [
'paths' => $compiledPathsList['application'],
'filePatterns' => ['di' => '/\/etc\/([a-zA-Z_]*\/di|di)\.xml$/'],
'excludePatterns' => $excludePatterns,
],
OperationFactory::DATA_ATTRIBUTES_GENERATOR => [
'paths' => $compiledPathsList['application'],
'filePatterns' => $dataAttributesIncludePattern
],
OperationFactory::DATA_ATTRIBUTES_GENERATOR => [],
OperationFactory::APPLICATION_CODE_GENERATOR => [
'paths' => [
$compiledPathsList['application'],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,6 @@

class ProxyGenerator implements OperationInterface
{
/**
* @var Scanner\DirectoryScanner
*/
private $directoryScanner;

/**
* @var Scanner\XmlScanner
*/
Expand All @@ -27,18 +22,23 @@ class ProxyGenerator implements OperationInterface
private $data;

/**
* @param Scanner\DirectoryScanner $directoryScanner
* @var Scanner\ConfigurationScanner
*/
private $configurationScanner;

/**
* @param Scanner\XmlScanner $proxyScanner
* @param Scanner\ConfigurationScanner $configurationScanner
* @param array $data
*/
public function __construct(
Scanner\DirectoryScanner $directoryScanner,
Scanner\XmlScanner $proxyScanner,
\Magento\Setup\Module\Di\Code\Scanner\ConfigurationScanner $configurationScanner,
$data = []
) {
$this->directoryScanner = $directoryScanner;
$this->proxyScanner = $proxyScanner;
$this->data = $data;
$this->configurationScanner = $configurationScanner;
}

/**
Expand All @@ -48,19 +48,8 @@ public function __construct(
*/
public function doOperation()
{
if (array_diff(array_keys($this->data), ['filePatterns', 'paths', 'excludePatterns'])
!== array_diff(['filePatterns', 'paths', 'excludePatterns'], array_keys($this->data))) {
return;
}

$files = [];
foreach ($this->data['paths'] as $path) {
$files = array_merge_recursive(
$files,
$this->directoryScanner->scan($path, $this->data['filePatterns'], $this->data['excludePatterns'])
);
}
$proxies = $this->proxyScanner->collectEntities($files['di']);
$files = $this->configurationScanner->scan('di.xml');
$proxies = $this->proxyScanner->collectEntities($files);
foreach ($proxies as $entityName) {
class_exists($entityName);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,6 @@

class RepositoryGenerator implements OperationInterface
{
/**
* @var Scanner\DirectoryScanner
*/
private $directoryScanner;

/**
* @var Scanner\RepositoryScanner
*/
Expand All @@ -33,21 +28,26 @@ class RepositoryGenerator implements OperationInterface
private $classesScanner;

/**
* @param Scanner\DirectoryScanner $directoryScanner
* @var Scanner\ConfigurationScanner
*/
private $configurationScanner;

/**
* @param ClassesScanner $classesScanner
* @param Scanner\RepositoryScanner $repositoryScanner
* @param Scanner\ConfigurationScanner $configurationScanner
* @param array $data
*/
public function __construct(
Scanner\DirectoryScanner $directoryScanner,
ClassesScanner $classesScanner,
Scanner\RepositoryScanner $repositoryScanner,
\Magento\Setup\Module\Di\Code\Scanner\ConfigurationScanner $configurationScanner,
$data = []
) {
$this->directoryScanner = $directoryScanner;
$this->repositoryScanner = $repositoryScanner;
$this->data = $data;
$this->classesScanner = $classesScanner;
$this->configurationScanner = $configurationScanner;
}

/**
Expand All @@ -57,23 +57,12 @@ public function __construct(
*/
public function doOperation()
{
if (array_diff(array_keys($this->data), ['filePatterns', 'paths', 'excludePatterns'])
!== array_diff(['filePatterns', 'paths', 'excludePatterns'], array_keys($this->data))) {
return;
}

foreach ($this->data['paths'] as $path) {
$this->classesScanner->getList($path);
}
$this->repositoryScanner->setUseAutoload(false);
$files = [];
foreach ($this->data['paths'] as $path) {
$files = array_merge_recursive(
$files,
$this->directoryScanner->scan($path, $this->data['filePatterns'], $this->data['excludePatterns'])
);
}
$repositories = $this->repositoryScanner->collectEntities($files['di']);
$files = $this->configurationScanner->scan('di.xml');
$repositories = $this->repositoryScanner->collectEntities($files);
foreach ($repositories as $entityName) {
class_exists($entityName);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,6 @@
*/
class ServiceDataAttributesGenerator implements OperationInterface
{
/**
* @var Scanner\DirectoryScanner
*/
private $directoryScanner;

/**
* @var Scanner\ServiceDataAttributesScanner
*/
Expand All @@ -32,18 +27,23 @@ class ServiceDataAttributesGenerator implements OperationInterface
private $data;

/**
* @param Scanner\DirectoryScanner $directoryScanner
* @param Scanner\ServiceDataAttributesScanner $repositoryScanner
* @var Scanner\ConfigurationScanner
*/
private $configurationScanner;

/**
* @param Scanner\ServiceDataAttributesScanner $serviceDataAttributesScanner
* @param Scanner\ConfigurationScanner $configurationScanner
* @param array $data
*/
public function __construct(
Scanner\DirectoryScanner $directoryScanner,
Scanner\ServiceDataAttributesScanner $repositoryScanner,
Scanner\ServiceDataAttributesScanner $serviceDataAttributesScanner,
\Magento\Setup\Module\Di\Code\Scanner\ConfigurationScanner $configurationScanner,
$data = []
) {
$this->directoryScanner = $directoryScanner;
$this->serviceDataAttributesScanner = $repositoryScanner;
$this->serviceDataAttributesScanner = $serviceDataAttributesScanner;
$this->data = $data;
$this->configurationScanner = $configurationScanner;
}

/**
Expand All @@ -53,15 +53,8 @@ public function __construct(
*/
public function doOperation()
{
if (array_diff(array_keys($this->data), ['filePatterns', 'paths'])
!== array_diff(['filePatterns', 'paths'], array_keys($this->data))) {
return;
}
$files = [];
foreach ($this->data['paths'] as $path) {
$files = array_merge_recursive($files, $this->directoryScanner->scan($path, $this->data['filePatterns']));
}
$repositories = $this->serviceDataAttributesScanner->collectEntities($files['extension_attributes']);
$files = $this->configurationScanner->scan('extension_attributes.xml');
$repositories = $this->serviceDataAttributesScanner->collectEntities($files);
foreach ($repositories as $entityName) {
class_exists($entityName);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
<?php
/**
* Copyright © 2015 Magento. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Setup\Module\Di\Code\Scanner;

use Magento\Framework\App\Area;

class ConfigurationScanner
{
/**
* ConfigurationScanner constructor.
*
* @param \Magento\Framework\App\Config\FileResolver $fileResolver
* @param \Magento\Framework\App\AreaList $areaList
*/
public function __construct(
\Magento\Framework\App\Config\FileResolver $fileResolver,
\Magento\Framework\App\AreaList $areaList
) {
$this->fileResolver = $fileResolver;
$this->areaList = $areaList;
}

/**
* Scan configuration files
*
* @param string $fileName
*
* @return array array of paths to the configuration files
*/
public function scan($fileName)
{
$files = [];
$areaCodes = array_merge(
['primary', Area::AREA_GLOBAL],
$this->areaList->getCodes()
);
foreach ($areaCodes as $area) {
$files = array_merge_recursive(
$files,
$this->fileResolver->get($fileName, $area)->toArray()
);
}
return array_keys($files);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,83 +13,52 @@
class ProxyGeneratorTest extends \PHPUnit_Framework_TestCase
{
/**
* @var Scanner\DirectoryScanner | \PHPUnit_Framework_MockObject_MockObject
* @var Scanner\XmlScanner | \PHPUnit_Framework_MockObject_MockObject
*/
private $directoryScannerMock;
private $proxyScannerMock;

/**
* @var Scanner\XmlScanner | \PHPUnit_Framework_MockObject_MockObject
* @var \Magento\Setup\Module\Di\Code\Scanner\ConfigurationScanner | \PHPUnit_Framework_MockObject_MockObject
*/
private $proxyScannerMock;
private $configurationScannerMock;

/**
* @var \Magento\Setup\Module\Di\App\Task\Operation\ProxyGenerator
*/
private $model;

protected function setUp()
{
$this->directoryScannerMock = $this->getMockBuilder('Magento\Setup\Module\Di\Code\Scanner\DirectoryScanner')
$this->proxyScannerMock = $this->getMockBuilder('Magento\Setup\Module\Di\Code\Scanner\XmlScanner')
->disableOriginalConstructor()
->getMock();
$this->proxyScannerMock = $this->getMockBuilder('Magento\Setup\Module\Di\Code\Scanner\XmlScanner')

$this->configurationScannerMock = $this->getMockBuilder('Magento\Setup\Module\Di\Code\Scanner\ConfigurationScanner')
->disableOriginalConstructor()
->getMock();
}

/**
* @param array $data
*
* @dataProvider doOperationWrongDataDataProvider
*/
public function testDoOperationWrongData($data)
{
$model = new ProxyGenerator(
$this->directoryScannerMock,
$this->proxyScannerMock,
$data
$objectManagerHelper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
$this->model = $objectManagerHelper->getObject(
'Magento\Setup\Module\Di\App\Task\Operation\ProxyGenerator',
[
'proxyScanner' => $this->proxyScannerMock,
'configurationScanner' => $this->configurationScannerMock,
]
);

$this->directoryScannerMock->expects($this->never())
->method('scan');
$this->proxyScannerMock->expects($this->never())
->method('collectEntities');

$this->assertEmpty($model->doOperation());
}

/**
* @return array
*/
public function doOperationWrongDataDataProvider()
{
return [
[[]],
[['filePatterns' => ['php' => '*.php']]],
[['path' => 'path']],
];
}

public function testDoOperation()
{
$data = [
'paths' => ['path/to/app'],
'filePatterns' => ['di' => 'di.xml'],
'excludePatterns' => ['/\/Test\//'],
];
$files = ['di' => []];
$model = new ProxyGenerator(
$this->directoryScannerMock,
$this->proxyScannerMock,
$data
);

$this->directoryScannerMock->expects($this->once())
$files = ['file1', 'file2'];
$this->configurationScannerMock->expects($this->once())
->method('scan')
->with(
$data['paths'][0],
$data['filePatterns']
)->willReturn($files);
->with('di.xml')
->willReturn($files);
$this->proxyScannerMock->expects($this->once())
->method('collectEntities')
->with($files['di'])
->with($files)
->willReturn([]);

$this->assertEmpty($model->doOperation());
$this->model->doOperation();
}
}
Loading

0 comments on commit 1a13f4d

Please sign in to comment.