AdministrationOptionsTest.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. <?php declare(strict_types=1);
  2. use PHPUnit\Framework\TestCase;
  3. class AdministrationOptionsTest extends TestCase
  4. {
  5. public function testAcceptsSingleAction()
  6. {
  7. [$exitCode, $output] = $this->runAdministration('--help');
  8. $this->assertSame(0, $exitCode, $output);
  9. $this->assertStringContainsString('Usage:', $output);
  10. }
  11. /**
  12. * @dataProvider invalidArgumentsProvider
  13. */
  14. public function testRejectsAmbiguousArguments($arguments)
  15. {
  16. [$exitCode, $output] = $this->runAdministration($arguments);
  17. $this->assertSame(3, $exitCode, $output);
  18. $this->assertStringContainsString('Error: unsupported arguments given', $output);
  19. }
  20. private function runAdministration($arguments)
  21. {
  22. $command = escapeshellarg(PHP_BINARY) . ' ' .
  23. escapeshellarg(realpath(PATH . 'bin' . DIRECTORY_SEPARATOR . 'administration')) .
  24. ' ' . $arguments . ' 2>&1';
  25. exec($command, $output, $exitCode);
  26. return [$exitCode, implode(PHP_EOL, $output)];
  27. }
  28. public function invalidArgumentsProvider()
  29. {
  30. return [
  31. 'trailing positional argument' => ['--help unexpected'],
  32. 'multiple actions' => ['--help --delete-all'],
  33. ];
  34. }
  35. }