Index: modules/menu/menu.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/menu/menu.test,v
retrieving revision 1.5
diff -u -r1.5 menu.test
--- modules/menu/menu.test	29 Nov 2008 09:33:51 -0000	1.5
+++ modules/menu/menu.test	18 Mar 2009 13:59:44 -0000
@@ -89,8 +89,10 @@
    */
   function addCustomMenu() {
     // Add custom menu.
+
+    // Try adding a menu using a menu_name that is too long.
     $this->drupalGet('admin/build/menu/add');
-    $menu_name = substr(md5($this->randomName(16)), 0, 20);
+    $menu_name = substr(md5($this->randomName(16)), 0, MENU_MAX_MENU_NAME_LENGTH_UI + 1);
     $title = $this->randomName(16);
     $edit = array (
       'menu_name' => $menu_name,
@@ -98,6 +100,17 @@
       'title' =>  $title,
     );
     $this->drupalPost('admin/build/menu/add', $edit, t('Save'));
+
+    // Verify that using a menu_name that is too long results in a validation message.
+    $this->assertText(format_plural(MENU_MAX_MENU_NAME_LENGTH_UI, "The menu name can't be longer than 1 character.", "The menu name can't be longer than @count characters."), t('Validation failed when menu name is too long.'));
+
+    // Change the menu_name so it no longer exceeds the maximum length.
+    $menu_name = substr(md5($this->randomName(16)), 0, MENU_MAX_MENU_NAME_LENGTH_UI);
+    $edit['menu_name'] = $menu_name;
+    $this->drupalPost('admin/build/menu/add', $edit, t('Save'));
+
+    // Verify that no validation error is given for menu_name length.
+    $this->assertNoText(format_plural(MENU_MAX_MENU_NAME_LENGTH_UI, "The menu name can't be longer than 1 character.", "The menu name can't be longer than @count characters."), t('Validation failed when menu name is too long.'));
     // Unlike most other modules, there is no confirmation message displayed.
 //    $this->assertText(t('The menu settings have been updated.'), t('Menu link was added'));
 
Index: modules/menu/menu.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/menu/menu.admin.inc,v
retrieving revision 1.38
diff -u -r1.38 menu.admin.inc
--- modules/menu/menu.admin.inc	3 Feb 2009 18:55:30 -0000	1.38
+++ modules/menu/menu.admin.inc	18 Mar 2009 13:59:44 -0000
@@ -501,10 +501,11 @@
   if (preg_match('/[^a-z0-9-]/', $item['menu_name'])) {
     form_set_error('menu_name', t('The menu name may only consist of lowercase letters, numbers, and hyphens.'));
   }
-  if (strlen($item['menu_name']) > MENU_MAX_MENU_NAME_LENGTH_UI) {
-    form_set_error('menu_name', format_plural(MENU_MAX_MENU_NAME_LENGTH_UI, "The menu name can't be longer than 1 character.", "The menu name can't be longer than @count characters."));
-  }
   if ($form['#insert']) {
+    if (strlen($item['menu_name']) > MENU_MAX_MENU_NAME_LENGTH_UI) {
+      form_set_error('menu_name', format_plural(MENU_MAX_MENU_NAME_LENGTH_UI, "The menu name can't be longer than 1 character.", "The menu name can't be longer than @count characters."));
+    }
+
     // We will add 'menu-' to the menu name to help avoid name-space conflicts.
     $item['menu_name'] = 'menu-' . $item['menu_name'];
     if (db_result(db_query("SELECT menu_name FROM {menu_custom} WHERE menu_name = '%s'", $item['menu_name'])) ||
