diff --git a/core/includes/theme.inc b/core/includes/theme.inc
index 7d638f6..e8d704c 100644
--- a/core/includes/theme.inc
+++ b/core/includes/theme.inc
@@ -60,8 +60,7 @@ function drupal_theme_access($theme) {
  * @see drupal_theme_access()
  */
 function _drupal_theme_access($theme) {
-  $admin_theme = variable_get('admin_theme');
-  return !empty($theme->status) || ($admin_theme && $theme->name == $admin_theme);
+  return !empty($theme->status);
 }
 
 /**
diff --git a/core/modules/block/block.module b/core/modules/block/block.module
index 97f59e9..b0ee304 100644
--- a/core/modules/block/block.module
+++ b/core/modules/block/block.module
@@ -177,7 +177,7 @@ function block_menu() {
 }
 
 /**
- * Access callback: Only admin or enabled themes can be accessed.
+ * Access callback: Only enabled themes can be accessed.
  *
  * Path:
  * - admin/structure/block/list/% (for each theme)
diff --git a/core/modules/block/lib/Drupal/block/Tests/BlockAdminThemeTest.php b/core/modules/block/lib/Drupal/block/Tests/BlockAdminThemeTest.php
deleted file mode 100644
index 0397802..0000000
--- a/core/modules/block/lib/Drupal/block/Tests/BlockAdminThemeTest.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-/**
- * @file
- * Definition of Drupal\block\Tests\BlockAdminThemeTest.
- */
-
-namespace Drupal\block\Tests;
-
-use Drupal\simpletest\WebTestBase;
-
-/**
- * Test the block system with admin themes.
- */
-class BlockAdminThemeTest extends WebTestBase {
-  public static function getInfo() {
-    return array(
-      'name' => 'Admin theme block admin accessibility',
-      'description' => "Check whether the block administer page for a disabled theme accessible if and only if it's the admin theme.",
-      'group' => 'Block',
-    );
-  }
-
-  function setUp() {
-    parent::setUp(array('block'));
-  }
-
-  /**
-   * Check for the accessibility of the admin theme on the  block admin page.
-   */
-  function testAdminTheme() {
-    // Create administrative user.
-    $admin_user = $this->drupalCreateUser(array('administer blocks', 'administer themes'));
-    $this->drupalLogin($admin_user);
-
-    // Ensure that access to block admin page is denied when theme is disabled.
-    $this->drupalGet('admin/structure/block/list/bartik');
-    $this->assertResponse(403, t('The block admin page for a disabled theme can not be accessed'));
-
-    // Enable admin theme and confirm that tab is accessible.
-    $edit['admin_theme'] = 'bartik';
-    $this->drupalPost('admin/appearance', $edit, t('Save configuration'));
-    $this->drupalGet('admin/structure/block/list/bartik');
-    $this->assertResponse(200, t('The block admin page for the admin theme can be accessed'));
-  }
-}
diff --git a/core/modules/block/lib/Drupal/block/Tests/DisabledBlockAdminTest.php b/core/modules/block/lib/Drupal/block/Tests/DisabledBlockAdminTest.php
new file mode 100644
index 0000000..3ab8f33
--- /dev/null
+++ b/core/modules/block/lib/Drupal/block/Tests/DisabledBlockAdminTest.php
@@ -0,0 +1,40 @@
+<?php
+
+/**
+ * @file
+ * Definition of Drupal\block\Tests\DisabledBlockAdminTest.
+ */
+
+namespace Drupal\block\Tests;
+
+use Drupal\simpletest\WebTestBase;
+
+/**
+ * Test the block system with admin themes.
+ */
+class DisabledBlockAdminTest extends WebTestBase {
+  public static function getInfo() {
+    return array(
+      'name' => 'Disabled theme admin',
+      'description' => "Check the administer page for disabled theme.",
+      'group' => 'Block',
+    );
+  }
+
+  function setUp() {
+    parent::setUp(array('block'));
+  }
+
+  /**
+   * Check for the accessibility of the admin theme on the  block admin page.
+   */
+  function testAdminTheme() {
+    // Create administrative user.
+    $admin_user = $this->drupalCreateUser(array('administer blocks', 'administer themes'));
+    $this->drupalLogin($admin_user);
+
+    // Ensure that access to block admin page is denied when theme is disabled.
+    $this->drupalGet('admin/structure/block/list/bartik');
+    $this->assertResponse(403, t('The block admin page for a disabled theme can not be accessed.'));
+  }
+}
diff --git a/core/modules/simpletest/simpletest.module b/core/modules/simpletest/simpletest.module
index 38c360b..7150b3d 100644
--- a/core/modules/simpletest/simpletest.module
+++ b/core/modules/simpletest/simpletest.module
@@ -609,6 +609,9 @@ function simpletest_verbose($message, $original_file_directory = NULL, $test_cla
     $writable = file_prepare_directory($directory, FILE_CREATE_DIRECTORY);
     if ($writable && !file_exists($directory . '/.htaccess')) {
       file_put_contents($directory . '/.htaccess', "<IfModule mod_expires.c>\nExpiresActive Off\n</IfModule>\n");
+      // Create the message directory for a given test.
+      $class_directory = $directory . '/' . drupal_substr($class, 0, strrpos($class, '\\'));
+      file_prepare_directory($class_directory, FILE_CREATE_DIRECTORY);
     }
     return $writable;
   }
diff --git a/core/modules/system/system.admin.inc b/core/modules/system/system.admin.inc
index a31e278..68d0d5e 100644
--- a/core/modules/system/system.admin.inc
+++ b/core/modules/system/system.admin.inc
@@ -122,7 +122,6 @@ function system_themes_page() {
     if (!empty($theme->info['hidden'])) {
       continue;
     }
-    $admin_theme_options[$theme->name] = $theme->info['name'];
     $theme->is_default = ($theme->name == $theme_default);
 
     // Identify theme screenshot.
@@ -182,6 +181,7 @@ function system_themes_page() {
             'attributes' => array('title' => t('Set !theme as default theme', array('!theme' => $theme->info['name']))),
           );
         }
+        $admin_theme_options[$theme->name] = $theme->info['name'];
       }
       else {
         $theme->operations[] = array(
@@ -294,7 +294,7 @@ function system_theme_disable() {
 
     // Check if the specified theme is one recognized by the system.
     if (!empty($themes[$theme])) {
-      if ($theme == variable_get('theme_default', 'stark')) {
+      if ($theme == variable_get('theme_default', 'stark') || $theme == variable_get('admin_theme', 0)) {
         // Don't disable the default theme.
         drupal_set_message(t('%theme is the default theme and cannot be disabled.', array('%theme' => $themes[$theme]->info['name'])), 'error');
       }
diff --git a/core/modules/system/system.module b/core/modules/system/system.module
index 5394830..bcc44d1 100644
--- a/core/modules/system/system.module
+++ b/core/modules/system/system.module
@@ -1779,7 +1779,7 @@ function blocked_ip_load($iid) {
 }
 
 /**
- * Menu item access callback - only admin or enabled themes can be accessed.
+ * Menu item access callback - only enabled themes can be accessed.
  */
 function _system_themes_access($theme) {
   return user_access('administer themes') && drupal_theme_access($theme);
diff --git a/core/modules/system/system.test b/core/modules/system/system.test
index 9d25130..a44423b 100644
--- a/core/modules/system/system.test
+++ b/core/modules/system/system.test
@@ -1870,6 +1870,9 @@ class SystemThemeFunctionalTest extends WebTestBase {
   function testAdministrationTheme() {
     theme_enable(array('stark'));
     variable_set('theme_default', 'stark');
+
+    // Make seven available as a theme option.
+    theme_enable(array('seven'));
     // Enable an administration theme and show it on the node admin pages.
     $edit = array(
       'admin_theme' => 'seven',
