diff --git a/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php b/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php
index 61c54d1..c93cbaf 100644
--- a/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php
+++ b/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php
@@ -775,7 +775,8 @@ protected function setUp() {
     // Copy and prepare an actual settings.php, so as to resemble a regular
     // installation.
     // Not using File API; a potential error must trigger a PHP warning.
-    copy(DRUPAL_ROOT . '/sites/default/default.settings.php', DRUPAL_ROOT . '/' . $this->siteDirectory . '/settings.php');
+    $directory = DRUPAL_ROOT . '/' . $this->siteDirectory;
+    copy(DRUPAL_ROOT . '/sites/default/default.settings.php', $directory . '/settings.php');
 
     // All file system paths are created by System module during installation.
     // @see system_requirements()
@@ -808,6 +809,21 @@ protected function setUp() {
     // Execute the non-interactive installer.
     require_once DRUPAL_ROOT . '/core/includes/install.core.inc';
     install_drupal($parameters);
+    if (file_exists(DRUPAL_ROOT . '/sites/default/settings.testing.php')) {
+      // Install made settings.php and the containing directory read-only,
+      // make them writeable again.
+      drupal_verify_install_file($directory, FILE_WRITABLE, 'dir');
+      drupal_verify_install_file($directory . '/settings.php', FILE_WRITABLE);
+      // Copy the testing specific overrides in place.
+      copy(DRUPAL_ROOT . '/sites/default/settings.testing.php', $directory . '/settings.testing.php');
+      // Add the name of the testing class to settings.php and include the
+      // testing specific overrides
+      file_put_contents($directory . '/settings.php', "\n\$test_class = '" . get_class($this) ."';\n" . 'include DRUPAL_ROOT . \'/\' . $conf_path . \'/settings.testing.php\';' ."\n", FILE_APPEND);
+      // Make the files secure again.
+      drupal_verify_install_file($directory . '/settings.php', FILE_NOT_WRITABLE);
+      drupal_verify_install_file($directory . '/settings.testing.php', FILE_NOT_WRITABLE);
+      drupal_verify_install_file($directory, FILE_NOT_WRITABLE, 'dir');
+    }
 
     // Import new settings.php written by the installer.
     drupal_settings_initialize();
@@ -821,7 +837,7 @@ protected function setUp() {
     // directory has to be writable.
     // TestBase::restoreEnvironment() will delete the entire site directory.
     // Not using File API; a potential error must trigger a PHP warning.
-    chmod(DRUPAL_ROOT . '/' . $this->siteDirectory, 0777);
+    chmod($directory, 0777);
 
     $this->rebuildContainer();
 
