? modules/simpletest/tests/343502.test
Index: includes/common.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/common.inc,v
retrieving revision 1.836
diff -u -p -r1.836 common.inc
--- includes/common.inc	9 Dec 2008 11:09:26 -0000	1.836
+++ includes/common.inc	11 Dec 2008 10:04:27 -0000
@@ -1781,6 +1781,9 @@ function drupal_page_footer() {
 
   module_invoke_all('exit');
 
+  // Clear messages.
+  drupal_get_messages(NULL, TRUE);
+
   module_implements(MODULE_IMPLEMENTS_WRITE_CACHE);
   _registry_check_code(REGISTRY_WRITE_LOOKUP_CACHE);
 }
Index: includes/theme.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/theme.inc,v
retrieving revision 1.455
diff -u -p -r1.455 theme.inc
--- includes/theme.inc	7 Dec 2008 09:32:58 -0000	1.455
+++ includes/theme.inc	11 Dec 2008 10:04:28 -0000
@@ -1112,7 +1112,7 @@ function theme_placeholder($text) {
  */
 function theme_status_messages($display = NULL) {
   $output = '';
-  foreach (drupal_get_messages($display) as $type => $messages) {
+  foreach (drupal_get_messages($display, FALSE) as $type => $messages) {
     $output .= "<div class=\"messages $type\">\n";
     if (count($messages) > 1) {
       $output .= " <ul>\n";
Index: modules/simpletest/tests/cache.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/cache.test,v
retrieving revision 1.3
diff -u -p -r1.3 cache.test
--- modules/simpletest/tests/cache.test	8 Dec 2008 21:41:54 -0000	1.3
+++ modules/simpletest/tests/cache.test	11 Dec 2008 10:04:29 -0000
@@ -101,6 +101,85 @@ class CacheTestCase extends DrupalWebTes
   }
 }
 
+/**
+ * Test page caching.
+ */
+class CachePageCase extends CacheTestCase {
+
+  function getInfo() {
+    return array(
+      'name' => t('Cache page test'),
+      'description' => t('Check caching of pages and conditions for not caching pages.'),
+      'group' => t('Cache'),
+    );
+  }
+
+  function setUp() {
+    parent::setUp('system_test');
+
+    // Enable caching and clear the page cache.
+    variable_set('cache', CACHE_NORMAL);
+    cache_clear_all('*', 'cache_page');
+  }
+
+  /**
+   * Test that pages with messages are not cached.
+   */
+  function testNoCacheMessages() {
+    // View the front page with a message on it and test it was not cached.
+    variable_set('front_page_output', 1);
+    $this->drupalGet('');
+    $this->assertText(t('On front page.'), t('Message found.'));
+    $cache = cache_get(url('', array('absolute' => TRUE)), 'cache_page');
+    $this->assertFalse($cache, t('Page has not been cached.'));
+
+    // View the front page without a message on it and test it was cached.
+    variable_set('front_page_output', 0);
+    $this->drupalGet('');
+    $this->assertNoText(t('On front page.'), t('Message not found.'));
+    $cache = cache_get(url('', array('absolute' => TRUE)), 'cache_page');
+    $this->assertTrue($cache, t('Page has been cached.'));
+  }
+
+  /**
+   * Test that pages viewed by logged in users are not cached.
+   */
+  function testNoCacheLoggedIn() {
+    // Create a user, log in, and test that the request was not cached.
+    $this->user = $this->drupalCreateUser(array('access content'));
+    $this->drupalLogin($this->user);
+    $this->drupalGet('');
+    $cache = cache_get(url('', array('absolute' => TRUE)), 'cache_page');
+    $this->assertFalse($cache, t('Page has not been cached.'));
+
+    // Logout and check that the next request is cached.
+    $this->drupalLogout();
+    $this->drupalGet('');
+    $cache = cache_get(url('', array('absolute' => TRUE)), 'cache_page');
+    $this->assertTrue($cache, t('Page has been cached.'));
+  }
+
+  /**
+   * Test that POST and HEAD requests are not cached.
+   */
+  function testNoCachePostHead() {
+    // Make a POST request and test it was not cached.
+    $this->drupalPost(NULL, array(), t('Log in'));
+    $cache = cache_get(url('', array('absolute' => TRUE)), 'cache_page');
+    $this->assertFalse($cache, t('Page has not been cached.'));
+
+    // Make a HEAD request and test it was not cached.
+    $this->drupalHead('');
+    $cache = cache_get(url('', array('absolute' => TRUE)), 'cache_page');
+    $this->assertFalse($cache, t('Page has not been cached.'));
+
+    // Make a GET request and test it was cached.
+    $this->drupalGet('');
+    $cache = cache_get(url('', array('absolute' => TRUE)), 'cache_page');
+    $this->assertTrue($cache, t('Page has been cached.'));
+  }
+}
+
 class CacheSavingCase extends CacheTestCase {
   function getInfo() {
     return array(
@@ -224,4 +303,4 @@ class CacheClearCase extends CacheTestCa
                       || $this->checkCacheExists('test_cid_clear2', $this->default_value),
                       t('Two caches removed after clearing cid substring with wildcard true.'));
   }
-}
\ No newline at end of file
+}
