CommandFactoryTest.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <?php
  2. use MediaWiki\Shell\Command;
  3. use MediaWiki\Shell\CommandFactory;
  4. use MediaWiki\Shell\FirejailCommand;
  5. use Psr\Log\NullLogger;
  6. use Wikimedia\TestingAccessWrapper;
  7. /**
  8. * @group Shell
  9. */
  10. class CommandFactoryTest extends PHPUnit\Framework\TestCase {
  11. use MediaWikiCoversValidator;
  12. /**
  13. * @covers MediaWiki\Shell\CommandFactory::create
  14. */
  15. public function testCreate() {
  16. $logger = new NullLogger();
  17. $cgroup = '/sys/fs/cgroup/memory/mygroup';
  18. $limits = [
  19. 'filesize' => 1000,
  20. 'memory' => 1000,
  21. 'time' => 30,
  22. 'walltime' => 40,
  23. ];
  24. $factory = new CommandFactory( $limits, $cgroup, false );
  25. $factory->setLogger( $logger );
  26. $factory->logStderr();
  27. $command = $factory->create();
  28. $this->assertInstanceOf( Command::class, $command );
  29. $wrapper = TestingAccessWrapper::newFromObject( $command );
  30. $this->assertSame( $logger, $wrapper->logger );
  31. $this->assertSame( $cgroup, $wrapper->cgroup );
  32. $this->assertSame( $limits, $wrapper->limits );
  33. $this->assertTrue( $wrapper->doLogStderr );
  34. }
  35. /**
  36. * @covers MediaWiki\Shell\CommandFactory::create
  37. */
  38. public function testFirejailCreate() {
  39. $factory = new CommandFactory( [], false, 'firejail' );
  40. $factory->setLogger( new NullLogger() );
  41. $this->assertInstanceOf( FirejailCommand::class, $factory->create() );
  42. }
  43. }