diff options
author | Dries Buytaert <dries@buytaert.net> | 2008-11-22 13:33:00 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2008-11-22 13:33:00 +0000 |
commit | 653e63bd05b3027797fff3d23377f448e47becfb (patch) | |
tree | 20c8fcedcad77d14a6c51222a34f3beb1031b046 /modules/simpletest | |
parent | f8d3bf979817397c6b57bb7296e905b5e0d2be5e (diff) | |
download | brdo-653e63bd05b3027797fff3d23377f448e47becfb.tar.gz brdo-653e63bd05b3027797fff3d23377f448e47becfb.tar.bz2 |
- Patch #323474 by Dave Reid and catch: hook_boot() was not invoked on uncached page views if cache mode is aggressive.
Diffstat (limited to 'modules/simpletest')
-rw-r--r-- | modules/simpletest/tests/bootstrap.test | 74 | ||||
-rw-r--r-- | modules/simpletest/tests/system_test.module | 14 |
2 files changed, 70 insertions, 18 deletions
diff --git a/modules/simpletest/tests/bootstrap.test b/modules/simpletest/tests/bootstrap.test index 638d6b89f..82e1ee0da 100644 --- a/modules/simpletest/tests/bootstrap.test +++ b/modules/simpletest/tests/bootstrap.test @@ -3,9 +3,6 @@ class BootstrapIPAddressTestCase extends DrupalWebTestCase { - /** - * Implementation of getInfo(). - */ function getInfo() { return array( 'name' => t('IP address and HTTP_HOST test'), @@ -14,9 +11,6 @@ class BootstrapIPAddressTestCase extends DrupalWebTestCase { ); } - /** - * Implementation of setUp(). - */ function setUp() { $this->oldserver = $_SERVER; @@ -33,9 +27,6 @@ class BootstrapIPAddressTestCase extends DrupalWebTestCase { parent::setUp(); } - /** - * Implementation of tearDown(). - */ function tearDown() { $_SERVER = $this->oldserver; parent::tearDown(); @@ -95,9 +86,6 @@ class BootstrapIPAddressTestCase extends DrupalWebTestCase { class BootstrapPageCacheTestCase extends DrupalWebTestCase { - /** - * Implementation of getInfo(). - */ function getInfo() { return array( 'name' => t('Page cache test'), @@ -121,16 +109,10 @@ class BootstrapPageCacheTestCase extends DrupalWebTestCase { class BootstrapVariableTestCase extends DrupalWebTestCase { - /** - * Implementation of setUp(). - */ function setUp() { parent::setUp('system_test'); } - /** - * Implementation of getInfo(). - */ function getInfo() { return array( 'name' => t('Variable test'), @@ -160,3 +142,59 @@ class BootstrapVariableTestCase extends DrupalWebTestCase { } } + +/** + * Test hook_boot and hook_exit. + */ +class HookBootExitTestCase extends DrupalWebTestCase { + + function getInfo() { + return array( + 'name' => t('Boot and exit hook functionality'), + 'description' => t('Test that hook_boot() and hook_exit() are called correctly.'), + 'group' => t('Bootstrap'), + ); + } + + function setUp() { + parent::setUp('system_test', 'dblog'); + } + + /** + * Test calling of hook_boot() and hook_exit(). + */ + function testHookBootExit() { + // Test with cache disabled. Boot and exit should always fire. Initialize + // the number of hook calls to one since the first call to two since the + // first call to drupalGet actually performs two HTTP requests. + variable_set('cache', CACHE_DISABLED); + $this->drupalGet(''); + $calls = 2; + $this->assertEqual(db_query("SELECT COUNT(*) FROM {watchdog} WHERE type = 'system_test' AND message = 'hook_boot'")->fetchField(), $calls, t('hook_boot called with disabled cache.')); + $this->assertEqual(db_query("SELECT COUNT(*) FROM {watchdog} WHERE type = 'system_test' AND message = 'hook_exit'")->fetchField(), $calls, t('hook_exit called with disabled cache.')); + + // Test with normal cache. Boot and exit should be called. + variable_set('cache', CACHE_NORMAL); + $this->drupalGet(''); + $calls++; + $this->assertEqual(db_query("SELECT COUNT(*) FROM {watchdog} WHERE type = 'system_test' AND message = 'hook_boot'")->fetchField(), $calls, t('hook_boot called with normal cache.')); + $this->assertEqual(db_query("SELECT COUNT(*) FROM {watchdog} WHERE type = 'system_test' AND message = 'hook_exit'")->fetchField(), $calls, t('hook_exit called with normal cache.')); + + // Test with aggressive cache. Boot and exit should only fire if there is + // no page cached. + variable_set('cache', CACHE_AGGRESSIVE); + $this->assertTrue(cache_get(url('', array('absolute' => TRUE)), 'cache_page'), t('Page has been cached.')); + $this->drupalGet(''); + $this->assertEqual(db_query("SELECT COUNT(*) FROM {watchdog} WHERE type = 'system_test' AND message = 'hook_boot'")->fetchField(), $calls, t('hook_boot not called with agressive cache and a cached page.')); + $this->assertEqual(db_query("SELECT COUNT(*) FROM {watchdog} WHERE type = 'system_test' AND message = 'hook_exit'")->fetchField(), $calls, t('hook_exit not called with agressive cache and a cached page.')); + + // Test with aggressive cache and page cache cleared. Boot and exit should + // be called. + $this->assertTrue(db_delete('cache_page')->execute(), t('Page cache cleared.')); + $this->drupalGet(''); + $calls++; + $this->assertEqual(db_query("SELECT COUNT(*) FROM {watchdog} WHERE type = 'system_test' AND message = 'hook_boot'")->fetchField(), $calls, t('hook_boot called with agressive cache and no cached page.')); + $this->assertEqual(db_query("SELECT COUNT(*) FROM {watchdog} WHERE type = 'system_test' AND message = 'hook_exit'")->fetchField(), $calls, t('hook_exit called with agressive cache and no cached page.')); + } +} + diff --git a/modules/simpletest/tests/system_test.module b/modules/simpletest/tests/system_test.module index 2134359d2..fadc05e3c 100644 --- a/modules/simpletest/tests/system_test.module +++ b/modules/simpletest/tests/system_test.module @@ -143,6 +143,20 @@ function system_test_modules_uninstalled($modules) { } /** + * Implementation of hook_boot(). + */ +function system_test_boot() { + watchdog('system_test', 'hook_boot'); +} + +/** + * Implementation of hook_exit(). + */ +function system_test_exit() { + watchdog('system_test', 'hook_exit'); +} + +/** * Menu callback; generate warnings to test the error handler. */ function system_test_generate_warnings() { |