--- /dev/null
+<?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 PHPUnit\Framework\TestCase;
+use Symfony\Component\Finder\Shell\Command;
+
+/**
+ * @group legacy
+ */
+class CommandTest extends 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 '.escapeshellarg('--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->{method_exists($this, $_ = 'expectException') ? $_ : '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->{method_exists($this, $_ = 'expectException') ? $_ : 'setExpectedException'}('RuntimeException');
+ $cmd->end();
+ }
+
+ public function testGetMissingLabelException()
+ {
+ $cmd = Command::create();
+
+ $this->{method_exists($this, $_ = 'expectException') ? $_ : '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->assertInternalType('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);
+ }
+}