diff --git a/app/code/Magento/Developer/Model/Logger/Handler/Debug.php b/app/code/Magento/Developer/Model/Logger/Handler/Debug.php index e05f008f70aa80a47f2eb8a6094d0f2ca3292671..cdf2403fa40a861a68b09b1112cd8885011ea92f 100644 --- a/app/code/Magento/Developer/Model/Logger/Handler/Debug.php +++ b/app/code/Magento/Developer/Model/Logger/Handler/Debug.php @@ -9,6 +9,7 @@ use Magento\Framework\App\Config\ScopeConfigInterface; use Magento\Framework\App\State; use Magento\Framework\Filesystem\DriverInterface; use Magento\Store\Model\ScopeInterface; +use Magento\Framework\App\DeploymentConfig; /** * Class Debug @@ -25,22 +26,30 @@ class Debug extends \Magento\Framework\Logger\Handler\Debug */ private $scopeConfig; + /** + * @var DeploymentConfig + */ + private $deploymentConfig; + /** * @param DriverInterface $filesystem * @param State $state * @param ScopeConfigInterface $scopeConfig + * @param DeploymentConfig $deploymentConfig * @param string $filePath */ public function __construct( DriverInterface $filesystem, State $state, ScopeConfigInterface $scopeConfig, + DeploymentConfig $deploymentConfig, $filePath = null ) { parent::__construct($filesystem, $filePath); $this->state = $state; $this->scopeConfig = $scopeConfig; + $this->deploymentConfig = $deploymentConfig; } /** @@ -48,9 +57,13 @@ class Debug extends \Magento\Framework\Logger\Handler\Debug */ public function isHandling(array $record) { - return - parent::isHandling($record) - && $this->state->getMode() !== State::MODE_PRODUCTION - && $this->scopeConfig->getValue('dev/debug/debug_logging', ScopeInterface::SCOPE_STORE); + if ($this->deploymentConfig->isAvailable()) { + return + parent::isHandling($record) + && $this->state->getMode() !== State::MODE_PRODUCTION + && $this->scopeConfig->getValue('dev/debug/debug_logging', ScopeInterface::SCOPE_STORE); + } + + return parent::isHandling($record); } -} \ No newline at end of file +} diff --git a/app/code/Magento/Developer/Test/Unit/Model/Logger/Handler/DebugTest.php b/app/code/Magento/Developer/Test/Unit/Model/Logger/Handler/DebugTest.php index 7eae4020e676884a4710549c959b8f774efe9e14..e539e6b1772b87182ee4c5bb763d262ca60386b8 100644 --- a/app/code/Magento/Developer/Test/Unit/Model/Logger/Handler/DebugTest.php +++ b/app/code/Magento/Developer/Test/Unit/Model/Logger/Handler/DebugTest.php @@ -13,9 +13,11 @@ use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; use Magento\Store\Model\ScopeInterface; use Monolog\Formatter\FormatterInterface; use Monolog\Logger; +use Magento\Framework\App\DeploymentConfig; /** * Class DebugTest + * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ class DebugTest extends \PHPUnit_Framework_TestCase { @@ -44,6 +46,11 @@ class DebugTest extends \PHPUnit_Framework_TestCase */ private $formatterMock; + /** + * @var DeploymentConfig|\PHPUnit_Framework_MockObject_MockObject + */ + private $deploymentConfigMock; + protected function setUp() { $this->filesystemMock = $this->getMockBuilder(DriverInterface::class) @@ -55,6 +62,10 @@ class DebugTest extends \PHPUnit_Framework_TestCase ->getMockForAbstractClass(); $this->formatterMock = $this->getMockBuilder(FormatterInterface::class) ->getMockForAbstractClass(); + $this->deploymentConfigMock = $this->getMockBuilder(DeploymentConfig::class) + ->disableOriginalConstructor() + ->disableOriginalClone() + ->getMock(); $this->formatterMock->expects($this->any()) ->method('format') @@ -64,12 +75,16 @@ class DebugTest extends \PHPUnit_Framework_TestCase 'filesystem' => $this->filesystemMock, 'state' => $this->stateMock, 'scopeConfig' => $this->scopeConfigMock, + 'deploymentConfig' => $this->deploymentConfigMock ]); $this->model->setFormatter($this->formatterMock); } public function testHandle() { + $this->deploymentConfigMock->expects($this->once()) + ->method('isAvailable') + ->willReturn(true); $this->stateMock->expects($this->once()) ->method('getMode') ->willReturn(State::MODE_DEVELOPER); @@ -78,22 +93,28 @@ class DebugTest extends \PHPUnit_Framework_TestCase ->with('dev/debug/debug_logging', ScopeInterface::SCOPE_STORE, null) ->willReturn(true); - $this->model->handle(['formatted' => false, 'level' => Logger::DEBUG]); + $this->assertTrue($this->model->isHandling(['formatted' => false, 'level' => Logger::DEBUG])); } public function testHandleDisabledByProduction() { + $this->deploymentConfigMock->expects($this->once()) + ->method('isAvailable') + ->willReturn(true); $this->stateMock->expects($this->once()) ->method('getMode') ->willReturn(State::MODE_PRODUCTION); $this->scopeConfigMock->expects($this->never()) ->method('getValue'); - $this->model->handle(['formatted' => false, 'level' => Logger::DEBUG]); + $this->assertFalse($this->model->isHandling(['formatted' => false, 'level' => Logger::DEBUG])); } public function testHandleDisabledByConfig() { + $this->deploymentConfigMock->expects($this->once()) + ->method('isAvailable') + ->willReturn(true); $this->stateMock->expects($this->once()) ->method('getMode') ->willReturn(State::MODE_DEVELOPER); @@ -102,16 +123,32 @@ class DebugTest extends \PHPUnit_Framework_TestCase ->with('dev/debug/debug_logging', ScopeInterface::SCOPE_STORE, null) ->willReturn(false); - $this->model->handle(['formatted' => false, 'level' => Logger::DEBUG]); + $this->assertFalse($this->model->isHandling(['formatted' => false, 'level' => Logger::DEBUG])); } public function testHandleDisabledByLevel() { + $this->deploymentConfigMock->expects($this->once()) + ->method('isAvailable') + ->willReturn(true); + $this->stateMock->expects($this->never()) + ->method('getMode'); + $this->scopeConfigMock->expects($this->never()) + ->method('getValue'); + + $this->assertFalse($this->model->isHandling(['formatted' => false, 'level' => Logger::API])); + } + + public function testDeploymentConfigIsNotAvailable() + { + $this->deploymentConfigMock->expects($this->once()) + ->method('isAvailable') + ->willReturn(false); $this->stateMock->expects($this->never()) ->method('getMode'); $this->scopeConfigMock->expects($this->never()) ->method('getValue'); - $this->model->handle(['formatted' => false, 'level' => Logger::API]); + $this->assertTrue($this->model->isHandling(['formatted' => false, 'level' => Logger::DEBUG])); } }