mirror of https://github.com/hauke68/Magallanes
Andrés Montañez
8 years ago
23 changed files with 640 additions and 1031 deletions
@ -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()); |
||||
} |
||||
|
||||
} |
@ -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 |
||||
{ |
||||
} |
@ -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: |
@ -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: |
@ -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: |
@ -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: |
@ -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 |
@ -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: |
@ -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: |
Loading…
Reference in new issue