? modules/simpletest/.DS_Store
? modules/simpletest/tests/.DS_Store
Index: modules/simpletest/tests/menu.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/menu.test,v
retrieving revision 1.11
diff -u -p -r1.11 menu.test
--- modules/simpletest/tests/menu.test	30 May 2009 11:17:32 -0000	1.11
+++ modules/simpletest/tests/menu.test	4 Jul 2009 19:21:06 -0000
@@ -86,8 +86,9 @@ class MenuIncTestCase extends DrupalWebT
     $name = db_query($sql)->fetchField();
     $this->assertEqual($name, 'original', t('Menu name is "original".'));
 
-    // Force a menu rebuild by going to the modules page.
-    $this->drupalGet('admin/build/modules', array('query' => array("hook_menu_name" => 'changed')));
+    // Change the menu_name parameter in menu_test.module, then force a menu rebuild
+    menu_test_menu_name('changed');
+    menu_rebuild();
 
     $sql = "SELECT menu_name FROM {menu_links} WHERE router_path = 'menu_name_test'";
     $name = db_query($sql)->fetchField();
Index: modules/simpletest/tests/menu_test.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/menu_test.module,v
retrieving revision 1.5
diff -u -p -r1.5 menu_test.module
--- modules/simpletest/tests/menu_test.module	27 May 2009 18:34:00 -0000	1.5
+++ modules/simpletest/tests/menu_test.module	4 Jul 2009 19:21:06 -0000
@@ -14,7 +14,7 @@ function menu_test_menu() {
   $items['menu_name_test'] = array(
     'title' => 'Test menu_name router item',
     'page callback' => 'node_save',
-    'menu_name' => isset($_GET["hook_menu_name"]) ? $_GET["hook_menu_name"] : 'original',
+    'menu_name' => menu_test_menu_name(),
   );
   // Use FALSE as 'title callback' to bypass t().
   $items['menu_no_title_callback'] = array(
@@ -56,3 +56,19 @@ function menu_test_menu() {
 function menu_test_callback() {
   return $this->randomName();
 }
+
+/**
+ * Helper function for the testMenuName() test. Used to change the menu_name parameter of a menu.
+ *
+ * @param $new_name 
+ *   If set, will change the menu_name value.
+ * @return 
+ *   The menu_name value to use.
+ */
+function menu_test_menu_name($new_name = '') {
+  static $name = 'original';
+  if ($new_name) {
+    $name = $new_name;
+  }
+  return $name;
+}
\ No newline at end of file
Index: modules/system/system.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.admin.inc,v
retrieving revision 1.158
diff -u -p -r1.158 system.admin.inc
--- modules/system/system.admin.inc	19 Jun 2009 20:35:05 -0000	1.158
+++ modules/system/system.admin.inc	4 Jul 2009 19:21:08 -0000
@@ -574,11 +574,6 @@ function _system_is_incompatible(&$incom
  *   The form array.
  */
 function system_modules($form_state = array()) {
-  // Clear all caches.
-  registry_rebuild();
-  drupal_theme_rebuild();
-  node_types_rebuild();
-  cache_clear_all('schema', 'cache');
   // Get current list of modules.
   $files = system_get_module_data();
 
@@ -931,6 +926,11 @@ function system_modules_submit($form, &$
     drupal_set_message(t('The configuration options have been saved.'));
   }
 
+  // Clear all caches.
+  registry_rebuild();
+  drupal_theme_rebuild();
+  node_types_rebuild();
+  cache_clear_all('schema', 'cache');
   drupal_clear_css_cache();
   drupal_clear_js_cache();
 
