Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / vendor / drush / drush / tests / CoreTest.php
diff --git a/vendor/drush/drush/tests/CoreTest.php b/vendor/drush/drush/tests/CoreTest.php
new file mode 100644 (file)
index 0000000..aa1a9b1
--- /dev/null
@@ -0,0 +1,175 @@
+<?php
+
+namespace Unish;
+
+use Symfony\Component\Yaml\Yaml;
+use Webmozart\PathUtil\Path;
+
+/**
+ * Tests for core commands.
+ *
+ * @group commands
+ */
+class CoreCase extends CommandUnishTestCase
+{
+
+    public function setUp()
+    {
+        if (!$this->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);
+    }
+}