mirror of
https://github.com/andres-montanez/Magallanes
synced 2024-06-03 14:22:15 +02:00
[Nostromo] Refactor Composer Update, organize task tests better
This commit is contained in:
parent
5054fb45d0
commit
d8f2359d12
|
@ -33,10 +33,10 @@ class DumpAutoloadTask extends AbstractTask
|
||||||
public function execute()
|
public function execute()
|
||||||
{
|
{
|
||||||
$options = $this->getOptions();
|
$options = $this->getOptions();
|
||||||
$command = sprintf('%s dump-autoload %s', $options['path'], $options['flags']);
|
$cmd = sprintf('%s dump-autoload %s', $options['path'], $options['flags']);
|
||||||
|
|
||||||
/** @var Process $process */
|
/** @var Process $process */
|
||||||
$process = $this->runtime->runCommand(trim($command));
|
$process = $this->runtime->runCommand(trim($cmd));
|
||||||
|
|
||||||
return $process->isSuccessful();
|
return $process->isSuccessful();
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,10 +33,10 @@ class InstallTask extends AbstractTask
|
||||||
public function execute()
|
public function execute()
|
||||||
{
|
{
|
||||||
$options = $this->getOptions();
|
$options = $this->getOptions();
|
||||||
$command = sprintf('%s install %s', $options['path'], $options['flags']);
|
$cmd = sprintf('%s install %s', $options['path'], $options['flags']);
|
||||||
|
|
||||||
/** @var Process $process */
|
/** @var Process $process */
|
||||||
$process = $this->runtime->runCommand(trim($command));
|
$process = $this->runtime->runCommand(trim($cmd));
|
||||||
|
|
||||||
return $process->isSuccessful();
|
return $process->isSuccessful();
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,8 +10,10 @@
|
||||||
|
|
||||||
namespace Mage\Task\BuiltIn\Composer;
|
namespace Mage\Task\BuiltIn\Composer;
|
||||||
|
|
||||||
|
use Mage\Task\Exception\SkipException;
|
||||||
use Symfony\Component\Process\Process;
|
use Symfony\Component\Process\Process;
|
||||||
use Mage\Task\AbstractTask;
|
use Mage\Task\AbstractTask;
|
||||||
|
use DateTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Composer Task - Self update
|
* Composer Task - Self update
|
||||||
|
@ -20,123 +22,68 @@ use Mage\Task\AbstractTask;
|
||||||
*/
|
*/
|
||||||
class SelfUpdateTask extends AbstractTask
|
class SelfUpdateTask extends AbstractTask
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* Only used for unit tests.
|
|
||||||
*
|
|
||||||
* @var \DateTime
|
|
||||||
*/
|
|
||||||
private $dateToCompare;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getName()
|
public function getName()
|
||||||
{
|
{
|
||||||
return 'composer/selfupdate';
|
return 'composer/self-update';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getDescription()
|
public function getDescription()
|
||||||
{
|
{
|
||||||
return '[Composer] Selfupdate';
|
return '[Composer] Self Update';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return bool
|
|
||||||
*/
|
|
||||||
public function execute()
|
public function execute()
|
||||||
{
|
{
|
||||||
$options = $this->getOptions();
|
$options = $this->getOptions();
|
||||||
$days = $options['days'];
|
$cmdVersion = sprintf('%s --version', $options['path']);
|
||||||
$versionCommand = sprintf('%s --version', $options['path']);
|
|
||||||
|
|
||||||
/** @var Process $process */
|
/** @var Process $process */
|
||||||
$process = $this->runtime->runCommand(trim($versionCommand));
|
$process = $this->runtime->runCommand(trim($cmdVersion));
|
||||||
|
|
||||||
if (!$process->isSuccessful()) {
|
if (!$process->isSuccessful()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$dt = $this->extractDate($process->getOutput());
|
$buildDate = $this->getBuildDate($process->getOutput());
|
||||||
|
if (!$buildDate instanceof DateTime) {
|
||||||
// Date could not be extracted, always run update
|
return false;
|
||||||
if (false === $dt) {
|
|
||||||
return $this->selfUpdate($options);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check age
|
$compareDate = $this->getCompareDate();
|
||||||
if (!$this->isOlderThan($dt, $days)) {
|
if ($buildDate >= $compareDate) {
|
||||||
return true;
|
throw new SkipException();
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->selfUpdate($options);
|
$cmdUpdate = sprintf('%s self-update %s', $options['path'], $options['release']);
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This tasks obviously always takes the current date to compare the age
|
|
||||||
* of the composer.phar. This method is used for unit test purposes
|
|
||||||
* only.
|
|
||||||
*
|
|
||||||
* @param \DateTime $dateToCompare
|
|
||||||
*/
|
|
||||||
public function setDateToCompare(\DateTime $dateToCompare)
|
|
||||||
{
|
|
||||||
$this->dateToCompare = $dateToCompare;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param \DateTime $dt
|
|
||||||
* @param int $days
|
|
||||||
*
|
|
||||||
* @return bool
|
|
||||||
*/
|
|
||||||
protected function isOlderThan(\DateTime $dt, $days)
|
|
||||||
{
|
|
||||||
$dtComp = new \DateTime($days . ' days ago');
|
|
||||||
|
|
||||||
if (null !== $this->dateToCompare) {
|
|
||||||
$dtComp = $this->dateToCompare;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $dt < $dtComp;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param array $options
|
|
||||||
*
|
|
||||||
* @return bool
|
|
||||||
*/
|
|
||||||
protected function selfUpdate(array $options)
|
|
||||||
{
|
|
||||||
$selfupdateCommand = sprintf('%s selfupdate %s', $options['path'], $options['release']);
|
|
||||||
|
|
||||||
/** @var Process $process */
|
/** @var Process $process */
|
||||||
$process = $this->runtime->runCommand(trim($selfupdateCommand));
|
$process = $this->runtime->runCommand(trim($cmdUpdate));
|
||||||
|
|
||||||
return $process->isSuccessful();
|
return $process->isSuccessful();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
protected function getBuildDate($output)
|
||||||
* @param string $output
|
|
||||||
*
|
|
||||||
* @return \DateTime|false
|
|
||||||
*/
|
|
||||||
protected function extractDate($output)
|
|
||||||
{
|
{
|
||||||
$date = substr($output, -19);
|
$buildDate = null;
|
||||||
|
$output = explode(PHP_EOL, $output);
|
||||||
|
foreach ($output as $row) {
|
||||||
|
if (strpos($row, 'Composer version ') === 0) {
|
||||||
|
$buildDate = DateTime::createFromFormat('Y-m-d H:i:s', substr(trim($row), -19));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return \DateTime::createFromFormat('Y-m-d H:i:s', $date);
|
return $buildDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getCompareDate()
|
||||||
|
{
|
||||||
|
$options = $this->getOptions();
|
||||||
|
$compareDate = new DateTime();
|
||||||
|
$compareDate->modify(sprintf('now -%d days', $options['days']));
|
||||||
|
return $compareDate;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
protected function getOptions()
|
protected function getOptions()
|
||||||
{
|
{
|
||||||
$options = array_merge(
|
$options = array_merge(
|
||||||
['path' => 'composer', 'release' => '', 'days' => 30],
|
['path' => 'composer', 'release' => '', 'days' => 60],
|
||||||
$this->runtime->getMergedOption('composer'),
|
$this->runtime->getMergedOption('composer'),
|
||||||
$this->options
|
$this->options
|
||||||
);
|
);
|
||||||
|
|
|
@ -1,157 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace Mage\Tests\Command\BuiltIn\Composer;
|
|
||||||
|
|
||||||
use Mage\Runtime\Runtime;
|
|
||||||
use Mage\Task\BuiltIn\Composer\SelfUpdateTask;
|
|
||||||
use PHPUnit_Framework_TestCase as TestCase;
|
|
||||||
use Symfony\Component\Process\Process;
|
|
||||||
|
|
||||||
class SelfUpdateTaskTest extends TestCase
|
|
||||||
{
|
|
||||||
public function testBasics()
|
|
||||||
{
|
|
||||||
$task = new SelfUpdateTask();
|
|
||||||
$this->assertSame('composer/selfupdate', $task->getName());
|
|
||||||
$this->assertSame('[Composer] Selfupdate', $task->getDescription());
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testExecuteWithFailingVersionDoesNotCallSelfupdate()
|
|
||||||
{
|
|
||||||
$runtime = $this->getMockBuilder(Runtime::class)
|
|
||||||
->setMethods(['runCommand'])
|
|
||||||
->getMock();
|
|
||||||
|
|
||||||
$runtime
|
|
||||||
->expects($this->once())
|
|
||||||
->method('runCommand')
|
|
||||||
->with('composer --version')
|
|
||||||
->willReturn($this->mockProcess(false));
|
|
||||||
|
|
||||||
$task = $this->getTask($runtime);
|
|
||||||
$this->assertFalse($task->execute());
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testExecuteWithNoDateVersionDoesCallSelfupdate()
|
|
||||||
{
|
|
||||||
$runtime = $this->getMockBuilder(Runtime::class)
|
|
||||||
->setMethods(['runCommand'])
|
|
||||||
->getMock();
|
|
||||||
|
|
||||||
$runtime
|
|
||||||
->expects($this->exactly(2))
|
|
||||||
->method('runCommand')
|
|
||||||
->withConsecutive(
|
|
||||||
['composer --version'],
|
|
||||||
['composer selfupdate']
|
|
||||||
)
|
|
||||||
->willReturnOnConsecutiveCalls(
|
|
||||||
$this->mockProcess(true, 'whatever-without-valid-date'),
|
|
||||||
$this->mockProcess(true)
|
|
||||||
);
|
|
||||||
|
|
||||||
$task = $this->getTask($runtime);
|
|
||||||
$this->assertTrue($task->execute());
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testExecuteShouldUpdate()
|
|
||||||
{
|
|
||||||
$runtime = $this->getMockBuilder(Runtime::class)
|
|
||||||
->setMethods(['runCommand'])
|
|
||||||
->getMock();
|
|
||||||
|
|
||||||
$runtime
|
|
||||||
->expects($this->exactly(2))
|
|
||||||
->method('runCommand')
|
|
||||||
->withConsecutive(
|
|
||||||
['composer --version'],
|
|
||||||
['composer selfupdate']
|
|
||||||
)
|
|
||||||
->willReturnOnConsecutiveCalls(
|
|
||||||
$this->mockProcess(true, 'Composer version 1.3.2 2017-01-01 18:23:41'),
|
|
||||||
$this->mockProcess(true)
|
|
||||||
);
|
|
||||||
|
|
||||||
$task = $this->getTask($runtime);
|
|
||||||
$task->setOptions(['days' => 30]);
|
|
||||||
$this->assertTrue($task->execute());
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testExecuteShouldNotUpdate()
|
|
||||||
{
|
|
||||||
$runtime = $this->getMockBuilder(Runtime::class)
|
|
||||||
->setMethods(['runCommand'])
|
|
||||||
->getMock();
|
|
||||||
|
|
||||||
$runtime
|
|
||||||
->expects($this->exactly(1))
|
|
||||||
->method('runCommand')
|
|
||||||
->with('composer --version')
|
|
||||||
->willReturn($this->mockProcess(true, 'Composer version 1.3.2 2017-01-01 18:23:41'));
|
|
||||||
|
|
||||||
$task = $this->getTask($runtime);
|
|
||||||
$task->setDateToCompare(\DateTime::createFromFormat('Y-m-d H:i:s', '2016-12-10 18:23:41'));
|
|
||||||
$task->setOptions(['days' => 30]);
|
|
||||||
$this->assertTrue($task->execute());
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testWithRelease()
|
|
||||||
{
|
|
||||||
$runtime = $this->getMockBuilder(Runtime::class)
|
|
||||||
->setMethods(['runCommand'])
|
|
||||||
->getMock();
|
|
||||||
|
|
||||||
$runtime
|
|
||||||
->expects($this->exactly(2))
|
|
||||||
->method('runCommand')
|
|
||||||
->withConsecutive(
|
|
||||||
['composer --version'],
|
|
||||||
['composer selfupdate 1.3.1']
|
|
||||||
)
|
|
||||||
->willReturnOnConsecutiveCalls(
|
|
||||||
$this->mockProcess(true, 'Composer version 1.3.2 2017-01-01 18:23:41'),
|
|
||||||
$this->mockProcess(true)
|
|
||||||
);
|
|
||||||
|
|
||||||
$task = $this->getTask($runtime);
|
|
||||||
$task->setOptions(['days' => 30, 'release' => '1.3.1']);
|
|
||||||
$this->assertTrue($task->execute());
|
|
||||||
}
|
|
||||||
|
|
||||||
private function getTask($runtime)
|
|
||||||
{
|
|
||||||
$config = [
|
|
||||||
'magephp' => [
|
|
||||||
'composer' => [
|
|
||||||
'path' => 'composer.phar'
|
|
||||||
]
|
|
||||||
]
|
|
||||||
];
|
|
||||||
|
|
||||||
/** @var Runtime $runtime */
|
|
||||||
$runtime->setConfiguration($config);
|
|
||||||
|
|
||||||
$task = new SelfUpdateTask();
|
|
||||||
$task->setRuntime($runtime);
|
|
||||||
|
|
||||||
return $task;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function mockProcess($successful, $output = '')
|
|
||||||
{
|
|
||||||
$process = $this->getMockBuilder(Process::class)
|
|
||||||
->disableOriginalConstructor()
|
|
||||||
->getMock();
|
|
||||||
$process
|
|
||||||
->expects($this->any())
|
|
||||||
->method('isSuccessful')
|
|
||||||
->willReturn($successful);
|
|
||||||
|
|
||||||
$process
|
|
||||||
->expects($this->any())
|
|
||||||
->method('getOutput')
|
|
||||||
->willReturn($output);
|
|
||||||
|
|
||||||
return $process;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -68,6 +68,29 @@ class ProcessMockup extends Process
|
||||||
return '* master';
|
return '* master';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Make composer build 20 days old
|
||||||
|
if ($this->commandline == 'composer --version') {
|
||||||
|
$date = date('Y-m-d H:i:s', strtotime('now -20 days'));
|
||||||
|
return 'Composer version 1.3.0 ' . $date;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Make ./composer build 20 days old
|
||||||
|
if ($this->commandline == './composer --version') {
|
||||||
|
$date = date('Y-m-d H:i:s', strtotime('now -20 days'));
|
||||||
|
return 'Do not run Composer as root/super user! See https://getcomposer.org/root for details' . PHP_EOL . 'Composer version 1.3.0 ' . $date;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Make composer.phar build 90 days old
|
||||||
|
if ($this->commandline == 'composer.phar --version') {
|
||||||
|
$date = date('Y-m-d H:i:s', strtotime('now -90 days'));
|
||||||
|
return 'Composer version 1.3.0 ' . $date;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Make php composer has wrong output
|
||||||
|
if ($this->commandline == 'php composer --version') {
|
||||||
|
return 'Composer version 1.3.0 no build';
|
||||||
|
}
|
||||||
|
|
||||||
if ($this->commandline == 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost "ls -1 /var/www/test/releases"') {
|
if ($this->commandline == 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost "ls -1 /var/www/test/releases"') {
|
||||||
return implode(PHP_EOL, ['20170101015110', '20170101015111', '20170101015112', '20170101015113', '20170101015114', '20170101015115', '20170101015116', '20170101015117']);
|
return implode(PHP_EOL, ['20170101015110', '20170101015111', '20170101015112', '20170101015113', '20170101015114', '20170101015115', '20170101015116', '20170101015117']);
|
||||||
}
|
}
|
||||||
|
|
173
tests/Task/BuiltIn/Composer/SelfUpdateTaskTest.php
Normal file
173
tests/Task/BuiltIn/Composer/SelfUpdateTaskTest.php
Normal file
|
@ -0,0 +1,173 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Mage\Tests\Task\BuiltIn\Composer;
|
||||||
|
|
||||||
|
use Mage\Tests\Runtime\RuntimeMockup;
|
||||||
|
use Mage\Task\BuiltIn\Composer\SelfUpdateTask;
|
||||||
|
use Mage\Task\Exception\SkipException;
|
||||||
|
use Exception;
|
||||||
|
use PHPUnit_Framework_TestCase as TestCase;
|
||||||
|
|
||||||
|
class SelfUpdateTaskTest extends TestCase
|
||||||
|
{
|
||||||
|
public function testSelfUpdateTask()
|
||||||
|
{
|
||||||
|
$runtime = new RuntimeMockup();
|
||||||
|
$runtime->setConfiguration(['environments' => ['test' => []]]);
|
||||||
|
$runtime->setEnvironment('test');
|
||||||
|
|
||||||
|
$task = new SelfUpdateTask();
|
||||||
|
$task->setOptions(['path' => 'composer']);
|
||||||
|
$task->setRuntime($runtime);
|
||||||
|
|
||||||
|
try {
|
||||||
|
$task->execute();
|
||||||
|
} catch (Exception $exception) {
|
||||||
|
$this->assertTrue($exception instanceof SkipException, 'Update should been skipped');
|
||||||
|
}
|
||||||
|
|
||||||
|
$ranCommands = $runtime->getRanCommands();
|
||||||
|
$testCase = array(
|
||||||
|
0 => 'composer --version',
|
||||||
|
);
|
||||||
|
|
||||||
|
// Check total of Executed Commands
|
||||||
|
$this->assertEquals(count($testCase), count($ranCommands));
|
||||||
|
|
||||||
|
// Check Generated Commands
|
||||||
|
foreach ($testCase as $index => $command) {
|
||||||
|
$this->assertEquals($command, $ranCommands[$index]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testSelfUpdateAsRootTask()
|
||||||
|
{
|
||||||
|
$runtime = new RuntimeMockup();
|
||||||
|
$runtime->setConfiguration(['environments' => ['test' => []]]);
|
||||||
|
$runtime->setEnvironment('test');
|
||||||
|
|
||||||
|
$task = new SelfUpdateTask();
|
||||||
|
$task->setOptions(['path' => './composer']);
|
||||||
|
$task->setRuntime($runtime);
|
||||||
|
|
||||||
|
try {
|
||||||
|
$task->execute();
|
||||||
|
} catch (Exception $exception) {
|
||||||
|
$this->assertTrue($exception instanceof SkipException, 'Update should been skipped');
|
||||||
|
}
|
||||||
|
|
||||||
|
$ranCommands = $runtime->getRanCommands();
|
||||||
|
$testCase = array(
|
||||||
|
0 => './composer --version',
|
||||||
|
);
|
||||||
|
|
||||||
|
// Check total of Executed Commands
|
||||||
|
$this->assertEquals(count($testCase), count($ranCommands));
|
||||||
|
|
||||||
|
// Check Generated Commands
|
||||||
|
foreach ($testCase as $index => $command) {
|
||||||
|
$this->assertEquals($command, $ranCommands[$index]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testSelfUpdateMustUpdateTask()
|
||||||
|
{
|
||||||
|
$runtime = new RuntimeMockup();
|
||||||
|
$runtime->setConfiguration(['environments' => ['test' => []]]);
|
||||||
|
$runtime->setEnvironment('test');
|
||||||
|
|
||||||
|
$task = new SelfUpdateTask();
|
||||||
|
$task->setOptions(['path' => 'composer.phar']);
|
||||||
|
$task->setRuntime($runtime);
|
||||||
|
|
||||||
|
try {
|
||||||
|
$result = $task->execute();
|
||||||
|
$this->assertTrue($result, 'Result should be successful');
|
||||||
|
} catch (Exception $exception) {
|
||||||
|
if ($exception instanceof SkipException) {
|
||||||
|
$this->assertTrue(false, 'Update should not have been skipped');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$ranCommands = $runtime->getRanCommands();
|
||||||
|
$testCase = array(
|
||||||
|
0 => 'composer.phar --version',
|
||||||
|
1 => 'composer.phar self-update',
|
||||||
|
);
|
||||||
|
|
||||||
|
// Check total of Executed Commands
|
||||||
|
$this->assertEquals(count($testCase), count($ranCommands));
|
||||||
|
|
||||||
|
// Check Generated Commands
|
||||||
|
foreach ($testCase as $index => $command) {
|
||||||
|
$this->assertEquals($command, $ranCommands[$index]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testSelfUpdateWrongOutputTask()
|
||||||
|
{
|
||||||
|
$runtime = new RuntimeMockup();
|
||||||
|
$runtime->setConfiguration(['environments' => ['test' => []]]);
|
||||||
|
$runtime->setEnvironment('test');
|
||||||
|
|
||||||
|
$task = new SelfUpdateTask();
|
||||||
|
$task->setOptions(['path' => 'php composer']);
|
||||||
|
$task->setRuntime($runtime);
|
||||||
|
|
||||||
|
try {
|
||||||
|
$result = $task->execute();
|
||||||
|
$this->assertFalse($result, 'Result should be failure');
|
||||||
|
} catch (Exception $exception) {
|
||||||
|
if ($exception instanceof SkipException) {
|
||||||
|
$this->assertTrue(false, 'Update should not have been skipped');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$ranCommands = $runtime->getRanCommands();
|
||||||
|
$testCase = array(
|
||||||
|
0 => 'php composer --version',
|
||||||
|
);
|
||||||
|
|
||||||
|
// Check total of Executed Commands
|
||||||
|
$this->assertEquals(count($testCase), count($ranCommands));
|
||||||
|
|
||||||
|
// Check Generated Commands
|
||||||
|
foreach ($testCase as $index => $command) {
|
||||||
|
$this->assertEquals($command, $ranCommands[$index]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testSelfUpdateFailExecTask()
|
||||||
|
{
|
||||||
|
$runtime = new RuntimeMockup();
|
||||||
|
$runtime->setConfiguration(['environments' => ['test' => []]]);
|
||||||
|
$runtime->setEnvironment('test');
|
||||||
|
|
||||||
|
$task = new SelfUpdateTask();
|
||||||
|
$task->setOptions(['path' => 'composer']);
|
||||||
|
$task->setRuntime($runtime);
|
||||||
|
$runtime->forceFail('composer --version');
|
||||||
|
|
||||||
|
try {
|
||||||
|
$result = $task->execute();
|
||||||
|
$this->assertFalse($result, 'Result should be failure');
|
||||||
|
} catch (Exception $exception) {
|
||||||
|
if ($exception instanceof SkipException) {
|
||||||
|
$this->assertTrue(false, 'Update should not have been skipped');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$ranCommands = $runtime->getRanCommands();
|
||||||
|
$testCase = array(
|
||||||
|
0 => 'composer --version',
|
||||||
|
);
|
||||||
|
|
||||||
|
// Check total of Executed Commands
|
||||||
|
$this->assertEquals(count($testCase), count($ranCommands));
|
||||||
|
|
||||||
|
// Check Generated Commands
|
||||||
|
foreach ($testCase as $index => $command) {
|
||||||
|
$this->assertEquals($command, $ranCommands[$index]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -8,7 +8,7 @@
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace Mage\Tests\Task\BuiltIn;
|
namespace Mage\Tests\Task\BuiltIn\FileSystem;
|
||||||
|
|
||||||
use Mage\Task\Exception\ErrorException;
|
use Mage\Task\Exception\ErrorException;
|
||||||
use Mage\Task\BuiltIn\FS\ChangeModeTask;
|
use Mage\Task\BuiltIn\FS\ChangeModeTask;
|
158
tests/Task/BuiltIn/FileSystem/CopyTaskTest.php
Normal file
158
tests/Task/BuiltIn/FileSystem/CopyTaskTest.php
Normal file
|
@ -0,0 +1,158 @@
|
||||||
|
<?php
|
||||||
|
/*
|
||||||
|
* This file is part of the Magallanes package.
|
||||||
|
*
|
||||||
|
* (c) Andrés Montañez <andres@andresmontanez.com>
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Mage\Tests\Task\BuiltIn\FileSystem;
|
||||||
|
|
||||||
|
use Mage\Task\Exception\ErrorException;
|
||||||
|
use Mage\Task\BuiltIn\FS\CopyTask;
|
||||||
|
use Exception;
|
||||||
|
use Mage\Tests\Runtime\RuntimeMockup;
|
||||||
|
use PHPUnit_Framework_TestCase as TestCase;
|
||||||
|
|
||||||
|
class CopyTaskTest extends TestCase
|
||||||
|
{
|
||||||
|
public function testCopyTask()
|
||||||
|
{
|
||||||
|
$runtime = new RuntimeMockup();
|
||||||
|
$runtime->setConfiguration(['environments' => ['test' => []]]);
|
||||||
|
$runtime->setEnvironment('test');
|
||||||
|
|
||||||
|
$task = new CopyTask();
|
||||||
|
$task->setOptions(['from' => 'a.txt', 'to' => 'b.txt']);
|
||||||
|
$task->setRuntime($runtime);
|
||||||
|
|
||||||
|
$this->assertContains('a.txt', $task->getDescription());
|
||||||
|
$this->assertContains('b.txt', $task->getDescription());
|
||||||
|
$task->execute();
|
||||||
|
|
||||||
|
$ranCommands = $runtime->getRanCommands();
|
||||||
|
|
||||||
|
$testCase = array(
|
||||||
|
0 => 'cp -p "a.txt" "b.txt"',
|
||||||
|
);
|
||||||
|
|
||||||
|
// Check total of Executed Commands
|
||||||
|
$this->assertEquals(count($testCase), count($ranCommands));
|
||||||
|
|
||||||
|
// Check Generated Commands
|
||||||
|
foreach ($testCase as $index => $command) {
|
||||||
|
$this->assertEquals($command, $ranCommands[$index]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testCopyTaskWithFlags()
|
||||||
|
{
|
||||||
|
$runtime = new RuntimeMockup();
|
||||||
|
$runtime->setConfiguration(['environments' => ['test' => []]]);
|
||||||
|
$runtime->setEnvironment('test');
|
||||||
|
|
||||||
|
$task = new CopyTask();
|
||||||
|
$task->setOptions(['from' => 'a.txt', 'to' => 'b.txt', 'flags' => '-rp']);
|
||||||
|
$task->setRuntime($runtime);
|
||||||
|
|
||||||
|
$this->assertContains('a.txt', $task->getDescription());
|
||||||
|
$this->assertContains('b.txt', $task->getDescription());
|
||||||
|
$task->execute();
|
||||||
|
|
||||||
|
$ranCommands = $runtime->getRanCommands();
|
||||||
|
|
||||||
|
$testCase = array(
|
||||||
|
0 => 'cp -rp "a.txt" "b.txt"',
|
||||||
|
);
|
||||||
|
|
||||||
|
// Check total of Executed Commands
|
||||||
|
$this->assertEquals(count($testCase), count($ranCommands));
|
||||||
|
|
||||||
|
// Check Generated Commands
|
||||||
|
foreach ($testCase as $index => $command) {
|
||||||
|
$this->assertEquals($command, $ranCommands[$index]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testCopyReplaceTask()
|
||||||
|
{
|
||||||
|
$runtime = new RuntimeMockup();
|
||||||
|
$runtime->setConfiguration(['environments' => ['test' => []]]);
|
||||||
|
$runtime->setEnvironment('test');
|
||||||
|
|
||||||
|
$task = new CopyTask();
|
||||||
|
$task->setOptions(['from' => '%environment%.txt', 'to' => 'b.txt']);
|
||||||
|
$task->setRuntime($runtime);
|
||||||
|
|
||||||
|
$this->assertContains('test.txt', $task->getDescription());
|
||||||
|
$this->assertContains('b.txt', $task->getDescription());
|
||||||
|
$task->execute();
|
||||||
|
|
||||||
|
$ranCommands = $runtime->getRanCommands();
|
||||||
|
|
||||||
|
$testCase = array(
|
||||||
|
0 => 'cp -p "test.txt" "b.txt"',
|
||||||
|
);
|
||||||
|
|
||||||
|
// Check total of Executed Commands
|
||||||
|
$this->assertEquals(count($testCase), count($ranCommands));
|
||||||
|
|
||||||
|
// Check Generated Commands
|
||||||
|
foreach ($testCase as $index => $command) {
|
||||||
|
$this->assertEquals($command, $ranCommands[$index]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testCopyMultipleReplaceTask()
|
||||||
|
{
|
||||||
|
$runtime = new RuntimeMockup();
|
||||||
|
$runtime->setConfiguration(['environments' => ['test' => []]]);
|
||||||
|
$runtime->setEnvironment('test');
|
||||||
|
$runtime->setReleaseId('1234');
|
||||||
|
$runtime->setWorkingHost('localhost');
|
||||||
|
|
||||||
|
$task = new CopyTask();
|
||||||
|
$task->setOptions(['from' => '%host%.txt', 'to' => '%release%.yml']);
|
||||||
|
$task->setRuntime($runtime);
|
||||||
|
|
||||||
|
$this->assertContains('localhost.txt', $task->getDescription());
|
||||||
|
$this->assertContains('1234.yml', $task->getDescription());
|
||||||
|
$task->execute();
|
||||||
|
|
||||||
|
$ranCommands = $runtime->getRanCommands();
|
||||||
|
|
||||||
|
$testCase = array(
|
||||||
|
0 => 'cp -p "localhost.txt" "1234.yml"',
|
||||||
|
);
|
||||||
|
|
||||||
|
// Check total of Executed Commands
|
||||||
|
$this->assertEquals(count($testCase), count($ranCommands));
|
||||||
|
|
||||||
|
// Check Generated Commands
|
||||||
|
foreach ($testCase as $index => $command) {
|
||||||
|
$this->assertEquals($command, $ranCommands[$index]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testCopyBadOptionsTask()
|
||||||
|
{
|
||||||
|
$runtime = new RuntimeMockup();
|
||||||
|
$runtime->setConfiguration(['environments' => ['test' => []]]);
|
||||||
|
$runtime->setEnvironment('test');
|
||||||
|
|
||||||
|
$task = new CopyTask();
|
||||||
|
$task->setOptions(['form' => 'a.txt', 'to' => 'b.txt']);
|
||||||
|
$task->setRuntime($runtime);
|
||||||
|
|
||||||
|
try {
|
||||||
|
$this->assertContains('[missing parameters]', $task->getDescription());
|
||||||
|
$task->execute();
|
||||||
|
$this->assertTrue(false, 'Task did not failed');
|
||||||
|
} catch (Exception $exception) {
|
||||||
|
$this->assertTrue($exception instanceof ErrorException);
|
||||||
|
$this->assertEquals('Parameter "from" is not defined', $exception->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
127
tests/Task/BuiltIn/FileSystem/LinkTaskTest.php
Normal file
127
tests/Task/BuiltIn/FileSystem/LinkTaskTest.php
Normal file
|
@ -0,0 +1,127 @@
|
||||||
|
<?php
|
||||||
|
/*
|
||||||
|
* This file is part of the Magallanes package.
|
||||||
|
*
|
||||||
|
* (c) Andrés Montañez <andres@andresmontanez.com>
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Mage\Tests\Task\BuiltIn\FileSystem;
|
||||||
|
|
||||||
|
use Mage\Task\Exception\ErrorException;
|
||||||
|
use Mage\Task\BuiltIn\FS\LinkTask;
|
||||||
|
use Exception;
|
||||||
|
use Mage\Tests\Runtime\RuntimeMockup;
|
||||||
|
use PHPUnit_Framework_TestCase as TestCase;
|
||||||
|
|
||||||
|
class LinkTaskTest extends TestCase
|
||||||
|
{
|
||||||
|
public function testLinkTask()
|
||||||
|
{
|
||||||
|
$runtime = new RuntimeMockup();
|
||||||
|
$runtime->setConfiguration(['environments' => ['test' => []]]);
|
||||||
|
$runtime->setEnvironment('test');
|
||||||
|
|
||||||
|
$task = new LinkTask();
|
||||||
|
$task->setOptions(['from' => 'a.txt', 'to' => 'b.txt']);
|
||||||
|
$task->setRuntime($runtime);
|
||||||
|
|
||||||
|
$this->assertContains('a.txt', $task->getDescription());
|
||||||
|
$this->assertContains('b.txt', $task->getDescription());
|
||||||
|
$task->execute();
|
||||||
|
|
||||||
|
$ranCommands = $runtime->getRanCommands();
|
||||||
|
|
||||||
|
$testCase = array(
|
||||||
|
0 => 'ln -snf "a.txt" "b.txt"',
|
||||||
|
);
|
||||||
|
|
||||||
|
// Check total of Executed Commands
|
||||||
|
$this->assertEquals(count($testCase), count($ranCommands));
|
||||||
|
|
||||||
|
// Check Generated Commands
|
||||||
|
foreach ($testCase as $index => $command) {
|
||||||
|
$this->assertEquals($command, $ranCommands[$index]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testLinkTaskWithFlags()
|
||||||
|
{
|
||||||
|
$runtime = new RuntimeMockup();
|
||||||
|
$runtime->setConfiguration(['environments' => ['test' => []]]);
|
||||||
|
$runtime->setEnvironment('test');
|
||||||
|
|
||||||
|
$task = new LinkTask();
|
||||||
|
$task->setOptions(['from' => 'a.txt', 'to' => 'b.txt', 'flags' => '-P']);
|
||||||
|
$task->setRuntime($runtime);
|
||||||
|
|
||||||
|
$this->assertContains('a.txt', $task->getDescription());
|
||||||
|
$this->assertContains('b.txt', $task->getDescription());
|
||||||
|
$task->execute();
|
||||||
|
|
||||||
|
$ranCommands = $runtime->getRanCommands();
|
||||||
|
|
||||||
|
$testCase = array(
|
||||||
|
0 => 'ln -P "a.txt" "b.txt"',
|
||||||
|
);
|
||||||
|
|
||||||
|
// Check total of Executed Commands
|
||||||
|
$this->assertEquals(count($testCase), count($ranCommands));
|
||||||
|
|
||||||
|
// Check Generated Commands
|
||||||
|
foreach ($testCase as $index => $command) {
|
||||||
|
$this->assertEquals($command, $ranCommands[$index]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testLinkReplaceTask()
|
||||||
|
{
|
||||||
|
$runtime = new RuntimeMockup();
|
||||||
|
$runtime->setConfiguration(['environments' => ['test' => []]]);
|
||||||
|
$runtime->setEnvironment('test');
|
||||||
|
|
||||||
|
$task = new LinkTask();
|
||||||
|
$task->setOptions(['from' => '%environment%.txt', 'to' => 'b.txt']);
|
||||||
|
$task->setRuntime($runtime);
|
||||||
|
|
||||||
|
$this->assertContains('test.txt', $task->getDescription());
|
||||||
|
$this->assertContains('b.txt', $task->getDescription());
|
||||||
|
$task->execute();
|
||||||
|
|
||||||
|
$ranCommands = $runtime->getRanCommands();
|
||||||
|
|
||||||
|
$testCase = array(
|
||||||
|
0 => 'ln -snf "test.txt" "b.txt"',
|
||||||
|
);
|
||||||
|
|
||||||
|
// Check total of Executed Commands
|
||||||
|
$this->assertEquals(count($testCase), count($ranCommands));
|
||||||
|
|
||||||
|
// Check Generated Commands
|
||||||
|
foreach ($testCase as $index => $command) {
|
||||||
|
$this->assertEquals($command, $ranCommands[$index]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testLinkBadOptionsTask()
|
||||||
|
{
|
||||||
|
$runtime = new RuntimeMockup();
|
||||||
|
$runtime->setConfiguration(['environments' => ['test' => []]]);
|
||||||
|
$runtime->setEnvironment('test');
|
||||||
|
|
||||||
|
$task = new LinkTask();
|
||||||
|
$task->setOptions(['form' => 'a.txt', 'to' => 'b.txt']);
|
||||||
|
$task->setRuntime($runtime);
|
||||||
|
|
||||||
|
try {
|
||||||
|
$this->assertContains('[missing parameters]', $task->getDescription());
|
||||||
|
$task->execute();
|
||||||
|
$this->assertTrue(false, 'Task did not failed');
|
||||||
|
} catch (Exception $exception) {
|
||||||
|
$this->assertTrue($exception instanceof ErrorException);
|
||||||
|
$this->assertEquals('Parameter "from" is not defined', $exception->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
127
tests/Task/BuiltIn/FileSystem/MoveTaskTest.php
Normal file
127
tests/Task/BuiltIn/FileSystem/MoveTaskTest.php
Normal file
|
@ -0,0 +1,127 @@
|
||||||
|
<?php
|
||||||
|
/*
|
||||||
|
* This file is part of the Magallanes package.
|
||||||
|
*
|
||||||
|
* (c) Andrés Montañez <andres@andresmontanez.com>
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Mage\Tests\Task\BuiltIn\FileSystem;
|
||||||
|
|
||||||
|
use Mage\Task\Exception\ErrorException;
|
||||||
|
use Mage\Task\BuiltIn\FS\MoveTask;
|
||||||
|
use Exception;
|
||||||
|
use Mage\Tests\Runtime\RuntimeMockup;
|
||||||
|
use PHPUnit_Framework_TestCase as TestCase;
|
||||||
|
|
||||||
|
class MoveTaskTest extends TestCase
|
||||||
|
{
|
||||||
|
public function testMoveTask()
|
||||||
|
{
|
||||||
|
$runtime = new RuntimeMockup();
|
||||||
|
$runtime->setConfiguration(['environments' => ['test' => []]]);
|
||||||
|
$runtime->setEnvironment('test');
|
||||||
|
|
||||||
|
$task = new MoveTask();
|
||||||
|
$task->setOptions(['from' => 'a.txt', 'to' => 'b.txt']);
|
||||||
|
$task->setRuntime($runtime);
|
||||||
|
|
||||||
|
$this->assertContains('a.txt', $task->getDescription());
|
||||||
|
$this->assertContains('b.txt', $task->getDescription());
|
||||||
|
$task->execute();
|
||||||
|
|
||||||
|
$ranCommands = $runtime->getRanCommands();
|
||||||
|
|
||||||
|
$testCase = array(
|
||||||
|
0 => 'mv "a.txt" "b.txt"',
|
||||||
|
);
|
||||||
|
|
||||||
|
// Check total of Executed Commands
|
||||||
|
$this->assertEquals(count($testCase), count($ranCommands));
|
||||||
|
|
||||||
|
// Check Generated Commands
|
||||||
|
foreach ($testCase as $index => $command) {
|
||||||
|
$this->assertEquals($command, $ranCommands[$index]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testMoveWithFlagsTask()
|
||||||
|
{
|
||||||
|
$runtime = new RuntimeMockup();
|
||||||
|
$runtime->setConfiguration(['environments' => ['test' => []]]);
|
||||||
|
$runtime->setEnvironment('test');
|
||||||
|
|
||||||
|
$task = new MoveTask();
|
||||||
|
$task->setOptions(['from' => 'a.txt', 'to' => 'b.txt', 'flags' => '-n']);
|
||||||
|
$task->setRuntime($runtime);
|
||||||
|
|
||||||
|
$this->assertContains('a.txt', $task->getDescription());
|
||||||
|
$this->assertContains('b.txt', $task->getDescription());
|
||||||
|
$task->execute();
|
||||||
|
|
||||||
|
$ranCommands = $runtime->getRanCommands();
|
||||||
|
|
||||||
|
$testCase = array(
|
||||||
|
0 => 'mv -n "a.txt" "b.txt"',
|
||||||
|
);
|
||||||
|
|
||||||
|
// Check total of Executed Commands
|
||||||
|
$this->assertEquals(count($testCase), count($ranCommands));
|
||||||
|
|
||||||
|
// Check Generated Commands
|
||||||
|
foreach ($testCase as $index => $command) {
|
||||||
|
$this->assertEquals($command, $ranCommands[$index]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testMoveReplaceTask()
|
||||||
|
{
|
||||||
|
$runtime = new RuntimeMockup();
|
||||||
|
$runtime->setConfiguration(['environments' => ['test' => []]]);
|
||||||
|
$runtime->setEnvironment('test');
|
||||||
|
|
||||||
|
$task = new MoveTask();
|
||||||
|
$task->setOptions(['from' => '%environment%.txt', 'to' => 'b.txt']);
|
||||||
|
$task->setRuntime($runtime);
|
||||||
|
|
||||||
|
$this->assertContains('test.txt', $task->getDescription());
|
||||||
|
$this->assertContains('b.txt', $task->getDescription());
|
||||||
|
$task->execute();
|
||||||
|
|
||||||
|
$ranCommands = $runtime->getRanCommands();
|
||||||
|
|
||||||
|
$testCase = array(
|
||||||
|
0 => 'mv "test.txt" "b.txt"',
|
||||||
|
);
|
||||||
|
|
||||||
|
// Check total of Executed Commands
|
||||||
|
$this->assertEquals(count($testCase), count($ranCommands));
|
||||||
|
|
||||||
|
// Check Generated Commands
|
||||||
|
foreach ($testCase as $index => $command) {
|
||||||
|
$this->assertEquals($command, $ranCommands[$index]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testMoveBadOptionsTask()
|
||||||
|
{
|
||||||
|
$runtime = new RuntimeMockup();
|
||||||
|
$runtime->setConfiguration(['environments' => ['test' => []]]);
|
||||||
|
$runtime->setEnvironment('test');
|
||||||
|
|
||||||
|
$task = new MoveTask();
|
||||||
|
$task->setOptions(['form' => 'a.txt', 'to' => 'b.txt']);
|
||||||
|
$task->setRuntime($runtime);
|
||||||
|
|
||||||
|
try {
|
||||||
|
$this->assertContains('[missing parameters]', $task->getDescription());
|
||||||
|
$task->execute();
|
||||||
|
$this->assertTrue(false, 'Task did not failed');
|
||||||
|
} catch (Exception $exception) {
|
||||||
|
$this->assertTrue($exception instanceof ErrorException);
|
||||||
|
$this->assertEquals('Parameter "from" is not defined', $exception->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
124
tests/Task/BuiltIn/FileSystem/RemoveTaskTest.php
Normal file
124
tests/Task/BuiltIn/FileSystem/RemoveTaskTest.php
Normal file
|
@ -0,0 +1,124 @@
|
||||||
|
<?php
|
||||||
|
/*
|
||||||
|
* This file is part of the Magallanes package.
|
||||||
|
*
|
||||||
|
* (c) Andrés Montañez <andres@andresmontanez.com>
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Mage\Tests\Task\BuiltIn\FileSystem;
|
||||||
|
|
||||||
|
use Mage\Task\Exception\ErrorException;
|
||||||
|
use Mage\Task\BuiltIn\FS\RemoveTask;
|
||||||
|
use Exception;
|
||||||
|
use Mage\Tests\Runtime\RuntimeMockup;
|
||||||
|
use PHPUnit_Framework_TestCase as TestCase;
|
||||||
|
|
||||||
|
class RemoveTaskTest extends TestCase
|
||||||
|
{
|
||||||
|
public function testRemoveTask()
|
||||||
|
{
|
||||||
|
$runtime = new RuntimeMockup();
|
||||||
|
$runtime->setConfiguration(['environments' => ['test' => []]]);
|
||||||
|
$runtime->setEnvironment('test');
|
||||||
|
|
||||||
|
$task = new RemoveTask();
|
||||||
|
$task->setOptions(['file' => 'a.txt']);
|
||||||
|
$task->setRuntime($runtime);
|
||||||
|
|
||||||
|
$this->assertContains('a.txt', $task->getDescription());
|
||||||
|
$task->execute();
|
||||||
|
|
||||||
|
$ranCommands = $runtime->getRanCommands();
|
||||||
|
|
||||||
|
$testCase = array(
|
||||||
|
0 => 'rm "a.txt"',
|
||||||
|
);
|
||||||
|
|
||||||
|
// Check total of Executed Commands
|
||||||
|
$this->assertEquals(count($testCase), count($ranCommands));
|
||||||
|
|
||||||
|
// Check Generated Commands
|
||||||
|
foreach ($testCase as $index => $command) {
|
||||||
|
$this->assertEquals($command, $ranCommands[$index]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testRemoveWithFlagsTask()
|
||||||
|
{
|
||||||
|
$runtime = new RuntimeMockup();
|
||||||
|
$runtime->setConfiguration(['environments' => ['test' => []]]);
|
||||||
|
$runtime->setEnvironment('test');
|
||||||
|
|
||||||
|
$task = new RemoveTask();
|
||||||
|
$task->setOptions(['file' => 'a.txt', 'flags' => '-fr']);
|
||||||
|
$task->setRuntime($runtime);
|
||||||
|
|
||||||
|
$this->assertContains('a.txt', $task->getDescription());
|
||||||
|
$task->execute();
|
||||||
|
|
||||||
|
$ranCommands = $runtime->getRanCommands();
|
||||||
|
|
||||||
|
$testCase = array(
|
||||||
|
0 => 'rm -fr "a.txt"',
|
||||||
|
);
|
||||||
|
|
||||||
|
// Check total of Executed Commands
|
||||||
|
$this->assertEquals(count($testCase), count($ranCommands));
|
||||||
|
|
||||||
|
// Check Generated Commands
|
||||||
|
foreach ($testCase as $index => $command) {
|
||||||
|
$this->assertEquals($command, $ranCommands[$index]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testRemoveReplaceTask()
|
||||||
|
{
|
||||||
|
$runtime = new RuntimeMockup();
|
||||||
|
$runtime->setConfiguration(['environments' => ['test' => []]]);
|
||||||
|
$runtime->setEnvironment('test');
|
||||||
|
|
||||||
|
$task = new RemoveTask();
|
||||||
|
$task->setOptions(['file' => '%environment%.txt']);
|
||||||
|
$task->setRuntime($runtime);
|
||||||
|
|
||||||
|
$this->assertContains('test.txt', $task->getDescription());
|
||||||
|
$task->execute();
|
||||||
|
|
||||||
|
$ranCommands = $runtime->getRanCommands();
|
||||||
|
|
||||||
|
$testCase = array(
|
||||||
|
0 => 'rm "test.txt"',
|
||||||
|
);
|
||||||
|
|
||||||
|
// Check total of Executed Commands
|
||||||
|
$this->assertEquals(count($testCase), count($ranCommands));
|
||||||
|
|
||||||
|
// Check Generated Commands
|
||||||
|
foreach ($testCase as $index => $command) {
|
||||||
|
$this->assertEquals($command, $ranCommands[$index]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testRemoveBadOptionsTask()
|
||||||
|
{
|
||||||
|
$runtime = new RuntimeMockup();
|
||||||
|
$runtime->setConfiguration(['environments' => ['test' => []]]);
|
||||||
|
$runtime->setEnvironment('test');
|
||||||
|
|
||||||
|
$task = new RemoveTask();
|
||||||
|
$task->setOptions(['from' => 'a.txt']);
|
||||||
|
$task->setRuntime($runtime);
|
||||||
|
|
||||||
|
try {
|
||||||
|
$this->assertContains('[missing parameters]', $task->getDescription());
|
||||||
|
$task->execute();
|
||||||
|
$this->assertTrue(false, 'Task did not failed');
|
||||||
|
} catch (Exception $exception) {
|
||||||
|
$this->assertTrue($exception instanceof ErrorException);
|
||||||
|
$this->assertEquals('Parameter "file" is not defined', $exception->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,479 +0,0 @@
|
||||||
<?php
|
|
||||||
/*
|
|
||||||
* This file is part of the Magallanes package.
|
|
||||||
*
|
|
||||||
* (c) Andrés Montañez <andres@andresmontanez.com>
|
|
||||||
*
|
|
||||||
* For the full copyright and license information, please view the LICENSE
|
|
||||||
* file that was distributed with this source code.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace Mage\Tests\Task\BuiltIn;
|
|
||||||
|
|
||||||
use Mage\Task\Exception\ErrorException;
|
|
||||||
use Mage\Task\BuiltIn\FS\CopyTask;
|
|
||||||
use Mage\Task\BuiltIn\FS\LinkTask;
|
|
||||||
use Mage\Task\BuiltIn\FS\MoveTask;
|
|
||||||
use Mage\Task\BuiltIn\FS\RemoveTask;
|
|
||||||
use Exception;
|
|
||||||
use Mage\Tests\Runtime\RuntimeMockup;
|
|
||||||
use PHPUnit_Framework_TestCase as TestCase;
|
|
||||||
|
|
||||||
class FileSystemTaskTest extends TestCase
|
|
||||||
{
|
|
||||||
public function testCopyTask()
|
|
||||||
{
|
|
||||||
$runtime = new RuntimeMockup();
|
|
||||||
$runtime->setConfiguration(['environments' => ['test' => []]]);
|
|
||||||
$runtime->setEnvironment('test');
|
|
||||||
|
|
||||||
$task = new CopyTask();
|
|
||||||
$task->setOptions(['from' => 'a.txt', 'to' => 'b.txt']);
|
|
||||||
$task->setRuntime($runtime);
|
|
||||||
|
|
||||||
$this->assertContains('a.txt', $task->getDescription());
|
|
||||||
$this->assertContains('b.txt', $task->getDescription());
|
|
||||||
$task->execute();
|
|
||||||
|
|
||||||
$ranCommands = $runtime->getRanCommands();
|
|
||||||
|
|
||||||
$testCase = array(
|
|
||||||
0 => 'cp -p "a.txt" "b.txt"',
|
|
||||||
);
|
|
||||||
|
|
||||||
// Check total of Executed Commands
|
|
||||||
$this->assertEquals(count($testCase), count($ranCommands));
|
|
||||||
|
|
||||||
// Check Generated Commands
|
|
||||||
foreach ($testCase as $index => $command) {
|
|
||||||
$this->assertEquals($command, $ranCommands[$index]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testCopyTaskWithFlags()
|
|
||||||
{
|
|
||||||
$runtime = new RuntimeMockup();
|
|
||||||
$runtime->setConfiguration(['environments' => ['test' => []]]);
|
|
||||||
$runtime->setEnvironment('test');
|
|
||||||
|
|
||||||
$task = new CopyTask();
|
|
||||||
$task->setOptions(['from' => 'a.txt', 'to' => 'b.txt', 'flags' => '-rp']);
|
|
||||||
$task->setRuntime($runtime);
|
|
||||||
|
|
||||||
$this->assertContains('a.txt', $task->getDescription());
|
|
||||||
$this->assertContains('b.txt', $task->getDescription());
|
|
||||||
$task->execute();
|
|
||||||
|
|
||||||
$ranCommands = $runtime->getRanCommands();
|
|
||||||
|
|
||||||
$testCase = array(
|
|
||||||
0 => 'cp -rp "a.txt" "b.txt"',
|
|
||||||
);
|
|
||||||
|
|
||||||
// Check total of Executed Commands
|
|
||||||
$this->assertEquals(count($testCase), count($ranCommands));
|
|
||||||
|
|
||||||
// Check Generated Commands
|
|
||||||
foreach ($testCase as $index => $command) {
|
|
||||||
$this->assertEquals($command, $ranCommands[$index]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testCopyReplaceTask()
|
|
||||||
{
|
|
||||||
$runtime = new RuntimeMockup();
|
|
||||||
$runtime->setConfiguration(['environments' => ['test' => []]]);
|
|
||||||
$runtime->setEnvironment('test');
|
|
||||||
|
|
||||||
$task = new CopyTask();
|
|
||||||
$task->setOptions(['from' => '%environment%.txt', 'to' => 'b.txt']);
|
|
||||||
$task->setRuntime($runtime);
|
|
||||||
|
|
||||||
$this->assertContains('test.txt', $task->getDescription());
|
|
||||||
$this->assertContains('b.txt', $task->getDescription());
|
|
||||||
$task->execute();
|
|
||||||
|
|
||||||
$ranCommands = $runtime->getRanCommands();
|
|
||||||
|
|
||||||
$testCase = array(
|
|
||||||
0 => 'cp -p "test.txt" "b.txt"',
|
|
||||||
);
|
|
||||||
|
|
||||||
// Check total of Executed Commands
|
|
||||||
$this->assertEquals(count($testCase), count($ranCommands));
|
|
||||||
|
|
||||||
// Check Generated Commands
|
|
||||||
foreach ($testCase as $index => $command) {
|
|
||||||
$this->assertEquals($command, $ranCommands[$index]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testCopyMultipleReplaceTask()
|
|
||||||
{
|
|
||||||
$runtime = new RuntimeMockup();
|
|
||||||
$runtime->setConfiguration(['environments' => ['test' => []]]);
|
|
||||||
$runtime->setEnvironment('test');
|
|
||||||
$runtime->setReleaseId('1234');
|
|
||||||
$runtime->setWorkingHost('localhost');
|
|
||||||
|
|
||||||
$task = new CopyTask();
|
|
||||||
$task->setOptions(['from' => '%host%.txt', 'to' => '%release%.yml']);
|
|
||||||
$task->setRuntime($runtime);
|
|
||||||
|
|
||||||
$this->assertContains('localhost.txt', $task->getDescription());
|
|
||||||
$this->assertContains('1234.yml', $task->getDescription());
|
|
||||||
$task->execute();
|
|
||||||
|
|
||||||
$ranCommands = $runtime->getRanCommands();
|
|
||||||
|
|
||||||
$testCase = array(
|
|
||||||
0 => 'cp -p "localhost.txt" "1234.yml"',
|
|
||||||
);
|
|
||||||
|
|
||||||
// Check total of Executed Commands
|
|
||||||
$this->assertEquals(count($testCase), count($ranCommands));
|
|
||||||
|
|
||||||
// Check Generated Commands
|
|
||||||
foreach ($testCase as $index => $command) {
|
|
||||||
$this->assertEquals($command, $ranCommands[$index]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testCopyBadOptionsTask()
|
|
||||||
{
|
|
||||||
$runtime = new RuntimeMockup();
|
|
||||||
$runtime->setConfiguration(['environments' => ['test' => []]]);
|
|
||||||
$runtime->setEnvironment('test');
|
|
||||||
|
|
||||||
$task = new CopyTask();
|
|
||||||
$task->setOptions(['form' => 'a.txt', 'to' => 'b.txt']);
|
|
||||||
$task->setRuntime($runtime);
|
|
||||||
|
|
||||||
try {
|
|
||||||
$this->assertContains('[missing parameters]', $task->getDescription());
|
|
||||||
$task->execute();
|
|
||||||
$this->assertTrue(false, 'Task did not failed');
|
|
||||||
} catch (Exception $exception) {
|
|
||||||
$this->assertTrue($exception instanceof ErrorException);
|
|
||||||
$this->assertEquals('Parameter "from" is not defined', $exception->getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testMoveTask()
|
|
||||||
{
|
|
||||||
$runtime = new RuntimeMockup();
|
|
||||||
$runtime->setConfiguration(['environments' => ['test' => []]]);
|
|
||||||
$runtime->setEnvironment('test');
|
|
||||||
|
|
||||||
$task = new MoveTask();
|
|
||||||
$task->setOptions(['from' => 'a.txt', 'to' => 'b.txt']);
|
|
||||||
$task->setRuntime($runtime);
|
|
||||||
|
|
||||||
$this->assertContains('a.txt', $task->getDescription());
|
|
||||||
$this->assertContains('b.txt', $task->getDescription());
|
|
||||||
$task->execute();
|
|
||||||
|
|
||||||
$ranCommands = $runtime->getRanCommands();
|
|
||||||
|
|
||||||
$testCase = array(
|
|
||||||
0 => 'mv "a.txt" "b.txt"',
|
|
||||||
);
|
|
||||||
|
|
||||||
// Check total of Executed Commands
|
|
||||||
$this->assertEquals(count($testCase), count($ranCommands));
|
|
||||||
|
|
||||||
// Check Generated Commands
|
|
||||||
foreach ($testCase as $index => $command) {
|
|
||||||
$this->assertEquals($command, $ranCommands[$index]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testMoveWithFlagsTask()
|
|
||||||
{
|
|
||||||
$runtime = new RuntimeMockup();
|
|
||||||
$runtime->setConfiguration(['environments' => ['test' => []]]);
|
|
||||||
$runtime->setEnvironment('test');
|
|
||||||
|
|
||||||
$task = new MoveTask();
|
|
||||||
$task->setOptions(['from' => 'a.txt', 'to' => 'b.txt', 'flags' => '-n']);
|
|
||||||
$task->setRuntime($runtime);
|
|
||||||
|
|
||||||
$this->assertContains('a.txt', $task->getDescription());
|
|
||||||
$this->assertContains('b.txt', $task->getDescription());
|
|
||||||
$task->execute();
|
|
||||||
|
|
||||||
$ranCommands = $runtime->getRanCommands();
|
|
||||||
|
|
||||||
$testCase = array(
|
|
||||||
0 => 'mv -n "a.txt" "b.txt"',
|
|
||||||
);
|
|
||||||
|
|
||||||
// Check total of Executed Commands
|
|
||||||
$this->assertEquals(count($testCase), count($ranCommands));
|
|
||||||
|
|
||||||
// Check Generated Commands
|
|
||||||
foreach ($testCase as $index => $command) {
|
|
||||||
$this->assertEquals($command, $ranCommands[$index]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testMoveReplaceTask()
|
|
||||||
{
|
|
||||||
$runtime = new RuntimeMockup();
|
|
||||||
$runtime->setConfiguration(['environments' => ['test' => []]]);
|
|
||||||
$runtime->setEnvironment('test');
|
|
||||||
|
|
||||||
$task = new MoveTask();
|
|
||||||
$task->setOptions(['from' => '%environment%.txt', 'to' => 'b.txt']);
|
|
||||||
$task->setRuntime($runtime);
|
|
||||||
|
|
||||||
$this->assertContains('test.txt', $task->getDescription());
|
|
||||||
$this->assertContains('b.txt', $task->getDescription());
|
|
||||||
$task->execute();
|
|
||||||
|
|
||||||
$ranCommands = $runtime->getRanCommands();
|
|
||||||
|
|
||||||
$testCase = array(
|
|
||||||
0 => 'mv "test.txt" "b.txt"',
|
|
||||||
);
|
|
||||||
|
|
||||||
// Check total of Executed Commands
|
|
||||||
$this->assertEquals(count($testCase), count($ranCommands));
|
|
||||||
|
|
||||||
// Check Generated Commands
|
|
||||||
foreach ($testCase as $index => $command) {
|
|
||||||
$this->assertEquals($command, $ranCommands[$index]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testMoveBadOptionsTask()
|
|
||||||
{
|
|
||||||
$runtime = new RuntimeMockup();
|
|
||||||
$runtime->setConfiguration(['environments' => ['test' => []]]);
|
|
||||||
$runtime->setEnvironment('test');
|
|
||||||
|
|
||||||
$task = new MoveTask();
|
|
||||||
$task->setOptions(['form' => 'a.txt', 'to' => 'b.txt']);
|
|
||||||
$task->setRuntime($runtime);
|
|
||||||
|
|
||||||
try {
|
|
||||||
$this->assertContains('[missing parameters]', $task->getDescription());
|
|
||||||
$task->execute();
|
|
||||||
$this->assertTrue(false, 'Task did not failed');
|
|
||||||
} catch (Exception $exception) {
|
|
||||||
$this->assertTrue($exception instanceof ErrorException);
|
|
||||||
$this->assertEquals('Parameter "from" is not defined', $exception->getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testRemoveTask()
|
|
||||||
{
|
|
||||||
$runtime = new RuntimeMockup();
|
|
||||||
$runtime->setConfiguration(['environments' => ['test' => []]]);
|
|
||||||
$runtime->setEnvironment('test');
|
|
||||||
|
|
||||||
$task = new RemoveTask();
|
|
||||||
$task->setOptions(['file' => 'a.txt']);
|
|
||||||
$task->setRuntime($runtime);
|
|
||||||
|
|
||||||
$this->assertContains('a.txt', $task->getDescription());
|
|
||||||
$task->execute();
|
|
||||||
|
|
||||||
$ranCommands = $runtime->getRanCommands();
|
|
||||||
|
|
||||||
$testCase = array(
|
|
||||||
0 => 'rm "a.txt"',
|
|
||||||
);
|
|
||||||
|
|
||||||
// Check total of Executed Commands
|
|
||||||
$this->assertEquals(count($testCase), count($ranCommands));
|
|
||||||
|
|
||||||
// Check Generated Commands
|
|
||||||
foreach ($testCase as $index => $command) {
|
|
||||||
$this->assertEquals($command, $ranCommands[$index]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testRemoveWithFlagsTask()
|
|
||||||
{
|
|
||||||
$runtime = new RuntimeMockup();
|
|
||||||
$runtime->setConfiguration(['environments' => ['test' => []]]);
|
|
||||||
$runtime->setEnvironment('test');
|
|
||||||
|
|
||||||
$task = new RemoveTask();
|
|
||||||
$task->setOptions(['file' => 'a.txt', 'flags' => '-fr']);
|
|
||||||
$task->setRuntime($runtime);
|
|
||||||
|
|
||||||
$this->assertContains('a.txt', $task->getDescription());
|
|
||||||
$task->execute();
|
|
||||||
|
|
||||||
$ranCommands = $runtime->getRanCommands();
|
|
||||||
|
|
||||||
$testCase = array(
|
|
||||||
0 => 'rm -fr "a.txt"',
|
|
||||||
);
|
|
||||||
|
|
||||||
// Check total of Executed Commands
|
|
||||||
$this->assertEquals(count($testCase), count($ranCommands));
|
|
||||||
|
|
||||||
// Check Generated Commands
|
|
||||||
foreach ($testCase as $index => $command) {
|
|
||||||
$this->assertEquals($command, $ranCommands[$index]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testRemoveReplaceTask()
|
|
||||||
{
|
|
||||||
$runtime = new RuntimeMockup();
|
|
||||||
$runtime->setConfiguration(['environments' => ['test' => []]]);
|
|
||||||
$runtime->setEnvironment('test');
|
|
||||||
|
|
||||||
$task = new RemoveTask();
|
|
||||||
$task->setOptions(['file' => '%environment%.txt']);
|
|
||||||
$task->setRuntime($runtime);
|
|
||||||
|
|
||||||
$this->assertContains('test.txt', $task->getDescription());
|
|
||||||
$task->execute();
|
|
||||||
|
|
||||||
$ranCommands = $runtime->getRanCommands();
|
|
||||||
|
|
||||||
$testCase = array(
|
|
||||||
0 => 'rm "test.txt"',
|
|
||||||
);
|
|
||||||
|
|
||||||
// Check total of Executed Commands
|
|
||||||
$this->assertEquals(count($testCase), count($ranCommands));
|
|
||||||
|
|
||||||
// Check Generated Commands
|
|
||||||
foreach ($testCase as $index => $command) {
|
|
||||||
$this->assertEquals($command, $ranCommands[$index]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testRemoveBadOptionsTask()
|
|
||||||
{
|
|
||||||
$runtime = new RuntimeMockup();
|
|
||||||
$runtime->setConfiguration(['environments' => ['test' => []]]);
|
|
||||||
$runtime->setEnvironment('test');
|
|
||||||
|
|
||||||
$task = new RemoveTask();
|
|
||||||
$task->setOptions(['from' => 'a.txt']);
|
|
||||||
$task->setRuntime($runtime);
|
|
||||||
|
|
||||||
try {
|
|
||||||
$this->assertContains('[missing parameters]', $task->getDescription());
|
|
||||||
$task->execute();
|
|
||||||
$this->assertTrue(false, 'Task did not failed');
|
|
||||||
} catch (Exception $exception) {
|
|
||||||
$this->assertTrue($exception instanceof ErrorException);
|
|
||||||
$this->assertEquals('Parameter "file" is not defined', $exception->getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testLinkTask()
|
|
||||||
{
|
|
||||||
$runtime = new RuntimeMockup();
|
|
||||||
$runtime->setConfiguration(['environments' => ['test' => []]]);
|
|
||||||
$runtime->setEnvironment('test');
|
|
||||||
|
|
||||||
$task = new LinkTask();
|
|
||||||
$task->setOptions(['from' => 'a.txt', 'to' => 'b.txt']);
|
|
||||||
$task->setRuntime($runtime);
|
|
||||||
|
|
||||||
$this->assertContains('a.txt', $task->getDescription());
|
|
||||||
$this->assertContains('b.txt', $task->getDescription());
|
|
||||||
$task->execute();
|
|
||||||
|
|
||||||
$ranCommands = $runtime->getRanCommands();
|
|
||||||
|
|
||||||
$testCase = array(
|
|
||||||
0 => 'ln -snf "a.txt" "b.txt"',
|
|
||||||
);
|
|
||||||
|
|
||||||
// Check total of Executed Commands
|
|
||||||
$this->assertEquals(count($testCase), count($ranCommands));
|
|
||||||
|
|
||||||
// Check Generated Commands
|
|
||||||
foreach ($testCase as $index => $command) {
|
|
||||||
$this->assertEquals($command, $ranCommands[$index]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testLinkTaskWithFlags()
|
|
||||||
{
|
|
||||||
$runtime = new RuntimeMockup();
|
|
||||||
$runtime->setConfiguration(['environments' => ['test' => []]]);
|
|
||||||
$runtime->setEnvironment('test');
|
|
||||||
|
|
||||||
$task = new LinkTask();
|
|
||||||
$task->setOptions(['from' => 'a.txt', 'to' => 'b.txt', 'flags' => '-P']);
|
|
||||||
$task->setRuntime($runtime);
|
|
||||||
|
|
||||||
$this->assertContains('a.txt', $task->getDescription());
|
|
||||||
$this->assertContains('b.txt', $task->getDescription());
|
|
||||||
$task->execute();
|
|
||||||
|
|
||||||
$ranCommands = $runtime->getRanCommands();
|
|
||||||
|
|
||||||
$testCase = array(
|
|
||||||
0 => 'ln -P "a.txt" "b.txt"',
|
|
||||||
);
|
|
||||||
|
|
||||||
// Check total of Executed Commands
|
|
||||||
$this->assertEquals(count($testCase), count($ranCommands));
|
|
||||||
|
|
||||||
// Check Generated Commands
|
|
||||||
foreach ($testCase as $index => $command) {
|
|
||||||
$this->assertEquals($command, $ranCommands[$index]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testLinkReplaceTask()
|
|
||||||
{
|
|
||||||
$runtime = new RuntimeMockup();
|
|
||||||
$runtime->setConfiguration(['environments' => ['test' => []]]);
|
|
||||||
$runtime->setEnvironment('test');
|
|
||||||
|
|
||||||
$task = new LinkTask();
|
|
||||||
$task->setOptions(['from' => '%environment%.txt', 'to' => 'b.txt']);
|
|
||||||
$task->setRuntime($runtime);
|
|
||||||
|
|
||||||
$this->assertContains('test.txt', $task->getDescription());
|
|
||||||
$this->assertContains('b.txt', $task->getDescription());
|
|
||||||
$task->execute();
|
|
||||||
|
|
||||||
$ranCommands = $runtime->getRanCommands();
|
|
||||||
|
|
||||||
$testCase = array(
|
|
||||||
0 => 'ln -snf "test.txt" "b.txt"',
|
|
||||||
);
|
|
||||||
|
|
||||||
// Check total of Executed Commands
|
|
||||||
$this->assertEquals(count($testCase), count($ranCommands));
|
|
||||||
|
|
||||||
// Check Generated Commands
|
|
||||||
foreach ($testCase as $index => $command) {
|
|
||||||
$this->assertEquals($command, $ranCommands[$index]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testLinkBadOptionsTask()
|
|
||||||
{
|
|
||||||
$runtime = new RuntimeMockup();
|
|
||||||
$runtime->setConfiguration(['environments' => ['test' => []]]);
|
|
||||||
$runtime->setEnvironment('test');
|
|
||||||
|
|
||||||
$task = new LinkTask();
|
|
||||||
$task->setOptions(['form' => 'a.txt', 'to' => 'b.txt']);
|
|
||||||
$task->setRuntime($runtime);
|
|
||||||
|
|
||||||
try {
|
|
||||||
$this->assertContains('[missing parameters]', $task->getDescription());
|
|
||||||
$task->execute();
|
|
||||||
$this->assertTrue(false, 'Task did not failed');
|
|
||||||
} catch (Exception $exception) {
|
|
||||||
$this->assertTrue($exception instanceof ErrorException);
|
|
||||||
$this->assertEquals('Parameter "from" is not defined', $exception->getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in a new issue