Index: includes/install.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/install.inc,v
retrieving revision 1.89
diff -u -r1.89 install.inc
--- includes/install.inc	9 May 2009 18:35:01 -0000	1.89
+++ includes/install.inc	11 May 2009 06:36:08 -0000
@@ -610,6 +610,7 @@
     // Uninstall the module.
     module_load_install($module);
     module_invoke($module, 'uninstall');
+    watchdog('system', '%module module uninstalled.', array('%module' => $module), WATCHDOG_INFO);
 
     // Now remove the menu links for all paths declared by this module.
     if (!empty($paths)) {
Index: includes/module.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/module.inc,v
retrieving revision 1.140
diff -u -r1.140 module.inc
--- includes/module.inc	11 Apr 2009 17:58:17 -0000	1.140
+++ includes/module.inc	11 May 2009 06:36:08 -0000
@@ -258,6 +258,7 @@
         ->execute();
       drupal_load('module', $module);
       $invoke_modules[] = $module;
+      watchdog('system', '%module module enabled.', array('%module' => $module), WATCHDOG_INFO);
     }
   }
 
@@ -309,6 +310,7 @@
         ->condition('name', $module)
         ->execute();
       $invoke_modules[] = $module;
+      watchdog('system', '%module module disabled.', array('%module' => $module), WATCHDOG_INFO);
     }
   }
 
Index: modules/system/system.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.test,v
retrieving revision 1.41
diff -u -r1.41 system.test
--- modules/system/system.test	6 May 2009 10:37:28 -0000	1.41
+++ modules/system/system.test	11 May 2009 06:36:09 -0000
@@ -52,6 +52,21 @@
       $this->assertEqual(module_exists($module), $enabled, t($message, array('@module' => $module)));
     }
   }
+
+  /**
+   * Assert there was a log entry is generated for module status change.
+   *
+   * @param $status
+   *   New status of the module.
+   */
+  function assertModuleLogMessage($status) {
+    $count = db_select('watchdog', 'w')
+      ->condition('message', "%module module $status.", '=')
+      ->countQuery()
+      ->execute()
+      ->fetchField();
+    $this->assertTrue($count > 0, t('watchdog table contains @count rows regarding module status changing to @status', array('@count' => $count, '@status' => $status)));
+  }
 }
 
 /**
@@ -87,6 +102,7 @@
     $this->assertText(t('hook_modules_enabled fired for aggregator'), t('hook_modules_enabled fired.'));
     $this->assertModules(array('aggregator'), TRUE);
     $this->assertTableCount('aggregator', TRUE);
+    $this->assertModuleLogMessage('enabled');
 
     // Disable aggregator, check tables, uninstall aggregator, check tables.
     $edit = array();
@@ -98,6 +114,7 @@
     $this->assertText(t('hook_modules_disabled fired for aggregator'), t('hook_modules_disabled fired.'));
     $this->assertModules(array('aggregator'), FALSE);
     $this->assertTableCount('aggregator', TRUE);
+    $this->assertModuleLogMessage('disabled');
 
     // Uninstall the module.
     $edit = array();
@@ -111,6 +128,7 @@
     $this->assertText(t('hook_modules_uninstalled fired for aggregator'), t('hook_modules_uninstalled fired.'));
     $this->assertModules(array('aggregator'), FALSE);
     $this->assertTableCount('aggregator', FALSE);
+    $this->assertModuleLogMessage('uninstalled');
   }
 }
 
