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);
+ }
}