Chris@0: set('app.root', self::$root); Chris@0: $file_system = $this->prophesize(FileSystemInterface::class); Chris@0: // The simpletest directory wrapper will always point to /tmp. Chris@0: $file_system->realpath('public://simpletest')->willReturn(sys_get_temp_dir()); Chris@0: $container->set('file_system', $file_system->reveal()); Chris@0: \Drupal::setContainer($container); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Data provider for testSimpletestPhpUnitRunCommand(). Chris@0: * Chris@0: * @return array Chris@0: * Arrays of status codes and the label they're expected to have. Chris@0: */ Chris@0: public function provideStatusCodes() { Chris@0: $data = [ Chris@0: [0, 'pass'], Chris@0: [1, 'fail'], Chris@0: [2, 'exception'], Chris@0: ]; Chris@0: // All status codes 3 and above should be labeled 'error'. Chris@0: // @todo: The valid values here would be 3 to 127. But since the test Chris@0: // touches the file system a lot, we only have 3, 4, and 127 for speed. Chris@0: foreach ([3, 4, 127] as $status) { Chris@0: $data[] = [$status, 'error']; Chris@0: } Chris@0: return $data; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Test the round trip for PHPUnit execution status codes. Chris@0: * Chris@0: * @covers ::simpletest_run_phpunit_tests Chris@0: * Chris@0: * @dataProvider provideStatusCodes Chris@0: */ Chris@0: public function testSimpletestPhpUnitRunCommand($status, $label) { Chris@17: // Add a default database connection in order for Chris@17: // Database::getConnectionInfoAsUrl() to return valid information. Chris@17: Database::addConnectionInfo('default', 'default', [ Chris@17: 'driver' => 'mysql', Chris@17: 'username' => 'test_user', Chris@17: 'password' => 'test_pass', Chris@17: 'host' => 'test_host', Chris@17: 'database' => 'test_database', Chris@17: 'port' => 3306, Chris@17: 'namespace' => 'Drupal\Core\Database\Driver\mysql', Chris@17: ] Chris@17: ); Chris@0: $test_id = basename(tempnam(sys_get_temp_dir(), 'xxx')); Chris@0: putenv('SimpletestPhpunitRunCommandTestWillDie=' . $status); Chris@0: $ret = simpletest_run_phpunit_tests($test_id, [SimpletestPhpunitRunCommandTestWillDie::class]); Chris@0: $this->assertSame($ret[0]['status'], $label); Chris@0: putenv('SimpletestPhpunitRunCommandTestWillDie'); Chris@0: unlink(simpletest_phpunit_xml_filepath($test_id)); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: protected function tearDown() { Chris@0: // We unset the $base_url global, since the test code sets it as a Chris@0: // side-effect. Chris@0: unset($GLOBALS['base_url']); Chris@0: parent::tearDown(); Chris@0: } Chris@0: Chris@0: }