117 lines
3.9 KiB
PHP
117 lines
3.9 KiB
PHP
<?php
|
|
|
|
namespace Consolidation\SiteProcess;
|
|
|
|
use Consolidation\SiteProcess\Transport\KubectlTransport;
|
|
use PHPUnit\Framework\TestCase;
|
|
use Consolidation\SiteAlias\SiteAlias;
|
|
|
|
class KubectlTransportTest extends TestCase
|
|
{
|
|
/**
|
|
* Data provider for testWrap.
|
|
*/
|
|
public function wrapTestValues()
|
|
{
|
|
return [
|
|
// Everything explicit.
|
|
[
|
|
'kubectl --namespace=vv exec --tty=false --stdin=false deploy/drupal --container=drupal -- ls',
|
|
['ls'],
|
|
[
|
|
'kubectl' => [
|
|
'tty' => false,
|
|
'interactive' => false,
|
|
'namespace' => 'vv',
|
|
'resource' => 'deploy/drupal',
|
|
'container' => 'drupal',
|
|
]
|
|
],
|
|
],
|
|
|
|
// Minimal. Kubectl will pick a container.
|
|
[
|
|
'kubectl --namespace=vv exec --tty=false --stdin=false deploy/drupal -- ls',
|
|
['ls'],
|
|
[
|
|
'kubectl' => [
|
|
'namespace' => 'vv',
|
|
'resource' => 'deploy/drupal',
|
|
]
|
|
],
|
|
],
|
|
|
|
// Don't escape arguments after "--"
|
|
[
|
|
'kubectl --namespace=vv exec --tty=false --stdin=false deploy/drupal -- asdf "double" \'single\'',
|
|
['asdf', '"double"', "'single'"],
|
|
[
|
|
'kubectl' => [
|
|
'namespace' => 'vv',
|
|
'resource' => 'deploy/drupal',
|
|
]
|
|
],
|
|
],
|
|
|
|
// With kubeconfig.
|
|
[
|
|
'kubectl --namespace=vv exec --tty=false --stdin=false deploy/drupal --container=drupal --kubeconfig=/path/to/config.yaml -- ls',
|
|
['ls'],
|
|
[
|
|
'kubectl' => [
|
|
'tty' => false,
|
|
'interactive' => false,
|
|
'namespace' => 'vv',
|
|
'resource' => 'deploy/drupal',
|
|
'container' => 'drupal',
|
|
'kubeconfig' => '/path/to/config.yaml',
|
|
]
|
|
],
|
|
],
|
|
|
|
// With entrypoint as string.
|
|
[
|
|
'kubectl --namespace=vv exec --tty=false --stdin=false deploy/drupal --container=drupal -- /docker-entrypoint ls',
|
|
['ls'],
|
|
[
|
|
'kubectl' => [
|
|
'tty' => false,
|
|
'interactive' => false,
|
|
'namespace' => 'vv',
|
|
'resource' => 'deploy/drupal',
|
|
'container' => 'drupal',
|
|
'entrypoint' => '/docker-entrypoint',
|
|
]
|
|
],
|
|
],
|
|
|
|
// With entrypoint as array.
|
|
[
|
|
'kubectl --namespace=vv exec --tty=false --stdin=false deploy/drupal --container=drupal -- /docker-entrypoint --debug ls',
|
|
['ls'],
|
|
[
|
|
'kubectl' => [
|
|
'tty' => false,
|
|
'interactive' => false,
|
|
'namespace' => 'vv',
|
|
'resource' => 'deploy/drupal',
|
|
'container' => 'drupal',
|
|
'entrypoint' => ['/docker-entrypoint', '--debug'],
|
|
]
|
|
],
|
|
],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @dataProvider wrapTestValues
|
|
*/
|
|
public function testWrap($expected, $args, $siteAliasData)
|
|
{
|
|
$siteAlias = new SiteAlias($siteAliasData, '@alias.dev');
|
|
$dockerTransport = new KubectlTransport($siteAlias);
|
|
$actual = $dockerTransport->wrap($args);
|
|
$this->assertEquals($expected, implode(' ', $actual));
|
|
}
|
|
}
|