From 2ce635567533439808952a7094a22783a6460daa Mon Sep 17 00:00:00 2001 From: Ankur Kaneria <akaneria@ebay.com> Date: Thu, 3 Mar 2016 10:58:19 -0600 Subject: [PATCH] MAGETWO-49955: [GITHUB] There are no commands defined in the "cron" namespace. #2335 --- .../Magento/Framework/Console/Cli.php | 17 +++++++++++++ .../Framework/Setup}/FilePermissions.php | 25 +++++++++++++++++-- .../Setup/Test/Unit}/FilePermissionsTest.php | 8 +++--- .../Magento/Setup/Controller/Environment.php | 4 +-- setup/src/Magento/Setup/Model/ConfigModel.php | 1 + setup/src/Magento/Setup/Model/Installer.php | 1 + .../Magento/Setup/Model/InstallerFactory.php | 2 +- .../Test/Unit/Controller/EnvironmentTest.php | 4 +-- .../Setup/Test/Unit/Model/ConfigModelTest.php | 4 +-- .../Test/Unit/Model/InstallerFactoryTest.php | 4 +-- .../Setup/Test/Unit/Model/InstallerTest.php | 4 +-- 11 files changed, 57 insertions(+), 17 deletions(-) rename {setup/src/Magento/Setup/Model => lib/internal/Magento/Framework/Setup}/FilePermissions.php (91%) rename {setup/src/Magento/Setup/Test/Unit/Model => lib/internal/Magento/Framework/Setup/Test/Unit}/FilePermissionsTest.php (96%) diff --git a/lib/internal/Magento/Framework/Console/Cli.php b/lib/internal/Magento/Framework/Console/Cli.php index 299c42eb006..df9b59bad90 100644 --- a/lib/internal/Magento/Framework/Console/Cli.php +++ b/lib/internal/Magento/Framework/Console/Cli.php @@ -13,6 +13,7 @@ use Magento\Framework\Shell\ComplexParameter; use Symfony\Component\Console\Input\ArgvInput; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; +use Magento\Framework\Setup\FilePermissions; /** * Magento2 CLI Application. This is the hood for all command line tools supported by Magento. @@ -46,6 +47,22 @@ class Cli extends SymfonyApplication */ public function doRun(InputInterface $input, OutputInterface $output) { + // Check to make sure var/generation/Magento folder dir have read/execute permission for the current user + /** @var \Magento\Setup\Model\ObjectManagerProvider $omProvider */ + $omProvider = $this->serviceManager->get('Magento\Setup\Model\ObjectManagerProvider'); + /** @var \Magento\Framework\ObjectManagerInterface $objectManager */ + $objectManager = $omProvider->get(); + /** @var \Magento\Framework\Setup\Filepermissions $filePermissions */ + $filePermissions = $objectManager->get('Magento\Framework\Setup\FilePermissions'); + if ($filePermissions->checkDirectoryPermissionForCLIUser() === false) { + $output->writeln( + "<error>Command line user (" + . get_current_user() + . ") does not have proper permissions for var/generation/Magento directory. " + . "Please address this issue before using Magento command line." + ); + } + $exitCode = parent::doRun($input, $output); if ($this->initException) { $output->writeln( diff --git a/setup/src/Magento/Setup/Model/FilePermissions.php b/lib/internal/Magento/Framework/Setup/FilePermissions.php similarity index 91% rename from setup/src/Magento/Setup/Model/FilePermissions.php rename to lib/internal/Magento/Framework/Setup/FilePermissions.php index f1878599078..1e26f9e136d 100644 --- a/setup/src/Magento/Setup/Model/FilePermissions.php +++ b/lib/internal/Magento/Framework/Setup/FilePermissions.php @@ -4,7 +4,7 @@ * See COPYING.txt for license details. */ -namespace Magento\Setup\Model; +namespace Magento\Framework\Setup; use Magento\Framework\App\Filesystem\DirectoryList; use Magento\Framework\Backup\Filesystem\Iterator\Filter; @@ -203,6 +203,25 @@ class FilePermissions return $this->isReadableDirectory($directory) && !$directory->isWritable(); } + /** + * Checks if var/generation/Magento has + * @return bool + */ + public function checkDirectoryPermissionForCLIUser() + { + $varGenerationMagentoPath = $this->directoryList->getPath(DirectoryList::VAR_DIR) + . '/' + . DirectoryList::GENERATION + . '/' + . 'Magento'; + if (is_dir($varGenerationMagentoPath) + && is_readable($varGenerationMagentoPath) + && is_executable($varGenerationMagentoPath)) { + return true; + } + return false; + } + /** * Checks if directory exists and is readable * @@ -211,7 +230,9 @@ class FilePermissions */ protected function isReadableDirectory($directory) { - if (!$directory->isExist() || !$directory->isDirectory() || !$directory->isReadable()) { + if (!$directory->isExist() + || !$directory->isDirectory() + || !$directory->isReadable()) { return false; } return true; diff --git a/setup/src/Magento/Setup/Test/Unit/Model/FilePermissionsTest.php b/lib/internal/Magento/Framework/Setup/Test/Unit/FilePermissionsTest.php similarity index 96% rename from setup/src/Magento/Setup/Test/Unit/Model/FilePermissionsTest.php rename to lib/internal/Magento/Framework/Setup/Test/Unit/FilePermissionsTest.php index 4d803be8ff5..ed4692e7895 100644 --- a/setup/src/Magento/Setup/Test/Unit/Model/FilePermissionsTest.php +++ b/lib/internal/Magento/Framework/Setup/Test/Unit/FilePermissionsTest.php @@ -4,9 +4,9 @@ * See COPYING.txt for license details. */ -namespace Magento\Setup\Test\Unit\Model; +namespace Magento\Framework\Setup\Test\Unit; -use \Magento\Setup\Model\FilePermissions; +use \Magento\Framework\Setup\FilePermissions; use Magento\Framework\App\Filesystem\DirectoryList; @@ -132,8 +132,8 @@ class FilePermissionsTest extends \PHPUnit_Framework_TestCase } /** - * @covers \Magento\Setup\Model\FilePermissions::getMissingWritableDirectoriesForInstallation - * @covers \Magento\Setup\Model\FilePermissions::getMissingWritablePathsForInstallation + * @covers \Magento\Framework\FilePermissions::getMissingWritableDirectoriesForInstallation + * @covers \Magento\Framework\FilePermissions::getMissingWritablePathsForInstallation */ public function testGetMissingWritableDirectoriesAndPathsForInstallation() { diff --git a/setup/src/Magento/Setup/Controller/Environment.php b/setup/src/Magento/Setup/Controller/Environment.php index 939d2c459ba..ee521072459 100644 --- a/setup/src/Magento/Setup/Controller/Environment.php +++ b/setup/src/Magento/Setup/Controller/Environment.php @@ -47,13 +47,13 @@ class Environment extends AbstractActionController /** * Constructor * - * @param \Magento\Setup\Model\FilePermissions $permissions + * @param \Magento\Framework\Setup\FilePermissions $permissions * @param \Magento\Framework\Filesystem $filesystem * @param \Magento\Setup\Model\CronScriptReadinessCheck $cronScriptReadinessCheck * @param \Magento\Setup\Model\PhpReadinessCheck $phpReadinessCheck */ public function __construct( - \Magento\Setup\Model\FilePermissions $permissions, + \Magento\Framework\Setup\FilePermissions $permissions, \Magento\Framework\Filesystem $filesystem, \Magento\Setup\Model\CronScriptReadinessCheck $cronScriptReadinessCheck, \Magento\Setup\Model\PhpReadinessCheck $phpReadinessCheck diff --git a/setup/src/Magento/Setup/Model/ConfigModel.php b/setup/src/Magento/Setup/Model/ConfigModel.php index 51aefaa354e..f17e2d42d83 100644 --- a/setup/src/Magento/Setup/Model/ConfigModel.php +++ b/setup/src/Magento/Setup/Model/ConfigModel.php @@ -10,6 +10,7 @@ use Magento\Framework\App\DeploymentConfig; use Magento\Framework\Config\Data\ConfigData; use Magento\Framework\App\DeploymentConfig\Writer; use Magento\Framework\Setup\Option\AbstractConfigOption; +use Magento\Framework\Setup\FilePermissions; class ConfigModel { diff --git a/setup/src/Magento/Setup/Model/Installer.php b/setup/src/Magento/Setup/Model/Installer.php index 63606fdc811..56d80fbf4c9 100644 --- a/setup/src/Magento/Setup/Model/Installer.php +++ b/setup/src/Magento/Setup/Model/Installer.php @@ -38,6 +38,7 @@ use Magento\Setup\Console\Command\InstallCommand; use Magento\Setup\Validator\DbValidator; use \Magento\Backend\Setup\ConfigOptionsList as BackendConfigOptionsList; use Magento\SampleData; +use Magento\Framework\Setup\FilePermissions; /** * Class Installer contains the logic to install Magento application. diff --git a/setup/src/Magento/Setup/Model/InstallerFactory.php b/setup/src/Magento/Setup/Model/InstallerFactory.php index 253c62ef626..05d5783c785 100644 --- a/setup/src/Magento/Setup/Model/InstallerFactory.php +++ b/setup/src/Magento/Setup/Model/InstallerFactory.php @@ -50,7 +50,7 @@ class InstallerFactory public function create(LoggerInterface $log) { return new Installer( - $this->serviceLocator->get('Magento\Setup\Model\FilePermissions'), + $this->serviceLocator->get('Magento\Framework\Setup\FilePermissions'), $this->serviceLocator->get('Magento\Framework\App\DeploymentConfig\Writer'), $this->serviceLocator->get('Magento\Framework\App\DeploymentConfig\Reader'), $this->serviceLocator->get('Magento\Framework\App\DeploymentConfig'), diff --git a/setup/src/Magento/Setup/Test/Unit/Controller/EnvironmentTest.php b/setup/src/Magento/Setup/Test/Unit/Controller/EnvironmentTest.php index 205ec1b2682..e92656404ba 100644 --- a/setup/src/Magento/Setup/Test/Unit/Controller/EnvironmentTest.php +++ b/setup/src/Magento/Setup/Test/Unit/Controller/EnvironmentTest.php @@ -14,7 +14,7 @@ use Zend\View\Model\JsonModel; class EnvironmentTest extends \PHPUnit_Framework_TestCase { /** - * @var \Magento\Setup\Model\FilePermissions|\PHPUnit_Framework_MockObject_MockObject + * @var \Magento\Framework\Setup\FilePermissions|\PHPUnit_Framework_MockObject_MockObject */ private $permissions; @@ -41,7 +41,7 @@ class EnvironmentTest extends \PHPUnit_Framework_TestCase public function setUp() { $this->filesystem = $this->getMock('Magento\Framework\Filesystem', [], [], '', false); - $this->permissions = $this->getMock('Magento\Setup\Model\FilePermissions', [], [], '', false); + $this->permissions = $this->getMock('Magento\Framework\Setup\FilePermissions', [], [], '', false); $this->cronScriptReadinessCheck = $this->getMock( 'Magento\Setup\Model\CronScriptReadinessCheck', [], diff --git a/setup/src/Magento/Setup/Test/Unit/Model/ConfigModelTest.php b/setup/src/Magento/Setup/Test/Unit/Model/ConfigModelTest.php index bd162eb1f60..3954da210a7 100644 --- a/setup/src/Magento/Setup/Test/Unit/Model/ConfigModelTest.php +++ b/setup/src/Magento/Setup/Test/Unit/Model/ConfigModelTest.php @@ -37,7 +37,7 @@ class ConfigModelTest extends \PHPUnit_Framework_TestCase private $configData; /** - * @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Setup\Model\FilePermissions + * @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Framework\Setup\FilePermissions */ private $filePermissions; @@ -53,7 +53,7 @@ class ConfigModelTest extends \PHPUnit_Framework_TestCase $this->deploymentConfig = $this->getMock('Magento\Framework\App\DeploymentConfig', [], [], '', false); $this->configOptionsList = $this->getMock('Magento\Backend\Setup\ConfigOptionsList', [], [], '', false); $this->configData = $this->getMock('Magento\Framework\Config\Data\ConfigData', [], [], '', false); - $this->filePermissions = $this->getMock('\Magento\Setup\Model\FilePermissions', [], [], '', false); + $this->filePermissions = $this->getMock('\Magento\Framework\Setup\FilePermissions', [], [], '', false); $this->deploymentConfig->expects($this->any())->method('get'); diff --git a/setup/src/Magento/Setup/Test/Unit/Model/InstallerFactoryTest.php b/setup/src/Magento/Setup/Test/Unit/Model/InstallerFactoryTest.php index c2927df015d..aeb5d00f3bd 100644 --- a/setup/src/Magento/Setup/Test/Unit/Model/InstallerFactoryTest.php +++ b/setup/src/Magento/Setup/Test/Unit/Model/InstallerFactoryTest.php @@ -14,8 +14,8 @@ class InstallerFactoryTest extends \PHPUnit_Framework_TestCase { $returnValueMap = [ [ - 'Magento\Setup\Model\FilePermissions', - $this->getMock('Magento\Setup\Model\FilePermissions', [], [], '', false), + 'Magento\Framework\Setup\FilePermissions', + $this->getMock('Magento\Framework\Setup\FilePermissions', [], [], '', false), ], [ 'Magento\Framework\App\DeploymentConfig\Writer', diff --git a/setup/src/Magento/Setup/Test/Unit/Model/InstallerTest.php b/setup/src/Magento/Setup/Test/Unit/Model/InstallerTest.php index f415c5c19db..ebd999a84d6 100644 --- a/setup/src/Magento/Setup/Test/Unit/Model/InstallerTest.php +++ b/setup/src/Magento/Setup/Test/Unit/Model/InstallerTest.php @@ -27,7 +27,7 @@ class InstallerTest extends \PHPUnit_Framework_TestCase private $object; /** - * @var \Magento\Setup\Model\FilePermissions|\PHPUnit_Framework_MockObject_MockObject + * @var \Magento\Framework\Setup\FilePermissions|\PHPUnit_Framework_MockObject_MockObject */ private $filePermissions; @@ -150,7 +150,7 @@ class InstallerTest extends \PHPUnit_Framework_TestCase protected function setUp() { - $this->filePermissions = $this->getMock('Magento\Setup\Model\FilePermissions', [], [], '', false); + $this->filePermissions = $this->getMock('Magento\Framework\Setup\FilePermissions', [], [], '', false); $this->configWriter = $this->getMock('Magento\Framework\App\DeploymentConfig\Writer', [], [], '', false); $this->configReader = $this->getMock('Magento\Framework\App\DeploymentConfig\Reader', [], [], '', false); $this->config = $this->getMock('Magento\Framework\App\DeploymentConfig', [], [], '', false); -- GitLab