Index: modules/simpletest/tests/menu.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/menu.test,v
retrieving revision 1.2
diff -u -p -r1.2 menu.test
--- modules/simpletest/tests/menu.test	15 Sep 2008 20:48:09 -0000	1.2
+++ modules/simpletest/tests/menu.test	9 Oct 2008 15:31:11 -0000
@@ -45,3 +45,39 @@ class MenuIncTestCase extends DrupalWebT
     $this->assertEqual($name, 'changed', t('Menu name was successfully changed after rebuild.'));
   }
 }
+
+class MenuRebuildCase extends DrupalWebTestCase {
+  /**
+   * Implementation of getInfo().
+   */
+  function getInfo() {
+    return array(
+      'name' => t('Menu rebuild test'),
+      'description' => t('Test rebuilding of menu.'),
+      'group' => t('Menu'),
+    );
+  }
+  
+  /**
+   * Test if the 'menu_rebuild_needed' variable triggers
+   * an menu_rebuild() call.
+   */
+  function testMenuRebuildByVariable() {
+    // Check if 'admin' exists
+    $adminexists = db_result(db_query("SELECT path from {menu_router} WHERE path='admin'"));
+    $this->assertEqual($adminexists, 'admin', t("The path 'admin/' exists prior to deleting."));
+    
+    // Delete the path item 'admin', and test that the path doesn't exist in the database
+    db_delete('menu_router', array('path' => 'admin'))->execute();
+    $adminexists = db_result(db_query("SELECT path from {menu_router} WHERE path='admin'"));
+    $this->assertFalse($adminexists, t("The path 'admin/' has been deleted and doesn't exist in the database."));
+    
+    // Now we enable the rebuild variable and trigger menu_execute_active_handler()
+    // to rebuild the menu item. Now 'admin' should exist.
+    variable_set('menu_rebuild_needed', TRUE);
+    $this->drupalGet('<front>');// menu_execute_active_handler() should trigger the rebuild.
+    $adminexists = db_result(db_query("SELECT path from {menu_router} WHERE path='admin'"));
+    $this->assertEqual($adminexists, 'admin', t("The menu get's rebuilded, the path 'admin' now exists again."));
+  }
+  
+}
\ No newline at end of file
