diff core/tests/Drupal/FunctionalTests/Installer/InstallerExistingConfigSyncDirectoryProfileHookInstall.php @ 17:129ea1e6d783

Update, including to Drupal core 8.6.10
author Chris Cannam
date Thu, 28 Feb 2019 13:21:36 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core/tests/Drupal/FunctionalTests/Installer/InstallerExistingConfigSyncDirectoryProfileHookInstall.php	Thu Feb 28 13:21:36 2019 +0000
@@ -0,0 +1,93 @@
+<?php
+
+namespace Drupal\FunctionalTests\Installer;
+
+/**
+ * Verifies that profiles with hook_install() can't be installed from config.
+ *
+ * @group Installer
+ */
+class InstallerExistingConfigSyncDirectoryProfileHookInstall extends InstallerExistingConfigTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected $profile = 'testing_config_install_multilingual';
+
+  /**
+   * {@inheritdoc}
+   */
+  protected $existingSyncDirectory = TRUE;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function visitInstaller() {
+    // Create an .install file with a hook_install() implementation.
+    $path = $this->siteDirectory . '/profiles/' . $this->profile;
+    $contents = <<<EOF
+<?php
+
+function testing_config_install_multilingual_install() {
+}
+EOF;
+    file_put_contents("$path/{$this->profile}.install", $contents);
+    parent::visitInstaller();
+  }
+
+  /**
+   * Installer step: Select installation profile.
+   */
+  protected function setUpProfile() {
+    // This is the form we are testing so wait until the test method to do
+    // assertions.
+    return;
+  }
+
+  /**
+   * Installer step: Requirements problem.
+   */
+  protected function setUpRequirementsProblem() {
+    // This form will never be reached.
+    return;
+  }
+
+  /**
+   * Installer step: Configure settings.
+   */
+  protected function setUpSettings() {
+    // This form will never be reached.
+    return;
+  }
+
+  /**
+   * Final installer step: Configure site.
+   */
+  protected function setUpSite() {
+    // This form will never be reached.
+    return;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function getConfigTarball() {
+    return __DIR__ . '/../../../fixtures/config_install/multilingual.tar.gz';
+  }
+
+  /**
+   * Tests installing from config is not available due to hook_INSTALL().
+   */
+  public function testConfigSync() {
+    $this->assertSession()->titleEquals('Select an installation profile | Drupal');
+    $this->assertSession()->responseNotContains('Use existing configuration');
+
+    // Remove the install hook and the option to install from existing
+    // configuration will be available.
+    unlink("{$this->siteDirectory}/profiles/{$this->profile}/{$this->profile}.install");
+    $this->getSession()->reload();
+    $this->assertSession()->titleEquals('Select an installation profile | Drupal');
+    $this->assertSession()->responseContains('Use existing configuration');
+  }
+
+}