? book.dbtng_.followup_0.patch
? search_404_1.patch
? sites/default/files
? sites/default/settings.php
Index: includes/form.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/form.inc,v
retrieving revision 1.320
diff -u -p -r1.320 form.inc
--- includes/form.inc	3 Feb 2009 18:55:29 -0000	1.320
+++ includes/form.inc	2 Mar 2009 09:13:50 -0000
@@ -629,6 +629,12 @@ function drupal_redirect_form($form, $re
   }
   if (!isset($goto) || ($goto !== FALSE)) {
     if (isset($goto)) {
+      // Remove any fake destination set by drupal_not_found() or
+      // drupal_access_denied() so that we can properly redirect from those
+      // pages.
+      if (isset($_REQUEST['destination']) && $_REQUEST['destination'] == $_GET['q']) {
+        unset($_REQUEST['destination']);
+      }
       if (is_array($goto)) {
         call_user_func_array('drupal_goto', $goto);
       }
Index: modules/search/search.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/search/search.test,v
retrieving revision 1.15
diff -u -p -r1.15 search.test
--- modules/search/search.test	22 Jan 2009 04:49:58 -0000	1.15
+++ modules/search/search.test	2 Mar 2009 09:13:50 -0000
@@ -383,8 +383,13 @@ class SearchBlockTestCase extends Drupal
     parent::setUp('search');
 
     // Create and login user
-    $admin_user = $this->drupalCreateUser(array('administer blocks'));
+    $admin_user = $this->drupalCreateUser(array('administer blocks', 'search content'));
     $this->drupalLogin($admin_user);
+    
+    // Disable the theme form to avoid confusion.
+    $settings = theme_get_settings();
+    $settings['toggle_search'] = FALSE;
+    variable_set('theme_settings', $settings);
   }
 
   function testSearchFormBlock() {
@@ -398,4 +403,29 @@ class SearchBlockTestCase extends Drupal
     $this->drupalPost('admin/build/block', $edit, t('Save blocks'));
     $this->assertText(t('The block settings have been updated.'), t('Block successfully move to footer region.'));
   }
+  
+  /**
+   * Test that the search block form works correctly.
+   */
+  function testBlock() {
+    // Enable the block, and place it in the 'content' region so that it isn't
+    // hidden on 404 pages.
+    $edit = array('search_form[region]' => 'content');
+    $this->drupalPost('admin/build/block', $edit, t('Save blocks'));
+
+    // Test a normal search via the block form, from the front page.
+    $terms = array('search_block_form' => 'test');
+    $this->drupalPost('node', $terms, t('Search'));
+    $this->assertText('Your search yielded no results');
+
+    // Test a search from the block on a 404 page.
+    $this->drupalPost('foo', $terms, t('Search'));
+    $this->assertText('Your search yielded no results');
+
+    // Test a search from the block when it doesn't appear on the search page.
+    $edit = array('pages' => 'search');
+    $this->drupalPost('admin/build/block/configure/search/form', $edit, t('Save block'));
+    $this->drupalPost('node', $terms, t('Search'));
+    $this->assertText('Your search yielded no results');
+  }
 }
