Index: includes/install.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/install.inc,v
retrieving revision 1.146
diff -u -p -r1.146 install.inc
--- includes/install.inc	20 Nov 2010 03:34:30 -0000	1.146
+++ includes/install.inc	22 Nov 2010 17:04:16 -0000
@@ -92,6 +92,10 @@ function drupal_load_updates() {
  *   Otherwise, FALSE.
  */
 function drupal_get_schema_versions($module) {
+  // get_defined_functions() returns all function names in lowercase, to match
+  // those update functions, we lowercase the module name as well.
+  $module = strtolower($module);
+
   $updates = &drupal_static(__FUNCTION__, NULL);
   if (!isset($updates[$module])) {
     $updates = array();
Index: modules/simpletest/tests/Update_Test_4.info
===================================================================
RCS file: modules/simpletest/tests/Update_Test_4.info
diff -N modules/simpletest/tests/Update_Test_4.info
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/simpletest/tests/Update_Test_4.info	22 Nov 2010 17:04:16 -0000
@@ -0,0 +1,9 @@
+; $Id$
+name = "Mixed-case update test"
+description = "Support module for update testing mixed-case module names."
+package = Testing
+version = VERSION
+core = 7.x
+files[] = Update_Test_4.module
+files[] = Update_Test_4.install
+hidden = TRUE
Index: modules/simpletest/tests/Update_Test_4.install
===================================================================
RCS file: modules/simpletest/tests/Update_Test_4.install
diff -N modules/simpletest/tests/Update_Test_4.install
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/simpletest/tests/Update_Test_4.install	22 Nov 2010 17:04:16 -0000
@@ -0,0 +1,25 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Install, update and uninstall functions for the Update_Test_4 module.
+ */
+
+/**
+ * Dummy Update_Test_4 update 7000.
+ */
+function Update_Test_4_update_7000() {
+}
+
+/**
+ * Dummy Update_Test_4 update 7001.
+ */
+function Update_Test_4_update_7001() {
+}
+
+/**
+ * Dummy Update_Test_4 update 7002.
+ */
+function Update_Test_4_update_7002() {
+}
Index: modules/simpletest/tests/Update_Test_4.module
===================================================================
RCS file: modules/simpletest/tests/Update_Test_4.module
diff -N modules/simpletest/tests/Update_Test_4.module
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/simpletest/tests/Update_Test_4.module	22 Nov 2010 17:04:16 -0000
@@ -0,0 +1,2 @@
+<?php
+// $Id$
Index: modules/simpletest/tests/update.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/update.test,v
retrieving revision 1.4
diff -u -p -r1.4 update.test
--- modules/simpletest/tests/update.test	5 Aug 2010 23:53:38 -0000	1.4
+++ modules/simpletest/tests/update.test	22 Nov 2010 17:04:16 -0000
@@ -114,3 +114,33 @@ class UpdateDependencyHookInvocationTest
   }
 }
 
+/**
+ * Tests for updating modules with mixed case names.
+ */
+class UpdateMixedCaseModulesTestCase extends DrupalWebTestCase {
+  public static function getInfo() {
+    return array(
+      'name' => 'Update module with mixed-case name',
+      'description' => 'Test updating of module with mixed-case name.',
+      'group' => 'Update API',
+    );
+  }
+
+  function setUp() {
+    parent::setUp('Update_Test_4');
+    require_once DRUPAL_ROOT . '/includes/install.inc';
+  }
+
+  /**
+   * Test that the update functions for a mixed-case module are found.
+   */
+  function testUpdateFunctionsFound() {
+    $expected_updates = array(
+      '7000',
+      '7001',
+      '7002',
+    );
+    $actual_updates = drupal_get_schema_versions('Update_Test_4');
+    $this->assertEqual($expected_updates, $actual_updates, t('Updates for a module with a mixed-case name are found.'));
+  }
+}
