diff --git a/core/modules/system/lib/Drupal/system/Tests/Theme/ThemeTest.php b/core/modules/system/lib/Drupal/system/Tests/Theme/ThemeTest.php
index 5267300..e9235be 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Theme/ThemeTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Theme/ThemeTest.php
@@ -129,6 +129,22 @@ function testCSSOverride() {
   }
 
   /**
+   * Ensures a subtheme's .info file inherits properties from its base theme(s).
+   *
+   * @see test_basetheme.info
+   * @see test_subtheme.info
+   * @see test_grandchildtheme.info
+   */
+  function testInfoInheritance() {
+    $subtheme_regions = system_region_list('test_subtheme');
+    $this->assertTrue(isset($subtheme_regions['basetheme_region']), 'Region added to base theme was found in subtheme.');
+
+    $grandchildtheme_regions = system_region_list('test_grandchildtheme');
+    $this->assertTrue(isset($grandchildtheme_regions['basetheme_region']), 'Region added to base theme was found in grandchild theme.');
+    $this->assertTrue(isset($grandchildtheme_regions['subtheme_region']), 'Region added to subtheme was found in grandchild theme.');
+  }
+
+  /**
    * Ensures a themes template is overrideable based on the 'template' filename.
    */
   function testTemplateOverride() {
@@ -148,7 +164,7 @@ function testListThemes() {
     $this->assertTrue(array_key_exists('test_basetheme', $themes), 'Disabled theme detected');
     // Check for base theme and subtheme lists.
     $base_theme_list = array('test_basetheme' => 'Theme test base theme');
-    $sub_theme_list = array('test_subtheme' => 'Theme test subtheme');
+    $sub_theme_list = array('test_subtheme' => 'Theme test subtheme', 'test_grandchildtheme' => 'Theme test grandchild theme');
     $this->assertIdentical($themes['test_basetheme']->sub_themes, $sub_theme_list, 'Base theme\'s object includes list of subthemes.');
     $this->assertIdentical($themes['test_subtheme']->base_themes, $base_theme_list, 'Subtheme\'s object includes list of base themes.');
     // Check for theme engine in subtheme.
diff --git a/core/modules/system/tests/modules/theme_test/theme_test.module b/core/modules/system/tests/modules/theme_test/theme_test.module
index 73ff44b..cd327f0 100644
--- a/core/modules/system/tests/modules/theme_test/theme_test.module
+++ b/core/modules/system/tests/modules/theme_test/theme_test.module
@@ -27,6 +27,7 @@ function theme_test_system_theme_info() {
   $themes['test_theme'] = drupal_get_path('module', 'system') . '/tests/themes/test_theme/test_theme.info';
   $themes['test_basetheme'] = drupal_get_path('module', 'system') . '/tests/themes/test_basetheme/test_basetheme.info';
   $themes['test_subtheme'] = drupal_get_path('module', 'system') . '/tests/themes/test_subtheme/test_subtheme.info';
+  $themes['test_grandchildtheme'] = drupal_get_path('module', 'system') . '/tests/themes/test_grandchildtheme/test_grandchildtheme.info';
   $themes['test_theme_twig'] = drupal_get_path('module', 'system') . '/tests/themes/test_theme_twig/test_theme_twig.info';
   return $themes;
 }
diff --git a/core/modules/system/tests/themes/test_basetheme/test_basetheme.info b/core/modules/system/tests/themes/test_basetheme/test_basetheme.info
index 24b1db6..28270df 100644
--- a/core/modules/system/tests/themes/test_basetheme/test_basetheme.info
+++ b/core/modules/system/tests/themes/test_basetheme/test_basetheme.info
@@ -3,6 +3,15 @@ description = Test theme which acts as a base theme for other test subthemes.
 core = 8.x
 hidden = TRUE
 
+regions[sidebar_first] = Left sidebar
+regions[sidebar_second] = Right sidebar
+regions[content] = Content
+regions[header] = Header
+regions[footer] = Footer
+regions[highlighted] = Highlighted
+regions[help] = Help
+regions[basetheme_region] = Region added to base theme
+
 ; Unlike test_subtheme, the base theme does not use a ./css subdirectory.
 stylesheets[all][] = base-add.css
 stylesheets[all][] = base-add.sub-override.css
diff --git a/core/modules/system/tests/themes/test_grandchildtheme/test_grandchildtheme.info b/core/modules/system/tests/themes/test_grandchildtheme/test_grandchildtheme.info
new file mode 100644
index 0000000..320b565
--- /dev/null
+++ b/core/modules/system/tests/themes/test_grandchildtheme/test_grandchildtheme.info
@@ -0,0 +1,5 @@
+name = Theme test grandchild theme
+description = Test theme which uses test_subtheme as the base theme.
+core = 8.x
+base theme = test_subtheme
+hidden = TRUE
diff --git a/core/modules/system/tests/themes/test_subtheme/test_subtheme.info b/core/modules/system/tests/themes/test_subtheme/test_subtheme.info
index a4590ce..e9f7ee1 100644
--- a/core/modules/system/tests/themes/test_subtheme/test_subtheme.info
+++ b/core/modules/system/tests/themes/test_subtheme/test_subtheme.info
@@ -4,6 +4,8 @@ core = 8.x
 base theme = test_basetheme
 hidden = TRUE
 
+regions[subtheme_region] = Region added to subtheme
+
 ; Unlike test_basetheme (and the original module CSS), this subtheme decides to
 ; put all of its CSS into a ./css subdirectory. All overrides and removals are
 ; expected to be based on a file's basename and should work nevertheless.
