X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=vendor%2Fdrush%2Fdrush%2Ftests%2FCoreTest.php;fp=vendor%2Fdrush%2Fdrush%2Ftests%2FCoreTest.php;h=aa1a9b116e5697feb5ca92da4dd115ebad8a393e;hp=0000000000000000000000000000000000000000;hb=af6d1fb995500ae68849458ee10d66abbdcfb252;hpb=680c79a86e3ed402f263faeac92e89fb6d9edcc0 diff --git a/vendor/drush/drush/tests/CoreTest.php b/vendor/drush/drush/tests/CoreTest.php new file mode 100644 index 000000000..aa1a9b116 --- /dev/null +++ b/vendor/drush/drush/tests/CoreTest.php @@ -0,0 +1,175 @@ +getSites()) { + $this->setUpDrupal(2, true); + } + } + + public function testDrupalDirectory() + { + $root = $this->webroot(); + $sitewide = $this->drupalSitewideDirectory(); + $this->drush('drupal-directory', ['%files']); + $output = $this->getOutput(); + $this->assertEquals(Path::join($root, '/sites/dev/files'), $output); + + $this->drush('drupal-directory', ['%modules']); + $output = $this->getOutput(); + $this->assertEquals(Path::join($root, $sitewide . '/modules'), $output); + + $this->drush('pm-enable', ['devel']); + $this->drush('theme-enable', ['empty_theme']); + + $this->drush('drupal-directory', ['devel']); + $output = $this->getOutput(); + $this->assertEquals(Path::join($root, '/modules/unish/devel'), $output); + + $this->drush('drupal-directory', ['empty_theme']); + $output = $this->getOutput(); + $this->assertEquals(Path::join($root, '/themes/unish/empty_theme'), $output); + } + + public function testCoreRequirements() + { + $root = $this->webroot(); + $options = [ + 'pipe' => null, + 'ignore' => 'cron,http requests,update,update_core,trusted_host_patterns', // no network access when running in tests, so ignore these + // 'strict' => 0, // invoke from script: do not verify options + ]; + // Verify that there are no severity 2 items in the status report + $this->drush('core-requirements', [], $options + ['severity' => '2']); + $output = $this->getOutput(); + $this->assertEquals('', $output); + + $this->drush('core-requirements', [], $options); + $loaded = $this->getOutputFromJSON(); + // Pick a subset that are valid for D6/D7/D8. + $expected = [ + // 'install_profile' => -1, + // 'node_access' => -1, + 'php' => -1, + // 'php_extensions' => -1, + 'php_memory_limit' => -1, + 'php_register_globals' => -1, + 'settings.php' => -1, + ]; + foreach ($expected as $key => $value) { + if (isset($loaded->$key)) { + $this->assertEquals($value, $loaded->$key->sid); + } + } + } + + public function testSiteSelectionViaCwd() + { + $cwd = getcwd(); + $root = $this->webroot(); + foreach (['dev', 'stage'] as $uri) { + $conf_dir = $root . '/sites/' . $uri; + // We will chdir to the directory that contains settings.php + // and ensure that we can bootstrap the selected site from here. + chdir($conf_dir); + $options['uri'] = 'OMIT'; // A special value which causes --uri to not be specified. + $this->drush('core-status', [], $options); + $output = $this->getOutput(); + $output = preg_replace('# *#', ' ', $output); + $this->assertContains('Database : Connected', $output); + $this->assertContains("Site path : sites/$uri", $output); + } + chdir($cwd); + } + + public function testOptionsUri() + { + // Put a yml file in the drush folder. + $drush_config_file = Path::join($this->getSut(), 'drush', 'drush.yml'); + $test_uri = 'http://test.uri'; + $options_with_uri = [ + 'options' => [ + 'uri' => $test_uri, + ], + ]; + $options = [ + 'format' => 'json', + 'uri' => 'OMIT', // A special value which causes --uri to not be specified. + ]; + file_put_contents($drush_config_file, Yaml::dump($options_with_uri, PHP_INT_MAX, 2)); + $this->drush('core-status', [], $options); + unlink($drush_config_file); + $output = $this->getOutputFromJSON(); + $this->assertEquals($test_uri, $output->uri); + } + + public function testRecursiveConfigLoading() + { + // Put a yml file in the drush folder. + $drush_config_file = Path::join($this->getSut(), 'drush', 'drush.yml'); + $a_drush_config_file = Path::join($this->getSut(), 'drush', 'a.drush.yml'); + $b_drush_config_file = Path::join($this->getSut(), 'drush', 'b.drush.yml'); + $test_uri = 'http://test.uri'; + // Set up multiple drush.yml files that include one another to test + // potential infinite loop. + $drush_yml_options = [ + 'drush' => [ + 'paths' => [ + 'config' => [ + $a_drush_config_file, + ], + ], + ], + ]; + $a_drush_yml_options = [ + 'drush' => [ + 'paths' => [ + 'config' => [ + $b_drush_config_file, + ], + ], + ], + ]; + $b_drush_yml_options = [ + 'drush' => [ + 'paths' => [ + 'config' => [ + $a_drush_config_file, + ], + ], + ], + 'options' => [ + 'uri' => $test_uri, + ], + ]; + $command_options = [ + 'format' => 'json', + 'uri' => 'OMIT', // A special value which causes --uri to not be specified. + ]; + file_put_contents($drush_config_file, Yaml::dump($drush_yml_options, PHP_INT_MAX, 2)); + file_put_contents($a_drush_config_file, Yaml::dump($a_drush_yml_options, PHP_INT_MAX, 2)); + file_put_contents($b_drush_config_file, Yaml::dump($b_drush_yml_options, PHP_INT_MAX, 2)); + $this->drush('core-status', [], $command_options, null, $this->getSut()); + unlink($drush_config_file); + unlink($a_drush_config_file); + unlink($b_drush_config_file); + $output = $this->getOutputFromJSON(); + $drush_conf_as_string = print_r($output->{'drush-conf'}, true); + $this->assertContains($a_drush_config_file, $output->{'drush-conf'}, "Loaded drush config files are: " . $drush_conf_as_string); + $this->assertContains($b_drush_config_file, $output->{'drush-conf'}, "Loaded drush config files are: " . $drush_conf_as_string); + $this->assertEquals($test_uri, $output->uri); + } +}