public function testString() { $command = new \Smalot\Commander\Command('/usr/folder with space/apt'); $command->addParam('param1'); $command->addFlag('v'); $command->addParam('param2'); $this->assert->string((string) $command)->isEqualTo("'/usr/folder with space/apt' -v 'param1' 'param2'"); $command = new \Smalot\Commander\Command('git'); $command->addSubCommand('commit'); $command->addFlag('m', 'message for commit'); $this->assert->string((string) $command)->isEqualTo("'git' 'commit' -m 'message for commit'"); $command = new \Smalot\Commander\Command('git'); $command->addSubCommand('commit'); $command->addFlag('m', 'message for commit'); $this->assert->string((string) $command)->isEqualTo("'git' 'commit' -m 'message for commit'"); $command = new \Smalot\Commander\Command('git'); $command->addSubCommand('commit'); $command->addArgument('interactive'); $command->addFlag('m', 'message for commit'); $this->assert->string((string) $command)->isEqualTo("'git' 'commit' --interactive -m 'message for commit'"); }
public function testRun() { $runner = new \Smalot\Commander\Runner\ProcOpen(); $runner->addEnvironmentVariable('HOME', '/home/username'); // Commande OK ! $command = new \Smalot\Commander\Command('ls'); $command->addFlag('a'); $command->addFlag('l'); $command->addParam('/tmp'); $runner->run($command, 1); $this->assert->integer($runner->getReturnCode())->isEqualTo(0); $this->assert->float($runner->getDuration())->isGreaterThan(0); $this->assert->float($runner->getDuration())->isLessThan(2); $this->assert->string($runner->getOutput())->contains('total'); $this->assert->string($runner->getError())->isEqualTo(''); // Check environment variable. $command = new \Smalot\Commander\Command('echo'); $command->addParam('$HOME'); $runner->run($command, 1); $this->assert->integer($runner->getReturnCode())->isEqualTo(0); $this->assert->float($runner->getDuration())->isLessThan(1); $this->assert->string($runner->getOutput())->isEqualTo('/home/username' . PHP_EOL); $this->assert->string($runner->getError())->isEqualTo(''); // Timeout ! $command = new \Smalot\Commander\Command('sleep'); $command->addParam('10'); $this->assert->exception(function () use($runner, $command) { $runner->run($command, 1); })->isInstanceOf('\\Smalot\\Commander\\Runner\\TimeoutException'); // Unknown command line. $command = new \Smalot\Commander\Command('foobar'); $command->addParam('-v'); $runner->run($command, 1); $this->assert->integer($runner->getReturnCode())->isEqualTo(127); $this->assert->float($runner->getDuration())->isLessThan(1); $this->assert->string($runner->getOutput())->isEqualTo(''); $this->assert->string($runner->getError())->contains('foobar')->contains('not found'); }