summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2008-11-22 13:33:00 +0000
committerDries Buytaert <dries@buytaert.net>2008-11-22 13:33:00 +0000
commit653e63bd05b3027797fff3d23377f448e47becfb (patch)
tree20c8fcedcad77d14a6c51222a34f3beb1031b046 /modules
parentf8d3bf979817397c6b57bb7296e905b5e0d2be5e (diff)
downloadbrdo-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')
-rw-r--r--modules/simpletest/tests/bootstrap.test74
-rw-r--r--modules/simpletest/tests/system_test.module14
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() {