[ 'modules' => [], 'profiles' => [], 'tests' => [ 'Drupal' => [ 'NotUnitTests' => [ 'CoreNotUnitTest.php' => ' [ 'CoreUnitTest.php' => ' [ 'Listener.php' => ' [ 'Listener.php' => 'getFilesystem(); return [ 'unit-tests' => [ $filesystem, 'Unit', [ 'Drupal\Tests\CoreUnitTest' => 'vfs://root/core/tests/Drupal/Tests/CoreUnitTest.php', ], ], 'not-unit-tests' => [ $filesystem, 'NotUnit', [ 'Drupal\NotUnitTests\CoreNotUnitTest' => 'vfs://root/core/tests/Drupal/NotUnitTests/CoreNotUnitTest.php', ], ], ]; } /** * Tests for special case behavior of unit test suite namespaces in core. * * @covers ::addTestsBySuiteNamespace * * @dataProvider provideCoreTests */ public function testAddTestsBySuiteNamespaceCore($filesystem, $suite_namespace, $expected_tests) { // Set up the file system. $vfs = vfsStream::setup('root'); vfsStream::create($filesystem, $vfs); // Make a stub suite base to test. $stub = new StubTestSuiteBase('test_me'); // Access addTestsBySuiteNamespace(). $ref_add_tests = new \ReflectionMethod($stub, 'addTestsBySuiteNamespace'); $ref_add_tests->setAccessible(TRUE); // Invoke addTestsBySuiteNamespace(). $ref_add_tests->invokeArgs($stub, [vfsStream::url('root'), $suite_namespace]); // Determine if we loaded the expected test files. $this->assertEquals($expected_tests, $stub->testFiles); } /** * Tests the assumption that local time is in 'Australia/Sydney'. */ public function testLocalTimeZone() { // The 'Australia/Sydney' time zone is set in core/tests/bootstrap.php $this->assertEquals('Australia/Sydney', date_default_timezone_get()); } } /** * Stub subclass of TestSuiteBase. * * We use this class to alter the behavior of TestSuiteBase so it can be * testable. */ class StubTestSuiteBase extends TestSuiteBase { /** * Test files discovered by addTestsBySuiteNamespace(). * * @var string[] */ public $testFiles = []; /** * {@inheritdoc} */ protected function findExtensionDirectories($root) { // We have to stub findExtensionDirectories() because we can't inject a // vfsStream filesystem into drupal_phpunit_find_extension_directories(), // which uses \SplFileInfo->getRealPath(). getRealPath() resolves // stream-based paths to an empty string. See // https://github.com/mikey179/vfsStream/wiki/Known-Issues return []; } /** * {@inheritdoc} */ public function addTestFiles($filenames) { // We stub addTestFiles() because the parent implementation can't deal with // vfsStream-based filesystems due to an error in // stream_resolve_include_path(). See // https://github.com/mikey179/vfsStream/issues/5 Here we just store the // test file being added in $this->testFiles. $this->testFiles = array_merge($this->testFiles, $filenames); } }