![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/dev/tests/integration/testsuite/Magento/Framework/Error/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Framework\Error; use Magento\TestFramework\Helper\Bootstrap; require_once __DIR__ . '/../../../../../../../pub/errors/processor.php'; class ProcessorTest extends \PHPUnit\Framework\TestCase { /** * @var Processor */ private $processor; /** * @inheritdoc */ protected function setUp(): void { $this->processor = $this->createProcessor(); } /** * {@inheritdoc} * @throws \Exception */ protected function tearDown(): void { $reportDir = $this->processor->_reportDir; if (is_dir($reportDir)) { $this->removeDirRecursively($reportDir); } } /** * @param int $logReportDirNestingLevel * @param int $logReportDirNestingLevelChanged * @param string $exceptionMessage * @dataProvider dataProviderSaveAndLoadReport */ public function testSaveAndLoadReport( int $logReportDirNestingLevel, int $logReportDirNestingLevelChanged, string $exceptionMessage ) { $_ENV['MAGE_ERROR_REPORT_DIR_NESTING_LEVEL'] = $logReportDirNestingLevel; $reportData = [ 0 => $exceptionMessage, 1 => 'exceptionTrace', 'script_name' => 'processor.php' ]; $reportData['report_id'] = hash('sha256', implode('', $reportData)); $expectedReportData = array_merge($reportData, ['url' => '']); $processor = $this->createProcessor(); $processor->saveReport($reportData); $reportId = $processor->reportId; if (!$reportId) { $this->fail("Failed to generate report id"); } $this->assertEquals($expectedReportData, $processor->reportData); $_ENV['MAGE_ERROR_REPORT_DIR_NESTING_LEVEL'] = $logReportDirNestingLevelChanged; $processor = $this->createProcessor(); $processor->loadReport($reportId); $this->assertEquals($expectedReportData, $processor->reportData, "File contents of report don't match"); } /** * Data Provider for testSaveAndLoadReport * * @return array */ public function dataProviderSaveAndLoadReport(): array { return [ [ 'logReportDirNestingLevel' => 0, 'logReportDirNestingLevelChanged' => 0, 'exceptionMessage' => '$exceptionMessage 0', ], [ 'logReportDirNestingLevel' => 1, 'logReportDirNestingLevelChanged' => 1, 'exceptionMessage' => '$exceptionMessage 1', ], [ 'logReportDirNestingLevel' => 2, 'logReportDirNestingLevelChanged' => 2, 'exceptionMessage' => '$exceptionMessage 2', ], [ 'logReportDirNestingLevel' => 3, 'logReportDirNestingLevelChanged' => 23, 'exceptionMessage' => '$exceptionMessage 2', ], [ 'logReportDirNestingLevel' => 32, 'logReportDirNestingLevelChanged' => 32, 'exceptionMessage' => '$exceptionMessage 3', ], [ 'logReportDirNestingLevel' => 100, 'logReportDirNestingLevelChanged' => 100, 'exceptionMessage' => '$exceptionMessage 100', ], ]; } /** * @return Processor */ private function createProcessor(): Processor { return Bootstrap::getObjectManager()->create(Processor::class); } /** * Remove dir recursively * * @param string $dir * @param int $i * @return bool * @throws \Exception */ private function removeDirRecursively(string $dir, int $i = 0): bool { if ($i >= 100) { throw new \Exception('Emergency exit from recursion'); } $files = array_diff(scandir($dir), ['.', '..']); foreach ($files as $file) { $i++; (is_dir("$dir/$file")) ? $this->removeDirRecursively("$dir/$file", $i) : unlink("$dir/$file"); } return rmdir($dir); } /** * @return void */ public function testGetViewFileUrl(): void { $this->processor->_indexDir = __DIR__ . '/version1/magento2'; $this->processor->_errorDir = __DIR__ . '/version2/magento2'; $this->assertStringNotContainsString('version2/magento2', $this->processor->getViewFileUrl()); $this->assertStringContainsString('errors/', $this->processor->getViewFileUrl()); } }