diff --git a/Mage/Command/BuiltIn/CompileCommand.php b/Mage/Command/BuiltIn/CompileCommand.php index e7db44b..f03555b 100644 --- a/Mage/Command/BuiltIn/CompileCommand.php +++ b/Mage/Command/BuiltIn/CompileCommand.php @@ -28,7 +28,7 @@ class CompileCommand extends AbstractCommand public function __construct() { - $this->compiler = new Compiler(); + $this->setCompiler(new Compiler()); } public function setCompiler(Compiler $compiler) @@ -46,8 +46,7 @@ class CompileCommand extends AbstractCommand return 200; } - $compiler = new Compiler; - $compiler->compile(); + $this->compiler->compile(); Console::output('mage.phar compiled successfully', 0, 2); diff --git a/tests/MageTest/Command/BuiltIn/CompileCommandTest.php b/tests/MageTest/Command/BuiltIn/CompileCommandTest.php index 3780481..ebada1f 100644 --- a/tests/MageTest/Command/BuiltIn/CompileCommandTest.php +++ b/tests/MageTest/Command/BuiltIn/CompileCommandTest.php @@ -4,12 +4,20 @@ namespace MageTest\Command\BuiltIn; use Mage\Command\BuiltIn\CompileCommand; use MageTest\TestHelper\BaseTest; +use malkusch\phpmock\FixedValueFunction; +use malkusch\phpmock\Mock; +use malkusch\phpmock\MockBuilder; /** * Class CompileCommandTest * @package MageTest\Command\BuiltIn * @coversDefaultClass Mage\Command\BuiltIn\CompileCommand * @uses Mage\Compiler + * @uses malkusch\phpmock\FixedValueFunction + * @uses malkusch\phpmock\Mock + * @uses malkusch\phpmock\MockBuilder + * @uses Mage\Console + * @uses Mage\Console\Colors */ class CompileCommandTest extends BaseTest { @@ -18,26 +26,48 @@ class CompileCommandTest extends BaseTest */ private $compileCommand; + /** + * @var FixedValueFunction + */ + private $iniGetValue; + + /** + * @var Mock + */ + private $iniGetMock; + + /** * @before */ public function before() { $this->compileCommand = new CompileCommand(); + + $this->iniGetValue = new FixedValueFunction(); + $mockBuilder = new MockBuilder(); + $this->iniGetMock = $mockBuilder->setNamespace('Mage\Command\BuiltIn') + ->setName("ini_get") + ->setCallableProvider($this->iniGetValue) + ->build(); + $this->iniGetMock->disable(); + $this->iniGetMock->enable(); + + $this->setUpConsoleStatics(); } /** * @covers ::__construct + * @covers ::setCompiler */ public function testConstruct() { - $compileCommand = new CompileCommand(); - - $compilerProperty = $this->getPropertyValue($compileCommand, 'compiler'); + $compilerProperty = $this->getPropertyValue($this->compileCommand, 'compiler'); $this->assertInstanceOf('Mage\Compiler', $compilerProperty); } /** + * @covers ::__construct * @covers ::setCompiler */ public function testSetCompiler() @@ -48,4 +78,43 @@ class CompileCommandTest extends BaseTest $compilerProperty = $this->getPropertyValue($this->compileCommand, 'compiler'); $this->assertEquals($compilerMock, $compilerProperty); } + + /** + * @covers ::__construct + * @covers ::setCompiler + * @covers ::run + */ + public function testRun() + { + $expectedOutput = "mage.phar compiled successfully\n\n"; + $expectedExitCode = 0; + $this->expectOutputString($expectedOutput); + + $compilerMock = $this->getMock('Mage\Compiler'); + $compilerMock->expects($this->once()) + ->method('compile'); + + $this->iniGetValue->setValue(false); + $this->compileCommand->setCompiler($compilerMock); + $actualExitCode = $this->compileCommand->run(); + + $this->assertEquals($expectedExitCode, $actualExitCode); + } + + /** + * @covers ::__construct + * @covers ::setCompiler + * @covers ::run + */ + public function testRunWhenPharReadonlyEnabled() + { + $expectedOutput = "\tThe php.ini variable phar.readonly must be Off.\n\n"; + $expectedExitCode = 200; + $this->expectOutputString($expectedOutput); + $this->iniGetValue->setValue(true); + + $actualExitCode = $this->compileCommand->run(); + + $this->assertEquals($expectedExitCode, $actualExitCode); + } }