Skip to content

Commit

Permalink
[Finder] Command::addAtIndex() fails with Command instance argument
Browse files Browse the repository at this point in the history
  • Loading branch information
thunderer authored and fabpot committed Jul 8, 2015
1 parent 4706a90 commit 2aff566
Show file tree
Hide file tree
Showing 2 changed files with 163 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/Symfony/Component/Finder/Shell/Command.php
Expand Up @@ -289,7 +289,7 @@ function ($bit) { return null !== $bit; }
*/
public function addAtIndex($bit, $index)
{
array_splice($this->bits, $index, 0, $bit);
array_splice($this->bits, $index, 0, $bit instanceof self ? array($bit) : $bit);

return $this;
}
Expand Down
162 changes: 162 additions & 0 deletions src/Symfony/Component/Finder/Tests/Shell/CommandTest.php
@@ -0,0 +1,162 @@
<?php

/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/

namespace Symfony\Component\Finder\Tests\Shell;

use Symfony\Component\Finder\Shell\Command;

class CommandTest extends \PHPUnit_Framework_TestCase
{
public function testCreate()
{
$this->assertInstanceOf('Symfony\Component\Finder\Shell\Command', Command::create());
}

public function testAdd()
{
$cmd = Command::create()->add('--force');
$this->assertSame('--force', $cmd->join());
}

public function testAddAsFirst()
{
$cmd = Command::create()->add('--force');

$cmd->addAtIndex(Command::create()->add('-F'), 0);
$this->assertSame('-F --force', $cmd->join());
}

public function testAddAsLast()
{
$cmd = Command::create()->add('--force');

$cmd->addAtIndex(Command::create()->add('-F'), 1);
$this->assertSame('--force -F', $cmd->join());
}

public function testAddInBetween()
{
$cmd = Command::create()->add('--force');
$cmd->addAtIndex(Command::create()->add('-F'), 0);

$cmd->addAtIndex(Command::create()->add('-X'), 1);
$this->assertSame('-F -X --force', $cmd->join());
}

public function testCount()
{
$cmd = Command::create();
$this->assertSame(0, $cmd->length());

$cmd->add('--force');
$this->assertSame(1, $cmd->length());

$cmd->add('--run');
$this->assertSame(2, $cmd->length());
}

public function testTop()
{
$cmd = Command::create()->add('--force');

$cmd->top('--run');
$this->assertSame('--run --force', $cmd->join());
}

public function testTopLabeled()
{
$cmd = Command::create()->add('--force');

$cmd->top('--run');
$cmd->ins('--something');
$cmd->top('--something');
$this->assertSame('--something --run --force ', $cmd->join());
}

public function testArg()
{
$cmd = Command::create()->add('--force');

$cmd->arg('--run');
$this->assertSame('--force \'--run\'', $cmd->join());
}

public function testCmd()
{
$cmd = Command::create()->add('--force');

$cmd->cmd('run');
$this->assertSame('--force run', $cmd->join());
}

public function testInsDuplicateLabelException()
{
$cmd = Command::create()->add('--force');

$cmd->ins('label');
$this->setExpectedException('RuntimeException');
$cmd->ins('label');
}

public function testEnd()
{
$parent = Command::create();
$cmd = Command::create($parent);

$this->assertSame($parent, $cmd->end());
}

public function testEndNoParentException()
{
$cmd = Command::create();

$this->setExpectedException('RuntimeException');
$cmd->end();
}

public function testGetMissingLabelException()
{
$cmd = Command::create();

$this->setExpectedException('RuntimeException');
$cmd->get('invalid');
}

public function testErrorHandler()
{
$cmd = Command::create();
$handler = function() { return 'error-handler'; };
$cmd->setErrorHandler($handler);

$this->assertSame($handler, $cmd->getErrorHandler());
}

public function testExecute()
{
$cmd = Command::create();
$cmd->add('php');
$cmd->add('--version');
$result = $cmd->execute();

$this->assertTrue(is_array($result));
$this->assertNotEmpty($result);
$this->assertRegexp('/PHP|HipHop/', $result[0]);
}

public function testCastToString()
{
$cmd = Command::create();
$cmd->add('--force');
$cmd->add('--run');

$this->assertSame('--force --run', (string) $cmd);
}
}

0 comments on commit 2aff566

Please sign in to comment.