From 447d6a628bde3891a4be70a3d9131023214d00f3 Mon Sep 17 00:00:00 2001 From: webchick Date: Tue, 28 Feb 2012 10:22:59 -0800 Subject: Issue #1430300 by mradcliffe, xjm, effulgentsia, NROTC_Webmaster: Fixed Preprocess functions in an include file fail to get called when the theme implements a suggestion override. --- modules/simpletest/tests/theme.test | 16 ++++++++++++---- modules/simpletest/tests/theme_test.inc | 15 +++++++++++++++ modules/simpletest/tests/theme_test.module | 16 +++++----------- modules/simpletest/tests/themes/test_theme/template.php | 6 ++---- 4 files changed, 34 insertions(+), 19 deletions(-) create mode 100644 modules/simpletest/tests/theme_test.inc (limited to 'modules/simpletest/tests') diff --git a/modules/simpletest/tests/theme.test b/modules/simpletest/tests/theme.test index af1141124..19775a7f8 100644 --- a/modules/simpletest/tests/theme.test +++ b/modules/simpletest/tests/theme.test @@ -52,11 +52,19 @@ class ThemeUnitTest extends DrupalWebTestCase { } /** - * Preprocess functions for the base hook should run even for suggestion implementations. - */ + * Ensures preprocess functions run even for suggestion implementations. + * + * The theme hook used by this test has its base preprocess function in a + * separate file, so this test also ensures that that file is correctly loaded + * when needed. + */ function testPreprocessForSuggestions() { - $this->drupalGet('theme-test/suggestion'); - $this->assertText('test_theme_breadcrumb__suggestion: 1', t('Theme hook suggestion ran with data available from a preprocess function for the base hook.')); + // Test with both an unprimed and primed theme registry. + drupal_theme_rebuild(); + for ($i = 0; $i < 2; $i++) { + $this->drupalGet('theme-test/suggestion'); + $this->assertText('Theme hook implementor=test_theme_theme_test__suggestion(). Foo=template_preprocess_theme_test', 'Theme hook suggestion ran with data available from a preprocess function for the base hook.'); + } } /** diff --git a/modules/simpletest/tests/theme_test.inc b/modules/simpletest/tests/theme_test.inc new file mode 100644 index 000000000..6cde68384 --- /dev/null +++ b/modules/simpletest/tests/theme_test.inc @@ -0,0 +1,15 @@ + 'theme_test.inc', + 'variables' => array('foo' => ''), + ); $items['theme_test_template_test'] = array( 'template' => 'theme_test.template_test', ); $items['theme_test_template_test_2'] = array( 'template' => 'theme_test.template_test', ); - return $items; } @@ -115,14 +118,5 @@ function _theme_test_alter() { * Page callback, calls a theme hook suggestion. */ function _theme_test_suggestion() { - return theme(array('breadcrumb__suggestion', 'breadcrumb'), array()); -} - -/** - * Implements hook_preprocess_breadcrumb(). - * - * Set a variable that can later be tested to see if this function ran. - */ -function theme_test_preprocess_breadcrumb(&$variables) { - $variables['theme_test_preprocess_breadcrumb'] = 1; + return theme(array('theme_test__suggestion', 'theme_test'), array()); } diff --git a/modules/simpletest/tests/themes/test_theme/template.php b/modules/simpletest/tests/themes/test_theme/template.php index ef8118a6d..8275818e4 100644 --- a/modules/simpletest/tests/themes/test_theme/template.php +++ b/modules/simpletest/tests/themes/test_theme/template.php @@ -3,10 +3,8 @@ /** * Tests a theme overriding a suggestion of a base theme hook. */ -function test_theme_breadcrumb__suggestion($variables) { - // Tests that preprocess functions for the base theme hook get called even - // when the suggestion has an implementation. - return 'test_theme_breadcrumb__suggestion: ' . $variables['theme_test_preprocess_breadcrumb']; +function test_theme_theme_test__suggestion($variables) { + return 'Theme hook implementor=test_theme_theme_test__suggestion(). Foo=' . $variables['foo']; } /** -- cgit v1.2.3