mirror of
https://github.com/andres-montanez/Magallanes
synced 2024-05-04 23:13:16 +02:00
[Nostromo] Refactor Tests
This commit is contained in:
parent
fa09553f7f
commit
b56e1c378c
|
@ -74,7 +74,7 @@ class MageApplication extends Application
|
|||
$logger->pushHandler(new StreamHandler($logfile));
|
||||
}
|
||||
|
||||
$this->runtime = new Runtime();
|
||||
$this->runtime = $this->instantiateRuntime();
|
||||
$this->runtime->setConfiguration($config);
|
||||
$this->runtime->setLogger($logger);
|
||||
|
||||
|
@ -105,4 +105,24 @@ class MageApplication extends Application
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the Runtime instance to use
|
||||
*
|
||||
* @return Runtime
|
||||
*/
|
||||
protected function instantiateRuntime()
|
||||
{
|
||||
return new Runtime();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Runtime instance
|
||||
*
|
||||
* @return Runtime
|
||||
*/
|
||||
public function getRuntime()
|
||||
{
|
||||
return $this->runtime;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -33,7 +33,7 @@ class InstallTask extends AbstractTask
|
|||
public function execute()
|
||||
{
|
||||
$options = $this->getOptions();
|
||||
$command = $options['path'] . ' install ' . $options['flags'];
|
||||
$command = trim($options['path'] . ' install ' . $options['flags']);
|
||||
|
||||
/** @var Process $process */
|
||||
$process = $this->runtime->runCommand($command);
|
||||
|
@ -45,7 +45,7 @@ class InstallTask extends AbstractTask
|
|||
{
|
||||
$userOptions = $this->runtime->getConfigOptions('composer', []);
|
||||
$options = array_merge(
|
||||
['path' => 'composer', 'flags' => '--dev'],
|
||||
['path' => 'composer', 'flags' => ''],
|
||||
(is_array($userOptions) ? $userOptions : []),
|
||||
$this->options
|
||||
);
|
||||
|
|
|
@ -12,8 +12,7 @@ namespace Mage\Tests\Command\BuiltIn\Config;
|
|||
|
||||
use Mage\Command\BuiltIn\Config\DumpCommand;
|
||||
use Mage\Command\AbstractCommand;
|
||||
use Mage\Tests\MageTestApplication;
|
||||
use Mage\Tests\Runtime\RuntimeMockup;
|
||||
use Mage\Tests\MageApplicationMockup;
|
||||
use Symfony\Component\Console\Tester\CommandTester;
|
||||
use PHPUnit_Framework_TestCase as TestCase;
|
||||
|
||||
|
@ -21,12 +20,12 @@ class DumpCommandTest extends TestCase
|
|||
{
|
||||
public function testConfigDumpTermination()
|
||||
{
|
||||
$application = new MageTestApplication();
|
||||
$application->add(new DumpCommand());
|
||||
$application = new MageApplicationMockup();
|
||||
$application->configure(__DIR__ . '/../../../Resources/basic.yml');
|
||||
|
||||
/** @var AbstractCommand $command */
|
||||
$command = $application->find('config:dump');
|
||||
$command->setRuntime(new RuntimeMockup());
|
||||
$this->assertTrue($command instanceof DumpCommand);
|
||||
|
||||
$tester = new CommandTester($command);
|
||||
$tester->execute(['command' => $command->getName()]);
|
||||
|
|
|
@ -12,8 +12,7 @@ namespace Mage\Tests\Command\BuiltIn\Config;
|
|||
|
||||
use Mage\Command\BuiltIn\Config\EnvironmentsCommand;
|
||||
use Mage\Command\AbstractCommand;
|
||||
use Mage\Tests\MageTestApplication;
|
||||
use Mage\Tests\Runtime\RuntimeMockup;
|
||||
use Mage\Tests\MageApplicationMockup;
|
||||
use Symfony\Component\Console\Tester\CommandTester;
|
||||
use PHPUnit_Framework_TestCase as TestCase;
|
||||
|
||||
|
@ -21,78 +20,12 @@ class EnvironmentsCommandTest extends TestCase
|
|||
{
|
||||
public function testConfigDumpTermination()
|
||||
{
|
||||
$application = new MageTestApplication();
|
||||
$application->add(new EnvironmentsCommand());
|
||||
|
||||
$runtime = new RuntimeMockup();
|
||||
$runtime->setConfiguration(array(
|
||||
'environments' =>
|
||||
array(
|
||||
'test' =>
|
||||
array(
|
||||
'user' => 'tester',
|
||||
'branch' => 'test',
|
||||
'host_path' => '/var/www/test',
|
||||
'releases' => 4,
|
||||
'exclude' =>
|
||||
array(
|
||||
0 => 'vendor',
|
||||
1 => 'app/cache',
|
||||
2 => 'app/log',
|
||||
3 => 'web/app_dev.php',
|
||||
),
|
||||
'hosts' =>
|
||||
array(
|
||||
0 => 'testhost',
|
||||
),
|
||||
'pre-deploy' =>
|
||||
array(
|
||||
0 => 'git/update',
|
||||
1 => 'composer/install',
|
||||
2 => 'composer/generate-autoload',
|
||||
),
|
||||
'on-deploy' =>
|
||||
array(
|
||||
0 =>
|
||||
array(
|
||||
'symfony/cache-clear' =>
|
||||
array(
|
||||
'env' => 'dev',
|
||||
),
|
||||
),
|
||||
1 =>
|
||||
array(
|
||||
'symfony/cache-warmup' =>
|
||||
array(
|
||||
'env' => 'dev',
|
||||
),
|
||||
),
|
||||
2 =>
|
||||
array(
|
||||
'symfony/assets-install' =>
|
||||
array(
|
||||
'env' => 'dev',
|
||||
),
|
||||
),
|
||||
3 =>
|
||||
array(
|
||||
'symfony/assetic-dump' =>
|
||||
array(
|
||||
'env' => 'dev',
|
||||
),
|
||||
),
|
||||
),
|
||||
'on-release' => null,
|
||||
'post-release' => null,
|
||||
'post-deploy' => null,
|
||||
),
|
||||
),
|
||||
)
|
||||
);
|
||||
$application = new MageApplicationMockup();
|
||||
$application->configure(__DIR__ . '/../../../Resources/basic.yml');
|
||||
|
||||
/** @var AbstractCommand $command */
|
||||
$command = $application->find('config:environments');
|
||||
$command->setRuntime($runtime);
|
||||
$this->assertTrue($command instanceof EnvironmentsCommand);
|
||||
|
||||
$tester = new CommandTester($command);
|
||||
$tester->execute(['command' => $command->getName()]);
|
||||
|
|
249
src/Mage/Tests/Command/BuiltIn/DeployCommandMiscTest.php
Normal file
249
src/Mage/Tests/Command/BuiltIn/DeployCommandMiscTest.php
Normal file
|
@ -0,0 +1,249 @@
|
|||
<?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\Command\BuiltIn;
|
||||
|
||||
use Mage\Command\BuiltIn\DeployCommand;
|
||||
use Mage\Tests\MageApplicationMockup;
|
||||
use Mage\Command\AbstractCommand;
|
||||
use Symfony\Component\Console\Tester\CommandTester;
|
||||
use PHPUnit_Framework_TestCase as TestCase;
|
||||
|
||||
class DeployCommandMiscTest extends TestCase
|
||||
{
|
||||
public function testDeploymentWithSudo()
|
||||
{
|
||||
$application = new MageApplicationMockup();
|
||||
$application->configure(__DIR__ . '/../../Resources/testhost-sudo.yml');
|
||||
|
||||
/** @var AbstractCommand $command */
|
||||
$command = $application->find('deploy');
|
||||
$this->assertTrue($command instanceof DeployCommand);
|
||||
|
||||
$tester = new CommandTester($command);
|
||||
$tester->execute(['command' => $command->getName(), 'environment' => 'test']);
|
||||
|
||||
$ranCommands = $application->getRuntime()->getRanCommands();
|
||||
|
||||
$testCase = array(
|
||||
0 => 'git branch | grep "*"',
|
||||
1 => 'git checkout test',
|
||||
2 => 'git pull',
|
||||
3 => 'composer install',
|
||||
4 => 'composer dumpautoload --optimize',
|
||||
5 => 'rsync -e "ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" -avz --exclude=.git --exclude=./var/cache/* --exclude=./var/log/* --exclude=./web/app_dev.php ./ tester@testhost:/var/www/test',
|
||||
6 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test \\&\\& sudo bin/console cache:warmup --env=dev \\"',
|
||||
7 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test \\&\\& sudo bin/console assets:install --env=dev --symlink --relative web\\"',
|
||||
8 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test \\&\\& sudo bin/console assetic:dump --env=dev \\"',
|
||||
9 => 'git checkout master',
|
||||
);
|
||||
|
||||
// Check total of Executed Commands
|
||||
$this->assertEquals(count($testCase), count($ranCommands));
|
||||
|
||||
// Check Generated Commands
|
||||
foreach ($testCase as $index => $command) {
|
||||
$this->assertEquals($command, $ranCommands[$index]);
|
||||
}
|
||||
|
||||
$this->assertEquals(0, $tester->getStatusCode());
|
||||
}
|
||||
|
||||
public function testDeploymentWithBranchOverwrite()
|
||||
{
|
||||
$application = new MageApplicationMockup();
|
||||
$application->configure(__DIR__ . '/../../Resources/testhost-without-releases.yml');
|
||||
|
||||
/** @var AbstractCommand $command */
|
||||
$command = $application->find('deploy');
|
||||
$this->assertTrue($command instanceof DeployCommand);
|
||||
|
||||
$tester = new CommandTester($command);
|
||||
$tester->execute(['command' => $command->getName(), 'environment' => 'test', '--branch' => 'maintenance']);
|
||||
|
||||
$ranCommands = $application->getRuntime()->getRanCommands();
|
||||
|
||||
$testCase = array(
|
||||
0 => 'git branch | grep "*"',
|
||||
1 => 'git checkout maintenance',
|
||||
2 => 'git pull',
|
||||
3 => 'composer install',
|
||||
4 => 'composer dumpautoload --optimize',
|
||||
5 => 'rsync -e "ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" -avz --exclude=.git --exclude=./var/cache/* --exclude=./var/log/* --exclude=./web/app_dev.php ./ tester@testhost:/var/www/test',
|
||||
6 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test \\&\\& bin/console cache:warmup --env=dev \\"',
|
||||
7 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test \\&\\& bin/console assets:install --env=dev --symlink --relative web\\"',
|
||||
8 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test \\&\\& bin/console assetic:dump --env=dev \\"',
|
||||
9 => 'git checkout master',
|
||||
);
|
||||
|
||||
// Check total of Executed Commands
|
||||
$this->assertEquals(count($testCase), count($ranCommands));
|
||||
|
||||
// Check Generated Commands
|
||||
foreach ($testCase as $index => $command) {
|
||||
$this->assertEquals($command, $ranCommands[$index]);
|
||||
}
|
||||
|
||||
$this->assertEquals(0, $tester->getStatusCode());
|
||||
}
|
||||
|
||||
public function testDeploymentWithCustomTask()
|
||||
{
|
||||
$application = new MageApplicationMockup();
|
||||
$application->configure(__DIR__ . '/../../Resources/testhost-custom-task.yml');
|
||||
|
||||
|
||||
/** @var AbstractCommand $command */
|
||||
$command = $application->find('deploy');
|
||||
$this->assertTrue($command instanceof DeployCommand);
|
||||
|
||||
$tester = new CommandTester($command);
|
||||
$tester->execute(['command' => $command->getName(), 'environment' => 'test']);
|
||||
|
||||
$ranCommands = $application->getRuntime()->getRanCommands();
|
||||
|
||||
$testCase = array(
|
||||
0 => 'composer install',
|
||||
1 => 'composer dumpautoload --optimize',
|
||||
2 => 'rsync -e "ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" -avz --exclude=.git --exclude=./var/cache/* --exclude=./var/log/* --exclude=./web/app_dev.php ./ tester@testhost:/var/www/test',
|
||||
);
|
||||
|
||||
// Check total of Executed Commands
|
||||
$this->assertEquals(count($testCase), count($ranCommands));
|
||||
|
||||
// Check Generated Commands
|
||||
foreach ($testCase as $index => $command) {
|
||||
$this->assertEquals($command, $ranCommands[$index]);
|
||||
}
|
||||
|
||||
$this->assertTrue(strpos($tester->getDisplay(), '[Custom] Dummy Task') !== false);
|
||||
|
||||
$this->assertEquals(0, $tester->getStatusCode());
|
||||
}
|
||||
|
||||
public function testDeploymentWithErrorTaskCommands()
|
||||
{
|
||||
$application = new MageApplicationMockup();
|
||||
$application->configure(__DIR__ . '/../../Resources/testhost-with-error.yml');
|
||||
|
||||
$application->getRuntime()->setReleaseId('20170101015120');
|
||||
|
||||
/** @var AbstractCommand $command */
|
||||
$command = $application->find('deploy');
|
||||
$this->assertTrue($command instanceof DeployCommand);
|
||||
|
||||
$tester = new CommandTester($command);
|
||||
$tester->execute(['command' => $command->getName(), 'environment' => 'test']);
|
||||
|
||||
$ranCommands = $application->getRuntime()->getRanCommands();
|
||||
|
||||
$testCase = array(
|
||||
0 => 'git branch | grep "*"',
|
||||
1 => 'git checkout test',
|
||||
2 => 'git pull',
|
||||
3 => 'composer install',
|
||||
4 => 'composer dumpautoload --optimize',
|
||||
5 => 'tar cfz /tmp/mageXYZ --exclude=".git" --exclude="./var/cache/*" --exclude="./var/log/*" --exclude="./web/app_dev.php" ./',
|
||||
6 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"mkdir -p /var/www/test/releases/1234567890\\"',
|
||||
7 => 'scp -P 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no /tmp/mageXYZ tester@testhost:/var/www/test/releases/1234567890/mageXYZ',
|
||||
8 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test/releases/1234567890 \\&\\& tar xfz mageXYZ\\"',
|
||||
9 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"rm /var/www/test/releases/1234567890/mageXYZ\\"',
|
||||
);
|
||||
|
||||
// Check total of Executed Commands
|
||||
$this->assertEquals(count($testCase), count($ranCommands));
|
||||
|
||||
// Check Generated Commands
|
||||
foreach ($testCase as $index => $command) {
|
||||
$this->assertEquals($command, $ranCommands[$index]);
|
||||
}
|
||||
|
||||
$this->assertTrue(strpos($tester->getDisplay(), 'ERROR') !== false);
|
||||
|
||||
$this->assertNotEquals(0, $tester->getStatusCode());
|
||||
}
|
||||
|
||||
public function testDeploymentWithFailingPostDeployTaskCommands()
|
||||
{
|
||||
$application = new MageApplicationMockup();
|
||||
$application->configure(__DIR__ . '/../../Resources/testhost-with-postdeploy-error.yml');
|
||||
|
||||
/** @var AbstractCommand $command */
|
||||
$command = $application->find('deploy');
|
||||
$this->assertTrue($command instanceof DeployCommand);
|
||||
|
||||
$tester = new CommandTester($command);
|
||||
$tester->execute(['command' => $command->getName(), 'environment' => 'test']);
|
||||
|
||||
$ranCommands = $application->getRuntime()->getRanCommands();
|
||||
|
||||
$testCase = array(
|
||||
0 => 'git branch | grep "*"',
|
||||
1 => 'git checkout test',
|
||||
2 => 'git pull',
|
||||
3 => 'composer install',
|
||||
4 => 'composer dumpautoload --optimize',
|
||||
5 => 'rsync -e "ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" -avz --exclude=.git --exclude=./var/cache/* --exclude=./var/log/* --exclude=./web/app_dev.php ./ tester@testhost:/var/www/test',
|
||||
6 => 'git checkout master',
|
||||
);
|
||||
|
||||
// Check total of Executed Commands
|
||||
$this->assertEquals(count($testCase), count($ranCommands));
|
||||
|
||||
// Check Generated Commands
|
||||
foreach ($testCase as $index => $command) {
|
||||
$this->assertEquals($command, $ranCommands[$index]);
|
||||
}
|
||||
|
||||
$this->assertTrue(strpos($tester->getDisplay(), 'ERROR') !== false);
|
||||
|
||||
$this->assertNotEquals(0, $tester->getStatusCode());
|
||||
}
|
||||
|
||||
|
||||
public function testDeploymentWithSkippingTask()
|
||||
{
|
||||
$application = new MageApplicationMockup();
|
||||
$application->configure(__DIR__ . '/../../Resources/testhost-skipping.yml');
|
||||
|
||||
/** @var AbstractCommand $command */
|
||||
$command = $application->find('deploy');
|
||||
$this->assertTrue($command instanceof DeployCommand);
|
||||
|
||||
$tester = new CommandTester($command);
|
||||
$tester->execute(['command' => $command->getName(), 'environment' => 'test']);
|
||||
|
||||
$ranCommands = $application->getRuntime()->getRanCommands();
|
||||
|
||||
$testCase = array(
|
||||
0 => 'git branch | grep "*"',
|
||||
1 => 'git pull',
|
||||
2 => 'composer install',
|
||||
3 => 'composer dumpautoload --optimize',
|
||||
4 => 'rsync -e "ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" -avz --exclude=.git --exclude=./var/cache/* --exclude=./var/log/* --exclude=./web/app_dev.php ./ tester@testhost:/var/www/test',
|
||||
5 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test \\&\\& bin/console cache:warmup --env=dev \\"',
|
||||
6 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test \\&\\& bin/console assets:install --env=dev --symlink --relative web\\"',
|
||||
7 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test \\&\\& bin/console assetic:dump --env=dev \\"',
|
||||
8 => 'git branch | grep "*"',
|
||||
);
|
||||
|
||||
// Check total of Executed Commands
|
||||
$this->assertEquals(count($testCase), count($ranCommands));
|
||||
|
||||
// Check Generated Commands
|
||||
foreach ($testCase as $index => $command) {
|
||||
$this->assertEquals($command, $ranCommands[$index]);
|
||||
}
|
||||
|
||||
$this->assertTrue(strpos($tester->getDisplay(), 'SKIPPED') !== false);
|
||||
|
||||
$this->assertEquals(0, $tester->getStatusCode());
|
||||
}
|
||||
}
|
|
@ -1,785 +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\Command\BuiltIn;
|
||||
|
||||
use Mage\Command\BuiltIn\DeployCommand;
|
||||
use Mage\Command\AbstractCommand;
|
||||
use Mage\Tests\MageTestApplication;
|
||||
use Mage\Tests\Runtime\RuntimeMockup;
|
||||
use Symfony\Component\Console\Tester\CommandTester;
|
||||
use PHPUnit_Framework_TestCase as TestCase;
|
||||
|
||||
class DeployCommandTest extends TestCase
|
||||
{
|
||||
public function testDeploymentWithReleasesCommands()
|
||||
{
|
||||
$application = new MageTestApplication();
|
||||
$application->add(new DeployCommand());
|
||||
|
||||
$runtime = new RuntimeMockup();
|
||||
$runtime->setConfiguration(array(
|
||||
'environments' =>
|
||||
array(
|
||||
'test' =>
|
||||
array(
|
||||
'user' => 'tester',
|
||||
'branch' => 'test',
|
||||
'host_path' => '/var/www/test',
|
||||
'releases' => 4,
|
||||
'exclude' =>
|
||||
array(
|
||||
0 => 'vendor',
|
||||
1 => 'app/cache',
|
||||
2 => 'app/log',
|
||||
3 => 'web/app_dev.php',
|
||||
),
|
||||
'hosts' =>
|
||||
array(
|
||||
0 => 'testhost',
|
||||
),
|
||||
'pre-deploy' =>
|
||||
array(
|
||||
0 => 'git/update',
|
||||
1 => 'composer/install',
|
||||
2 => 'composer/generate-autoload',
|
||||
),
|
||||
'on-deploy' =>
|
||||
array(
|
||||
0 =>
|
||||
array(
|
||||
'symfony/cache-clear' =>
|
||||
array(
|
||||
'env' => 'dev',
|
||||
),
|
||||
),
|
||||
1 =>
|
||||
array(
|
||||
'symfony/cache-warmup' =>
|
||||
array(
|
||||
'env' => 'dev',
|
||||
),
|
||||
),
|
||||
2 =>
|
||||
array(
|
||||
'symfony/assets-install' =>
|
||||
array(
|
||||
'env' => 'dev',
|
||||
),
|
||||
),
|
||||
3 =>
|
||||
array(
|
||||
'symfony/assetic-dump' =>
|
||||
array(
|
||||
'env' => 'dev',
|
||||
),
|
||||
),
|
||||
),
|
||||
'on-release' => null,
|
||||
'post-release' => null,
|
||||
'post-deploy' => null,
|
||||
),
|
||||
),
|
||||
)
|
||||
);
|
||||
|
||||
$runtime->setReleaseId('20170101015120');
|
||||
|
||||
/** @var AbstractCommand $command */
|
||||
$command = $application->find('deploy');
|
||||
$command->setRuntime($runtime);
|
||||
|
||||
$tester = new CommandTester($command);
|
||||
$tester->execute(['command' => $command->getName(), 'environment' => 'test']);
|
||||
|
||||
$ranCommands = $runtime->getRanCommands();
|
||||
|
||||
$testCase = array(
|
||||
0 => 'git branch | grep "*"',
|
||||
1 => 'git checkout test',
|
||||
2 => 'git pull',
|
||||
3 => 'composer install --dev',
|
||||
4 => 'composer dumpautoload --optimize',
|
||||
5 => 'tar cfz /tmp/mageXYZ --exclude=".git" --exclude="vendor" --exclude="app/cache" --exclude="app/log" --exclude="web/app_dev.php" ./',
|
||||
6 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"mkdir -p /var/www/test/releases/1234567890\\"',
|
||||
7 => 'scp -P 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no /tmp/mageXYZ tester@testhost:/var/www/test/releases/1234567890/mageXYZ',
|
||||
8 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test/releases/1234567890 \\&\\& tar xfz mageXYZ\\"',
|
||||
9 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"rm /var/www/test/releases/1234567890/mageXYZ\\"',
|
||||
10 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test/releases/1234567890 \\&\\& bin/console cache:clear --env=dev \\"',
|
||||
11 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test/releases/1234567890 \\&\\& bin/console cache:warmup --env=dev \\"',
|
||||
12 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test/releases/1234567890 \\&\\& bin/console assets:install --env=dev --symlink --relative web\\"',
|
||||
13 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test/releases/1234567890 \\&\\& bin/console assetic:dump --env=dev \\"',
|
||||
14 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test \\&\\& ln -snf releases/1234567890 current\\"',
|
||||
15 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"ls -1 /var/www/test/releases\\"',
|
||||
16 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"rm -rf /var/www/test/releases/20170101015110\\"',
|
||||
17 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"rm -rf /var/www/test/releases/20170101015111\\"',
|
||||
18 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"rm -rf /var/www/test/releases/20170101015112\\"',
|
||||
19 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"rm -rf /var/www/test/releases/20170101015113\\"',
|
||||
20 => 'rm /tmp/mageXYZ',
|
||||
21 => 'git checkout master',
|
||||
);
|
||||
|
||||
// Check total of Executed Commands
|
||||
$this->assertEquals(count($testCase), count($ranCommands));
|
||||
|
||||
// Check Generated Commands
|
||||
foreach ($testCase as $index => $command) {
|
||||
$this->assertEquals($command, $ranCommands[$index]);
|
||||
}
|
||||
|
||||
$this->assertEquals(0, $tester->getStatusCode());
|
||||
}
|
||||
|
||||
public function testDeploymentWithErrorTaskCommands()
|
||||
{
|
||||
$application = new MageTestApplication();
|
||||
$application->add(new DeployCommand());
|
||||
|
||||
$runtime = new RuntimeMockup();
|
||||
$runtime->setConfiguration(array(
|
||||
'environments' =>
|
||||
array(
|
||||
'test' =>
|
||||
array(
|
||||
'user' => 'tester',
|
||||
'branch' => 'test',
|
||||
'host_path' => '/var/www/test',
|
||||
'releases' => 4,
|
||||
'exclude' =>
|
||||
array(
|
||||
0 => 'vendor',
|
||||
1 => 'app/cache',
|
||||
2 => 'app/log',
|
||||
3 => 'web/app_dev.php',
|
||||
),
|
||||
'hosts' =>
|
||||
array(
|
||||
0 => 'testhost',
|
||||
),
|
||||
'pre-deploy' =>
|
||||
array(
|
||||
0 => 'git/update',
|
||||
1 => 'composer/install',
|
||||
2 => 'composer/generate-autoload',
|
||||
),
|
||||
'on-deploy' =>
|
||||
array(
|
||||
0 => 'deploy/rsync',
|
||||
),
|
||||
'on-release' => null,
|
||||
'post-release' => null,
|
||||
'post-deploy' => null,
|
||||
),
|
||||
),
|
||||
)
|
||||
);
|
||||
|
||||
$runtime->setReleaseId('20170101015120');
|
||||
|
||||
/** @var AbstractCommand $command */
|
||||
$command = $application->find('deploy');
|
||||
$command->setRuntime($runtime);
|
||||
|
||||
$tester = new CommandTester($command);
|
||||
$tester->execute(['command' => $command->getName(), 'environment' => 'test']);
|
||||
|
||||
$ranCommands = $runtime->getRanCommands();
|
||||
|
||||
$testCase = array(
|
||||
0 => 'git branch | grep "*"',
|
||||
1 => 'git checkout test',
|
||||
2 => 'git pull',
|
||||
3 => 'composer install --dev',
|
||||
4 => 'composer dumpautoload --optimize',
|
||||
5 => 'tar cfz /tmp/mageXYZ --exclude=".git" --exclude="vendor" --exclude="app/cache" --exclude="app/log" --exclude="web/app_dev.php" ./',
|
||||
6 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"mkdir -p /var/www/test/releases/1234567890\\"',
|
||||
7 => 'scp -P 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no /tmp/mageXYZ tester@testhost:/var/www/test/releases/1234567890/mageXYZ',
|
||||
8 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test/releases/1234567890 \\&\\& tar xfz mageXYZ\\"',
|
||||
9 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"rm /var/www/test/releases/1234567890/mageXYZ\\"',
|
||||
);
|
||||
|
||||
// Check total of Executed Commands
|
||||
$this->assertEquals(count($testCase), count($ranCommands));
|
||||
|
||||
// Check Generated Commands
|
||||
foreach ($testCase as $index => $command) {
|
||||
$this->assertEquals($command, $ranCommands[$index]);
|
||||
}
|
||||
|
||||
$this->assertTrue(strpos($tester->getDisplay(), 'ERROR') !== false);
|
||||
|
||||
$this->assertNotEquals(0, $tester->getStatusCode());
|
||||
}
|
||||
|
||||
public function testDeploymentWithFailingPostDeployTaskCommands()
|
||||
{
|
||||
$application = new MageTestApplication();
|
||||
$application->add(new DeployCommand());
|
||||
|
||||
$runtime = new RuntimeMockup();
|
||||
$runtime->setConfiguration(array(
|
||||
'environments' =>
|
||||
array(
|
||||
'test' =>
|
||||
array(
|
||||
'user' => 'tester',
|
||||
'branch' => 'test',
|
||||
'host_path' => '/var/www/test',
|
||||
'exclude' =>
|
||||
array(
|
||||
0 => 'vendor',
|
||||
1 => 'app/cache',
|
||||
2 => 'app/log',
|
||||
3 => 'web/app_dev.php',
|
||||
),
|
||||
'hosts' =>
|
||||
array(
|
||||
0 => 'testhost',
|
||||
),
|
||||
'pre-deploy' =>
|
||||
array(
|
||||
0 => 'git/update',
|
||||
1 => 'composer/install',
|
||||
2 => 'composer/generate-autoload',
|
||||
),
|
||||
'on-deploy' =>
|
||||
array(
|
||||
0 => 'deploy/rsync',
|
||||
),
|
||||
'on-release' => null,
|
||||
'post-release' => null,
|
||||
'post-deploy' =>
|
||||
array(
|
||||
0 => 'deploy/targz/cleanup',
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
);
|
||||
|
||||
/** @var AbstractCommand $command */
|
||||
$command = $application->find('deploy');
|
||||
$command->setRuntime($runtime);
|
||||
|
||||
$tester = new CommandTester($command);
|
||||
$tester->execute(['command' => $command->getName(), 'environment' => 'test']);
|
||||
|
||||
$ranCommands = $runtime->getRanCommands();
|
||||
|
||||
$testCase = array(
|
||||
0 => 'git branch | grep "*"',
|
||||
1 => 'git checkout test',
|
||||
2 => 'git pull',
|
||||
3 => 'composer install --dev',
|
||||
4 => 'composer dumpautoload --optimize',
|
||||
5 => 'rsync -e "ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" -avz --exclude=.git --exclude=vendor --exclude=app/cache --exclude=app/log --exclude=web/app_dev.php ./ tester@testhost:/var/www/test',
|
||||
6 => 'git checkout master',
|
||||
);
|
||||
|
||||
// Check total of Executed Commands
|
||||
$this->assertEquals(count($testCase), count($ranCommands));
|
||||
|
||||
// Check Generated Commands
|
||||
foreach ($testCase as $index => $command) {
|
||||
$this->assertEquals($command, $ranCommands[$index]);
|
||||
}
|
||||
|
||||
$this->assertTrue(strpos($tester->getDisplay(), 'ERROR') !== false);
|
||||
|
||||
$this->assertNotEquals(0, $tester->getStatusCode());
|
||||
}
|
||||
|
||||
public function testDeploymentWithoutReleasesCommands()
|
||||
{
|
||||
$application = new MageTestApplication();
|
||||
$application->add(new DeployCommand());
|
||||
|
||||
$runtime = new RuntimeMockup();
|
||||
$runtime->setConfiguration(array(
|
||||
'environments' =>
|
||||
array(
|
||||
'test' =>
|
||||
array(
|
||||
'user' => 'tester',
|
||||
'branch' => 'test',
|
||||
'host_path' => '/var/www/test',
|
||||
'exclude' =>
|
||||
array(
|
||||
0 => 'vendor',
|
||||
1 => 'app/cache',
|
||||
2 => 'app/log',
|
||||
3 => 'web/app_dev.php',
|
||||
),
|
||||
'hosts' =>
|
||||
array(
|
||||
0 => 'testhost',
|
||||
),
|
||||
'pre-deploy' =>
|
||||
array(
|
||||
0 => 'git/update',
|
||||
1 => 'composer/install',
|
||||
2 => 'composer/generate-autoload',
|
||||
),
|
||||
'on-deploy' =>
|
||||
array(
|
||||
0 =>
|
||||
array(
|
||||
'symfony/cache-clear' =>
|
||||
array(
|
||||
'env' => 'dev',
|
||||
),
|
||||
),
|
||||
1 =>
|
||||
array(
|
||||
'symfony/cache-warmup' =>
|
||||
array(
|
||||
'env' => 'dev',
|
||||
),
|
||||
),
|
||||
2 =>
|
||||
array(
|
||||
'symfony/assets-install' =>
|
||||
array(
|
||||
'env' => 'dev',
|
||||
),
|
||||
),
|
||||
3 =>
|
||||
array(
|
||||
'symfony/assetic-dump' =>
|
||||
array(
|
||||
'env' => 'dev',
|
||||
),
|
||||
),
|
||||
),
|
||||
'on-release' => null,
|
||||
'post-release' => null,
|
||||
'post-deploy' => null,
|
||||
),
|
||||
),
|
||||
)
|
||||
);
|
||||
|
||||
/** @var AbstractCommand $command */
|
||||
$command = $application->find('deploy');
|
||||
$command->setRuntime($runtime);
|
||||
|
||||
$tester = new CommandTester($command);
|
||||
$tester->execute(['command' => $command->getName(), 'environment' => 'test']);
|
||||
|
||||
$ranCommands = $runtime->getRanCommands();
|
||||
|
||||
$testCase = array(
|
||||
0 => 'git branch | grep "*"',
|
||||
1 => 'git checkout test',
|
||||
2 => 'git pull',
|
||||
3 => 'composer install --dev',
|
||||
4 => 'composer dumpautoload --optimize',
|
||||
5 => 'rsync -e "ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" -avz --exclude=.git --exclude=vendor --exclude=app/cache --exclude=app/log --exclude=web/app_dev.php ./ tester@testhost:/var/www/test',
|
||||
6 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test \\&\\& bin/console cache:clear --env=dev \\"',
|
||||
7 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test \\&\\& bin/console cache:warmup --env=dev \\"',
|
||||
8 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test \\&\\& bin/console assets:install --env=dev --symlink --relative web\\"',
|
||||
9 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test \\&\\& bin/console assetic:dump --env=dev \\"',
|
||||
10 => 'git checkout master',
|
||||
);
|
||||
|
||||
// Check total of Executed Commands
|
||||
$this->assertEquals(count($testCase), count($ranCommands));
|
||||
|
||||
// Check Generated Commands
|
||||
foreach ($testCase as $index => $command) {
|
||||
$this->assertEquals($command, $ranCommands[$index]);
|
||||
}
|
||||
|
||||
$this->assertEquals(0, $tester->getStatusCode());
|
||||
}
|
||||
|
||||
public function testDeploymentWithSudo()
|
||||
{
|
||||
$application = new MageTestApplication();
|
||||
$application->add(new DeployCommand());
|
||||
|
||||
$runtime = new RuntimeMockup();
|
||||
$runtime->setConfiguration(array(
|
||||
'environments' =>
|
||||
array(
|
||||
'test' =>
|
||||
array(
|
||||
'user' => 'tester',
|
||||
'sudo' => true,
|
||||
'branch' => 'test',
|
||||
'host_path' => '/var/www/test',
|
||||
'exclude' =>
|
||||
array(
|
||||
0 => 'vendor',
|
||||
1 => 'app/cache',
|
||||
2 => 'app/log',
|
||||
3 => 'web/app_dev.php',
|
||||
),
|
||||
'hosts' =>
|
||||
array(
|
||||
0 => 'testhost',
|
||||
),
|
||||
'pre-deploy' =>
|
||||
array(
|
||||
0 => 'git/update',
|
||||
1 => 'composer/install',
|
||||
2 => 'composer/generate-autoload',
|
||||
),
|
||||
'on-deploy' =>
|
||||
array(
|
||||
0 =>
|
||||
array(
|
||||
'symfony/cache-clear' =>
|
||||
array(
|
||||
'env' => 'dev',
|
||||
),
|
||||
),
|
||||
1 =>
|
||||
array(
|
||||
'symfony/cache-warmup' =>
|
||||
array(
|
||||
'env' => 'dev',
|
||||
),
|
||||
),
|
||||
2 =>
|
||||
array(
|
||||
'symfony/assets-install' =>
|
||||
array(
|
||||
'env' => 'dev',
|
||||
),
|
||||
),
|
||||
3 =>
|
||||
array(
|
||||
'symfony/assetic-dump' =>
|
||||
array(
|
||||
'env' => 'dev',
|
||||
),
|
||||
),
|
||||
),
|
||||
'on-release' => null,
|
||||
'post-release' => null,
|
||||
'post-deploy' => null,
|
||||
),
|
||||
),
|
||||
)
|
||||
);
|
||||
|
||||
/** @var AbstractCommand $command */
|
||||
$command = $application->find('deploy');
|
||||
$command->setRuntime($runtime);
|
||||
|
||||
$tester = new CommandTester($command);
|
||||
$tester->execute(['command' => $command->getName(), 'environment' => 'test']);
|
||||
|
||||
$ranCommands = $runtime->getRanCommands();
|
||||
|
||||
$testCase = array(
|
||||
0 => 'git branch | grep "*"',
|
||||
1 => 'git checkout test',
|
||||
2 => 'git pull',
|
||||
3 => 'composer install --dev',
|
||||
4 => 'composer dumpautoload --optimize',
|
||||
5 => 'rsync -e "ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" -avz --exclude=.git --exclude=vendor --exclude=app/cache --exclude=app/log --exclude=web/app_dev.php ./ tester@testhost:/var/www/test',
|
||||
6 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test \\&\\& sudo bin/console cache:clear --env=dev \\"',
|
||||
7 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test \\&\\& sudo bin/console cache:warmup --env=dev \\"',
|
||||
8 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test \\&\\& sudo bin/console assets:install --env=dev --symlink --relative web\\"',
|
||||
9 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test \\&\\& sudo bin/console assetic:dump --env=dev \\"',
|
||||
10 => 'git checkout master',
|
||||
);
|
||||
|
||||
// Check total of Executed Commands
|
||||
$this->assertEquals(count($testCase), count($ranCommands));
|
||||
|
||||
// Check Generated Commands
|
||||
foreach ($testCase as $index => $command) {
|
||||
$this->assertEquals($command, $ranCommands[$index]);
|
||||
}
|
||||
|
||||
$this->assertEquals(0, $tester->getStatusCode());
|
||||
}
|
||||
|
||||
public function testDeploymentWithBranchOverwrite()
|
||||
{
|
||||
$application = new MageTestApplication();
|
||||
$application->add(new DeployCommand());
|
||||
|
||||
$runtime = new RuntimeMockup();
|
||||
$runtime->setConfiguration(array(
|
||||
'environments' =>
|
||||
array(
|
||||
'test' =>
|
||||
array(
|
||||
'user' => 'tester',
|
||||
'branch' => 'test',
|
||||
'host_path' => '/var/www/test',
|
||||
'exclude' =>
|
||||
array(
|
||||
0 => 'vendor',
|
||||
1 => 'app/cache',
|
||||
2 => 'app/log',
|
||||
3 => 'web/app_dev.php',
|
||||
),
|
||||
'hosts' =>
|
||||
array(
|
||||
0 => 'testhost',
|
||||
),
|
||||
'pre-deploy' =>
|
||||
array(
|
||||
0 => 'git/update',
|
||||
1 => 'composer/install',
|
||||
2 => 'composer/generate-autoload',
|
||||
),
|
||||
'on-deploy' =>
|
||||
array(
|
||||
0 =>
|
||||
array(
|
||||
'symfony/cache-clear' =>
|
||||
array(
|
||||
'env' => 'dev',
|
||||
),
|
||||
),
|
||||
1 =>
|
||||
array(
|
||||
'symfony/cache-warmup' =>
|
||||
array(
|
||||
'env' => 'dev',
|
||||
),
|
||||
),
|
||||
2 =>
|
||||
array(
|
||||
'symfony/assets-install' =>
|
||||
array(
|
||||
'env' => 'dev',
|
||||
),
|
||||
),
|
||||
3 =>
|
||||
array(
|
||||
'symfony/assetic-dump' =>
|
||||
array(
|
||||
'env' => 'dev',
|
||||
),
|
||||
),
|
||||
),
|
||||
'on-release' => null,
|
||||
'post-release' => null,
|
||||
'post-deploy' => null,
|
||||
),
|
||||
),
|
||||
)
|
||||
);
|
||||
|
||||
/** @var AbstractCommand $command */
|
||||
$command = $application->find('deploy');
|
||||
$command->setRuntime($runtime);
|
||||
|
||||
$tester = new CommandTester($command);
|
||||
$tester->execute(['command' => $command->getName(), 'environment' => 'test', '--branch' => 'maintenance']);
|
||||
|
||||
$ranCommands = $runtime->getRanCommands();
|
||||
|
||||
$testCase = array(
|
||||
0 => 'git branch | grep "*"',
|
||||
1 => 'git checkout maintenance',
|
||||
2 => 'git pull',
|
||||
3 => 'composer install --dev',
|
||||
4 => 'composer dumpautoload --optimize',
|
||||
5 => 'rsync -e "ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" -avz --exclude=.git --exclude=vendor --exclude=app/cache --exclude=app/log --exclude=web/app_dev.php ./ tester@testhost:/var/www/test',
|
||||
6 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test \\&\\& bin/console cache:clear --env=dev \\"',
|
||||
7 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test \\&\\& bin/console cache:warmup --env=dev \\"',
|
||||
8 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test \\&\\& bin/console assets:install --env=dev --symlink --relative web\\"',
|
||||
9 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test \\&\\& bin/console assetic:dump --env=dev \\"',
|
||||
10 => 'git checkout master',
|
||||
);
|
||||
|
||||
// Check total of Executed Commands
|
||||
$this->assertEquals(count($testCase), count($ranCommands));
|
||||
|
||||
// Check Generated Commands
|
||||
foreach ($testCase as $index => $command) {
|
||||
$this->assertEquals($command, $ranCommands[$index]);
|
||||
}
|
||||
|
||||
$this->assertEquals(0, $tester->getStatusCode());
|
||||
}
|
||||
|
||||
public function testDeploymentWithSkippingTask()
|
||||
{
|
||||
$application = new MageTestApplication();
|
||||
$application->add(new DeployCommand());
|
||||
|
||||
$runtime = new RuntimeMockup();
|
||||
$runtime->setConfiguration(array(
|
||||
'environments' =>
|
||||
array(
|
||||
'test' =>
|
||||
array(
|
||||
'user' => 'tester',
|
||||
'host_path' => '/var/www/test',
|
||||
'branch' => 'master',
|
||||
'exclude' =>
|
||||
array(
|
||||
0 => 'vendor',
|
||||
1 => 'app/cache',
|
||||
2 => 'app/log',
|
||||
3 => 'web/app_dev.php',
|
||||
),
|
||||
'hosts' =>
|
||||
array(
|
||||
0 => 'testhost',
|
||||
),
|
||||
'pre-deploy' =>
|
||||
array(
|
||||
0 => 'git/update',
|
||||
1 => 'composer/install',
|
||||
2 => 'composer/generate-autoload',
|
||||
),
|
||||
'on-deploy' =>
|
||||
array(
|
||||
0 =>
|
||||
array(
|
||||
'symfony/cache-clear' =>
|
||||
array(
|
||||
'env' => 'dev',
|
||||
),
|
||||
),
|
||||
1 =>
|
||||
array(
|
||||
'symfony/cache-warmup' =>
|
||||
array(
|
||||
'env' => 'dev',
|
||||
),
|
||||
),
|
||||
2 =>
|
||||
array(
|
||||
'symfony/assets-install' =>
|
||||
array(
|
||||
'env' => 'dev',
|
||||
),
|
||||
),
|
||||
3 =>
|
||||
array(
|
||||
'symfony/assetic-dump' =>
|
||||
array(
|
||||
'env' => 'dev',
|
||||
),
|
||||
),
|
||||
),
|
||||
'on-release' => null,
|
||||
'post-release' => null,
|
||||
'post-deploy' => null,
|
||||
),
|
||||
),
|
||||
)
|
||||
);
|
||||
|
||||
/** @var AbstractCommand $command */
|
||||
$command = $application->find('deploy');
|
||||
$command->setRuntime($runtime);
|
||||
|
||||
$tester = new CommandTester($command);
|
||||
$tester->execute(['command' => $command->getName(), 'environment' => 'test']);
|
||||
|
||||
$ranCommands = $runtime->getRanCommands();
|
||||
|
||||
$testCase = array(
|
||||
0 => 'git branch | grep "*"',
|
||||
1 => 'git pull',
|
||||
2 => 'composer install --dev',
|
||||
3 => 'composer dumpautoload --optimize',
|
||||
4 => 'rsync -e "ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" -avz --exclude=.git --exclude=vendor --exclude=app/cache --exclude=app/log --exclude=web/app_dev.php ./ tester@testhost:/var/www/test',
|
||||
5 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test \\&\\& bin/console cache:clear --env=dev \\"',
|
||||
6 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test \\&\\& bin/console cache:warmup --env=dev \\"',
|
||||
7 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test \\&\\& bin/console assets:install --env=dev --symlink --relative web\\"',
|
||||
8 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test \\&\\& bin/console assetic:dump --env=dev \\"',
|
||||
9 => 'git branch | grep "*"',
|
||||
);
|
||||
|
||||
// Check total of Executed Commands
|
||||
$this->assertEquals(count($testCase), count($ranCommands));
|
||||
|
||||
// Check Generated Commands
|
||||
foreach ($testCase as $index => $command) {
|
||||
$this->assertEquals($command, $ranCommands[$index]);
|
||||
}
|
||||
|
||||
$this->assertTrue(strpos($tester->getDisplay(), 'SKIPPED') !== false);
|
||||
|
||||
$this->assertEquals(0, $tester->getStatusCode());
|
||||
}
|
||||
|
||||
public function testDeploymentWithCustomTask()
|
||||
{
|
||||
$application = new MageTestApplication();
|
||||
$application->add(new DeployCommand());
|
||||
|
||||
$runtime = new RuntimeMockup();
|
||||
$runtime->setConfiguration(array(
|
||||
'environments' =>
|
||||
array(
|
||||
'test' =>
|
||||
array(
|
||||
'user' => 'tester',
|
||||
'host_path' => '/var/www/test',
|
||||
'exclude' =>
|
||||
array(
|
||||
0 => 'vendor',
|
||||
1 => 'app/cache',
|
||||
2 => 'app/log',
|
||||
3 => 'web/app_dev.php',
|
||||
),
|
||||
'hosts' =>
|
||||
array(
|
||||
0 => 'testhost',
|
||||
),
|
||||
'pre-deploy' =>
|
||||
array(
|
||||
1 => 'composer/install',
|
||||
2 => 'composer/generate-autoload',
|
||||
),
|
||||
'on-deploy' =>
|
||||
array(
|
||||
0 => 'Mage\\Tests\\Task\\CustomTask',
|
||||
),
|
||||
'on-release' => null,
|
||||
'post-release' => null,
|
||||
'post-deploy' => null,
|
||||
),
|
||||
),
|
||||
)
|
||||
);
|
||||
|
||||
/** @var AbstractCommand $command */
|
||||
$command = $application->find('deploy');
|
||||
$command->setRuntime($runtime);
|
||||
|
||||
$tester = new CommandTester($command);
|
||||
$tester->execute(['command' => $command->getName(), 'environment' => 'test']);
|
||||
|
||||
$ranCommands = $runtime->getRanCommands();
|
||||
|
||||
$testCase = array(
|
||||
0 => 'composer install --dev',
|
||||
1 => 'composer dumpautoload --optimize',
|
||||
2 => 'rsync -e "ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" -avz --exclude=.git --exclude=vendor --exclude=app/cache --exclude=app/log --exclude=web/app_dev.php ./ tester@testhost:/var/www/test',
|
||||
);
|
||||
|
||||
// Check total of Executed Commands
|
||||
$this->assertEquals(count($testCase), count($ranCommands));
|
||||
|
||||
// Check Generated Commands
|
||||
foreach ($testCase as $index => $command) {
|
||||
$this->assertEquals($command, $ranCommands[$index]);
|
||||
}
|
||||
|
||||
$this->assertTrue(strpos($tester->getDisplay(), '[Custom] Dummy Task') !== false);
|
||||
|
||||
$this->assertEquals(0, $tester->getStatusCode());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,71 @@
|
|||
<?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\Command\BuiltIn;
|
||||
|
||||
use Mage\Command\BuiltIn\DeployCommand;
|
||||
use Mage\Command\AbstractCommand;
|
||||
use Mage\Tests\MageApplicationMockup;
|
||||
use Symfony\Component\Console\Tester\CommandTester;
|
||||
use PHPUnit_Framework_TestCase as TestCase;
|
||||
|
||||
class DeployCommandWithReleasesTest extends TestCase
|
||||
{
|
||||
public function testDeploymentWithReleasesCommands()
|
||||
{
|
||||
$application = new MageApplicationMockup();
|
||||
$application->configure(__DIR__ . '/../../Resources/testhost.yml');
|
||||
|
||||
$application->getRuntime()->setReleaseId('20170101015120');
|
||||
|
||||
/** @var AbstractCommand $command */
|
||||
$command = $application->find('deploy');
|
||||
$this->assertTrue($command instanceof DeployCommand);
|
||||
|
||||
$tester = new CommandTester($command);
|
||||
$tester->execute(['command' => $command->getName(), 'environment' => 'test']);
|
||||
|
||||
$ranCommands = $application->getRuntime()->getRanCommands();
|
||||
|
||||
$testCase = array(
|
||||
0 => 'git branch | grep "*"',
|
||||
1 => 'git checkout test',
|
||||
2 => 'git pull',
|
||||
3 => 'composer install',
|
||||
4 => 'composer dumpautoload --optimize',
|
||||
5 => 'tar cfz /tmp/mageXYZ --exclude=".git" --exclude="./var/cache/*" --exclude="./var/log/*" --exclude="./web/app_dev.php" ./',
|
||||
6 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"mkdir -p /var/www/test/releases/1234567890\\"',
|
||||
7 => 'scp -P 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no /tmp/mageXYZ tester@testhost:/var/www/test/releases/1234567890/mageXYZ',
|
||||
8 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test/releases/1234567890 \\&\\& tar xfz mageXYZ\\"',
|
||||
9 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"rm /var/www/test/releases/1234567890/mageXYZ\\"',
|
||||
10 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test/releases/1234567890 \\&\\& bin/console cache:warmup --env=dev \\"',
|
||||
11 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test/releases/1234567890 \\&\\& bin/console assets:install --env=dev --symlink --relative web\\"',
|
||||
12 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test/releases/1234567890 \\&\\& bin/console assetic:dump --env=dev \\"',
|
||||
13 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test \\&\\& ln -snf releases/1234567890 current\\"',
|
||||
14 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"ls -1 /var/www/test/releases\\"',
|
||||
15 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"rm -rf /var/www/test/releases/20170101015110\\"',
|
||||
16 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"rm -rf /var/www/test/releases/20170101015111\\"',
|
||||
17 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"rm -rf /var/www/test/releases/20170101015112\\"',
|
||||
18 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"rm -rf /var/www/test/releases/20170101015113\\"',
|
||||
19 => 'rm /tmp/mageXYZ',
|
||||
20 => 'git checkout master',
|
||||
);
|
||||
|
||||
// Check total of Executed Commands
|
||||
$this->assertEquals(count($testCase), count($ranCommands));
|
||||
|
||||
// Check Generated Commands
|
||||
foreach ($testCase as $index => $command) {
|
||||
$this->assertEquals($command, $ranCommands[$index]);
|
||||
}
|
||||
|
||||
$this->assertEquals(0, $tester->getStatusCode());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,59 @@
|
|||
<?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\Command\BuiltIn;
|
||||
|
||||
use Mage\Command\BuiltIn\DeployCommand;
|
||||
use Mage\Command\AbstractCommand;
|
||||
use Mage\Tests\MageApplicationMockup;
|
||||
use Symfony\Component\Console\Tester\CommandTester;
|
||||
use PHPUnit_Framework_TestCase as TestCase;
|
||||
|
||||
class DeployCommandWithoutReleasesTest extends TestCase
|
||||
{
|
||||
public function testDeploymentWithoutReleasesCommands()
|
||||
{
|
||||
$application = new MageApplicationMockup();
|
||||
$application->configure(__DIR__ . '/../../Resources/testhost-without-releases.yml');
|
||||
|
||||
/** @var AbstractCommand $command */
|
||||
$command = $application->find('deploy');
|
||||
$this->assertTrue($command instanceof DeployCommand);
|
||||
|
||||
$tester = new CommandTester($command);
|
||||
$tester->execute(['command' => $command->getName(), 'environment' => 'test']);
|
||||
|
||||
$ranCommands = $application->getRuntime()->getRanCommands();
|
||||
|
||||
$testCase = array (
|
||||
0 => 'git branch | grep "*"',
|
||||
1 => 'git checkout test',
|
||||
2 => 'git pull',
|
||||
3 => 'composer install',
|
||||
4 => 'composer dumpautoload --optimize',
|
||||
5 => 'rsync -e "ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" -avz --exclude=.git --exclude=./var/cache/* --exclude=./var/log/* --exclude=./web/app_dev.php ./ tester@testhost:/var/www/test',
|
||||
6 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test \\&\\& bin/console cache:warmup --env=dev \\"',
|
||||
7 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test \\&\\& bin/console assets:install --env=dev --symlink --relative web\\"',
|
||||
8 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"cd /var/www/test \\&\\& bin/console assetic:dump --env=dev \\"',
|
||||
9 => 'git checkout master',
|
||||
);
|
||||
|
||||
// Check total of Executed Commands
|
||||
$this->assertEquals(count($testCase), count($ranCommands));
|
||||
|
||||
// Check Generated Commands
|
||||
foreach ($testCase as $index => $command) {
|
||||
$this->assertEquals($command, $ranCommands[$index]);
|
||||
}
|
||||
|
||||
$this->assertEquals(0, $tester->getStatusCode());
|
||||
}
|
||||
|
||||
}
|
|
@ -12,8 +12,7 @@ namespace Mage\Tests\Command\BuiltIn\Releases;
|
|||
|
||||
use Mage\Command\BuiltIn\Releases\ListCommand;
|
||||
use Mage\Command\AbstractCommand;
|
||||
use Mage\Tests\MageTestApplication;
|
||||
use Mage\Tests\Runtime\RuntimeMockup;
|
||||
use Mage\Tests\MageApplicationMockup;
|
||||
use Symfony\Component\Console\Tester\CommandTester;
|
||||
use PHPUnit_Framework_TestCase as TestCase;
|
||||
|
||||
|
@ -21,83 +20,17 @@ class ListCommandTest extends TestCase
|
|||
{
|
||||
public function testListReleasesCommands()
|
||||
{
|
||||
$application = new MageTestApplication();
|
||||
$application->add(new ListCommand());
|
||||
|
||||
$runtime = new RuntimeMockup();
|
||||
$runtime->setConfiguration(array(
|
||||
'environments' =>
|
||||
array(
|
||||
'test' =>
|
||||
array(
|
||||
'user' => 'tester',
|
||||
'branch' => 'test',
|
||||
'host_path' => '/var/www/test',
|
||||
'releases' => 4,
|
||||
'exclude' =>
|
||||
array(
|
||||
0 => 'vendor',
|
||||
1 => 'app/cache',
|
||||
2 => 'app/log',
|
||||
3 => 'web/app_dev.php',
|
||||
),
|
||||
'hosts' =>
|
||||
array(
|
||||
0 => 'testhost',
|
||||
),
|
||||
'pre-deploy' =>
|
||||
array(
|
||||
0 => 'git/update',
|
||||
1 => 'composer/install',
|
||||
2 => 'composer/generate-autoload',
|
||||
),
|
||||
'on-deploy' =>
|
||||
array(
|
||||
0 =>
|
||||
array(
|
||||
'symfony/cache-clear' =>
|
||||
array(
|
||||
'env' => 'dev',
|
||||
),
|
||||
),
|
||||
1 =>
|
||||
array(
|
||||
'symfony/cache-warmup' =>
|
||||
array(
|
||||
'env' => 'dev',
|
||||
),
|
||||
),
|
||||
2 =>
|
||||
array(
|
||||
'symfony/assets-install' =>
|
||||
array(
|
||||
'env' => 'dev',
|
||||
),
|
||||
),
|
||||
3 =>
|
||||
array(
|
||||
'symfony/assetic-dump' =>
|
||||
array(
|
||||
'env' => 'dev',
|
||||
),
|
||||
),
|
||||
),
|
||||
'on-release' => null,
|
||||
'post-release' => null,
|
||||
'post-deploy' => null,
|
||||
),
|
||||
),
|
||||
)
|
||||
);
|
||||
$application = new MageApplicationMockup();
|
||||
$application->configure(__DIR__ . '/../../../Resources/testhost.yml');
|
||||
|
||||
/** @var AbstractCommand $command */
|
||||
$command = $application->find('releases:list');
|
||||
$command->setRuntime($runtime);
|
||||
$this->assertTrue($command instanceof ListCommand);
|
||||
|
||||
$tester = new CommandTester($command);
|
||||
$tester->execute(['command' => $command->getName(), 'environment' => 'test']);
|
||||
|
||||
$ranCommands = $runtime->getRanCommands();
|
||||
$ranCommands = $application->getRuntime()->getRanCommands();
|
||||
|
||||
$testCase = array(
|
||||
0 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"ls -1 /var/www/test/releases\\"',
|
||||
|
|
|
@ -12,8 +12,7 @@ namespace Mage\Tests\Command\BuiltIn\Releases;
|
|||
|
||||
use Mage\Command\BuiltIn\Releases\RollbackCommand;
|
||||
use Mage\Command\AbstractCommand;
|
||||
use Mage\Tests\MageTestApplication;
|
||||
use Mage\Tests\Runtime\RuntimeMockup;
|
||||
use Mage\Tests\MageApplicationMockup;
|
||||
use Symfony\Component\Console\Tester\CommandTester;
|
||||
use PHPUnit_Framework_TestCase as TestCase;
|
||||
|
||||
|
@ -21,83 +20,17 @@ class RollbackCommandTest extends TestCase
|
|||
{
|
||||
public function testRollbackReleaseCommands()
|
||||
{
|
||||
$application = new MageTestApplication();
|
||||
$application->add(new RollbackCommand());
|
||||
|
||||
$runtime = new RuntimeMockup();
|
||||
$runtime->setConfiguration(array(
|
||||
'environments' =>
|
||||
array(
|
||||
'test' =>
|
||||
array(
|
||||
'user' => 'tester',
|
||||
'branch' => 'test',
|
||||
'host_path' => '/var/www/test',
|
||||
'releases' => 4,
|
||||
'exclude' =>
|
||||
array(
|
||||
0 => 'vendor',
|
||||
1 => 'app/cache',
|
||||
2 => 'app/log',
|
||||
3 => 'web/app_dev.php',
|
||||
),
|
||||
'hosts' =>
|
||||
array(
|
||||
0 => 'testhost',
|
||||
),
|
||||
'pre-deploy' =>
|
||||
array(
|
||||
0 => 'git/update',
|
||||
1 => 'composer/install',
|
||||
2 => 'composer/generate-autoload',
|
||||
),
|
||||
'on-deploy' =>
|
||||
array(
|
||||
0 =>
|
||||
array(
|
||||
'symfony/cache-clear' =>
|
||||
array(
|
||||
'env' => 'dev',
|
||||
),
|
||||
),
|
||||
1 =>
|
||||
array(
|
||||
'symfony/cache-warmup' =>
|
||||
array(
|
||||
'env' => 'dev',
|
||||
),
|
||||
),
|
||||
2 =>
|
||||
array(
|
||||
'symfony/assets-install' =>
|
||||
array(
|
||||
'env' => 'dev',
|
||||
),
|
||||
),
|
||||
3 =>
|
||||
array(
|
||||
'symfony/assetic-dump' =>
|
||||
array(
|
||||
'env' => 'dev',
|
||||
),
|
||||
),
|
||||
),
|
||||
'on-release' => null,
|
||||
'post-release' => null,
|
||||
'post-deploy' => null,
|
||||
),
|
||||
),
|
||||
)
|
||||
);
|
||||
$application = new MageApplicationMockup();
|
||||
$application->configure(__DIR__ . '/../../../Resources/testhost.yml');
|
||||
|
||||
/** @var AbstractCommand $command */
|
||||
$command = $application->find('releases:rollback');
|
||||
$command->setRuntime($runtime);
|
||||
$this->assertTrue($command instanceof RollbackCommand);
|
||||
|
||||
$tester = new CommandTester($command);
|
||||
$tester->execute(['command' => $command->getName(), 'environment' => 'test', 'release' => '20170101015115']);
|
||||
|
||||
$ranCommands = $runtime->getRanCommands();
|
||||
$ranCommands = $application->getRuntime()->getRanCommands();
|
||||
|
||||
$testCase = array(
|
||||
0 => 'ssh -p 22 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no tester@testhost sh -c \\"ls -1 /var/www/test/releases\\"',
|
||||
|
|
|
@ -10,10 +10,9 @@
|
|||
|
||||
namespace Mage\Tests\Command\BuiltIn;
|
||||
|
||||
use Mage\Command\BuiltIn\VersionCommand;
|
||||
use Mage\Command\AbstractCommand;
|
||||
use Mage\Tests\MageTestApplication;
|
||||
use Mage\Tests\Runtime\RuntimeMockup;
|
||||
use Mage\Command\BuiltIn\VersionCommand;
|
||||
use Mage\Tests\MageApplicationMockup;
|
||||
use Mage\Mage;
|
||||
use Symfony\Component\Console\Tester\CommandTester;
|
||||
use PHPUnit_Framework_TestCase as TestCase;
|
||||
|
@ -22,12 +21,12 @@ class VersionCommandTest extends TestCase
|
|||
{
|
||||
public function testVersionOutput()
|
||||
{
|
||||
$application = new MageTestApplication();
|
||||
$application->add(new VersionCommand());
|
||||
$application = new MageApplicationMockup();
|
||||
$application->configure(__DIR__ . '/../../Resources/basic.yml');
|
||||
|
||||
/** @var AbstractCommand $command */
|
||||
$command = $application->find('version');
|
||||
$command->setRuntime(new RuntimeMockup());
|
||||
$this->assertTrue($command instanceof VersionCommand);
|
||||
|
||||
$tester = new CommandTester($command);
|
||||
$tester->execute(['command' => $command->getName()]);
|
||||
|
|
27
src/Mage/Tests/MageApplicationMockup.php
Normal file
27
src/Mage/Tests/MageApplicationMockup.php
Normal file
|
@ -0,0 +1,27 @@
|
|||
<?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;
|
||||
|
||||
use Mage\Tests\Runtime\RuntimeMockup;
|
||||
use Mage\MageApplication;
|
||||
|
||||
class MageApplicationMockup extends MageApplication
|
||||
{
|
||||
/**
|
||||
* Gets the Runtime instance to use
|
||||
*
|
||||
* @return RuntimeMockup
|
||||
*/
|
||||
protected function instantiateRuntime()
|
||||
{
|
||||
return new RuntimeMockup();
|
||||
}
|
||||
}
|
|
@ -1,17 +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;
|
||||
|
||||
use Symfony\Component\Console\Application;
|
||||
|
||||
class MageTestApplication extends Application
|
||||
{
|
||||
}
|
20
src/Mage/Tests/Resources/testhost-custom-task.yml
Normal file
20
src/Mage/Tests/Resources/testhost-custom-task.yml
Normal file
|
@ -0,0 +1,20 @@
|
|||
magephp:
|
||||
log_dir: /tmp
|
||||
environments:
|
||||
test:
|
||||
user: tester
|
||||
host_path: /var/www/test
|
||||
exclude:
|
||||
- ./var/cache/*
|
||||
- ./var/log/*
|
||||
- ./web/app_dev.php
|
||||
hosts:
|
||||
- testhost
|
||||
pre-deploy:
|
||||
- composer/install
|
||||
- composer/generate-autoload
|
||||
on-deploy:
|
||||
- Mage\Tests\Task\CustomTask
|
||||
on-release:
|
||||
post-release:
|
||||
post-deploy:
|
24
src/Mage/Tests/Resources/testhost-skipping.yml
Normal file
24
src/Mage/Tests/Resources/testhost-skipping.yml
Normal file
|
@ -0,0 +1,24 @@
|
|||
magephp:
|
||||
log_dir: /tmp
|
||||
environments:
|
||||
test:
|
||||
user: tester
|
||||
branch: master
|
||||
host_path: /var/www/test
|
||||
exclude:
|
||||
- ./var/cache/*
|
||||
- ./var/log/*
|
||||
- ./web/app_dev.php
|
||||
hosts:
|
||||
- testhost
|
||||
pre-deploy:
|
||||
- git/update
|
||||
- composer/install
|
||||
- composer/generate-autoload
|
||||
on-deploy:
|
||||
- symfony/cache-warmup: { env: 'dev' }
|
||||
- symfony/assets-install: { env: 'dev' }
|
||||
- symfony/assetic-dump: { env: 'dev' }
|
||||
on-release:
|
||||
post-release:
|
||||
post-deploy:
|
25
src/Mage/Tests/Resources/testhost-sudo.yml
Normal file
25
src/Mage/Tests/Resources/testhost-sudo.yml
Normal file
|
@ -0,0 +1,25 @@
|
|||
magephp:
|
||||
log_dir: /tmp
|
||||
environments:
|
||||
test:
|
||||
user: tester
|
||||
branch: test
|
||||
host_path: /var/www/test
|
||||
sudo: true
|
||||
exclude:
|
||||
- ./var/cache/*
|
||||
- ./var/log/*
|
||||
- ./web/app_dev.php
|
||||
hosts:
|
||||
- testhost
|
||||
pre-deploy:
|
||||
- git/update
|
||||
- composer/install
|
||||
- composer/generate-autoload
|
||||
on-deploy:
|
||||
- symfony/cache-warmup: { env: 'dev' }
|
||||
- symfony/assets-install: { env: 'dev' }
|
||||
- symfony/assetic-dump: { env: 'dev' }
|
||||
on-release:
|
||||
post-release:
|
||||
post-deploy:
|
23
src/Mage/Tests/Resources/testhost-with-error.yml
Normal file
23
src/Mage/Tests/Resources/testhost-with-error.yml
Normal file
|
@ -0,0 +1,23 @@
|
|||
magephp:
|
||||
log_dir: /tmp
|
||||
environments:
|
||||
test:
|
||||
user: tester
|
||||
branch: test
|
||||
host_path: /var/www/test
|
||||
releases: 4
|
||||
exclude:
|
||||
- ./var/cache/*
|
||||
- ./var/log/*
|
||||
- ./web/app_dev.php
|
||||
hosts:
|
||||
- testhost
|
||||
pre-deploy:
|
||||
- git/update
|
||||
- composer/install
|
||||
- composer/generate-autoload
|
||||
on-deploy:
|
||||
- deploy/rsync
|
||||
on-release:
|
||||
post-release:
|
||||
post-deploy:
|
23
src/Mage/Tests/Resources/testhost-with-postdeploy-error.yml
Normal file
23
src/Mage/Tests/Resources/testhost-with-postdeploy-error.yml
Normal file
|
@ -0,0 +1,23 @@
|
|||
magephp:
|
||||
log_dir: /tmp
|
||||
environments:
|
||||
test:
|
||||
user: tester
|
||||
branch: test
|
||||
host_path: /var/www/test
|
||||
exclude:
|
||||
- ./var/cache/*
|
||||
- ./var/log/*
|
||||
- ./web/app_dev.php
|
||||
hosts:
|
||||
- testhost
|
||||
pre-deploy:
|
||||
- git/update
|
||||
- composer/install
|
||||
- composer/generate-autoload
|
||||
on-deploy:
|
||||
- deploy/rsync
|
||||
on-release:
|
||||
post-release:
|
||||
post-deploy:
|
||||
- deploy/targz/cleanup
|
24
src/Mage/Tests/Resources/testhost-without-releases.yml
Normal file
24
src/Mage/Tests/Resources/testhost-without-releases.yml
Normal file
|
@ -0,0 +1,24 @@
|
|||
magephp:
|
||||
log_dir: /tmp
|
||||
environments:
|
||||
test:
|
||||
user: tester
|
||||
branch: test
|
||||
host_path: /var/www/test
|
||||
exclude:
|
||||
- ./var/cache/*
|
||||
- ./var/log/*
|
||||
- ./web/app_dev.php
|
||||
hosts:
|
||||
- testhost
|
||||
pre-deploy:
|
||||
- git/update
|
||||
- composer/install
|
||||
- composer/generate-autoload
|
||||
on-deploy:
|
||||
- symfony/cache-warmup: { env: 'dev' }
|
||||
- symfony/assets-install: { env: 'dev' }
|
||||
- symfony/assetic-dump: { env: 'dev' }
|
||||
on-release:
|
||||
post-release:
|
||||
post-deploy:
|
25
src/Mage/Tests/Resources/testhost.yml
Normal file
25
src/Mage/Tests/Resources/testhost.yml
Normal file
|
@ -0,0 +1,25 @@
|
|||
magephp:
|
||||
log_dir: /tmp
|
||||
environments:
|
||||
test:
|
||||
user: tester
|
||||
branch: test
|
||||
host_path: /var/www/test
|
||||
releases: 4
|
||||
exclude:
|
||||
- ./var/cache/*
|
||||
- ./var/log/*
|
||||
- ./web/app_dev.php
|
||||
hosts:
|
||||
- testhost
|
||||
pre-deploy:
|
||||
- git/update
|
||||
- composer/install
|
||||
- composer/generate-autoload
|
||||
on-deploy:
|
||||
- symfony/cache-warmup: { env: 'dev' }
|
||||
- symfony/assets-install: { env: 'dev' }
|
||||
- symfony/assetic-dump: { env: 'dev' }
|
||||
on-release:
|
||||
post-release:
|
||||
post-deploy:
|
|
@ -60,4 +60,16 @@ class RuntimeMockup extends Runtime
|
|||
{
|
||||
return '/tmp/mageXYZ';
|
||||
}
|
||||
|
||||
/**
|
||||
* Allows to set an invalid environments
|
||||
*
|
||||
* @param string $environment
|
||||
* @return Runtime
|
||||
*/
|
||||
public function setInvalidEnvironment($environment)
|
||||
{
|
||||
$this->environment = $environment;
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -49,6 +49,17 @@ class RuntimeTest extends TestCase
|
|||
$this->assertEquals(0, count($config));
|
||||
}
|
||||
|
||||
public function testInvalidEnvironmentConfig()
|
||||
{
|
||||
$runtime = new RuntimeMockup();
|
||||
$runtime->setConfiguration(['environments' => ['valid' => []]]);
|
||||
$runtime->setInvalidEnvironment('invalid');
|
||||
$config = $runtime->getEnvironmentConfig();
|
||||
|
||||
$this->assertTrue(is_array($config));
|
||||
$this->assertEquals(0, count($config));
|
||||
}
|
||||
|
||||
public function testInvalidEnvironments()
|
||||
{
|
||||
try {
|
||||
|
|
|
@ -24,6 +24,7 @@ class UtilsTest extends TestCase
|
|||
$this->assertEquals('Post Deployment', Utils::getStageName(Runtime::POST_DEPLOY));
|
||||
$this->assertEquals('On Release', Utils::getStageName(Runtime::ON_RELEASE));
|
||||
$this->assertEquals('Post Release', Utils::getStageName(Runtime::POST_RELEASE));
|
||||
$this->assertEquals('invalid-stage', Utils::getStageName('invalid-stage'));
|
||||
}
|
||||
|
||||
public function testReleaseDate()
|
||||
|
|
Loading…
Reference in a new issue