pubStatic = $installDir . DIRECTORY_SEPARATOR . self::PUB_STATIC_DIRECTORY; $this->command = Bootstrap::getObjectManager()->get(SourceThemeDeployCommand::class); } /** * Run test for execute method */ public function testExecute() { $error = []; /** @var OutputInterface|\PHPUnit_Framework_MockObject_MockObject $outputMock */ $outputMock = $this->getMockBuilder(OutputInterface::class) ->getMockForAbstractClass(); $this->clearStaticDirectory(); $this->command->run($this->getInputMock(), $outputMock); /** @var \SplFileInfo $file */ foreach ($this->collectFiles($this->pubStatic) as $file) { $fileInfo = pathinfo($file->getFilename()); if (!in_array('css/' . $fileInfo['filename'], $this->compiledFiles, true) && !$file->isLink() ) { $error[] = 'Bad file -> ' . $file->getFilename() . PHP_EOL; } } $this->clearStaticDirectory(); self::assertEmpty($error, implode($error)); } /** * @return void */ private function clearStaticDirectory() { if (is_dir($this->pubStatic)) { /** @var \SplFileInfo $file */ foreach ($this->collectFiles($this->pubStatic) as $file) { @unlink($file->getPathname()); } } } /** * @param string $path * @return \RegexIterator|array */ private function collectFiles($path) { $flags = \FilesystemIterator::CURRENT_AS_FILEINFO | \FilesystemIterator::SKIP_DOTS; $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($path, $flags)); return new \RegexIterator( $iterator, '#\.less$#', \RegexIterator::MATCH, \RegexIterator::USE_KEY ); } /** * @return InputInterface|\PHPUnit_Framework_MockObject_MockObject */ private function getInputMock() { $inputMock = $this->getMockBuilder(InputInterface::class) ->getMockForAbstractClass(); $inputMock->expects(self::exactly(4)) ->method('getOption') ->willReturnMap( [ ['area', self::AREA_TEST_VALUE], ['locale', self::LOCALE_TEST_VALUE], ['theme', self::THEME_TEST_VALUE], ['type', self::TYPE_TEST_VALUE] ] ); $inputMock->expects(self::once()) ->method('getArgument') ->with('file') ->willReturn($this->compiledFiles); return $inputMock; } }