diff --git a/libraries.info b/libraries.info
index c01fa0a..439cb3c 100644
--- a/libraries.info
+++ b/libraries.info
@@ -1,4 +1,6 @@
 name = Libraries
 description = Allows version-dependent and shared usage of external libraries.
 core = 7.x
+; We use hook_system_theme_info() which was added in Drupal 7.11
+dependencies[] = system (>=7.11)
 files[] = tests/libraries.test
diff --git a/tests/libraries.test b/tests/libraries.test
index 4274062..ab1d9b8 100644
--- a/tests/libraries.test
+++ b/tests/libraries.test
@@ -73,6 +73,7 @@ class LibrariesTestCase extends DrupalWebTestCase {
 
   function setUp() {
     parent::setUp('libraries', 'libraries_test_module');
+    theme_enable(array('libraries_test_theme'));
   }
 
   /**
@@ -171,6 +172,21 @@ class LibrariesTestCase extends DrupalWebTestCase {
    * Tests libraries_info().
    */
   function testLibrariesInfo() {
+    // Test that modules can provide and alter library information.
+    $info = libraries_info();
+    $this->assertTrue(isset($info['example_module']));
+    $this->verbose('Library:<pre>' . var_export($info['example_module'], TRUE) . '</pre>');
+    $this->assertEqual($info['example_module']['info type'], 'module');
+    $this->assertEqual($info['example_module']['module'], 'libraries_test_module');
+    $this->assertTrue($info['example_module']['module_altered']);
+
+    // Test that themes can provide and alter library information.
+    $this->assertTrue(isset($info['example_theme']));
+    $this->verbose('Library:<pre>' . var_export($info['example_theme'], TRUE) . '</pre>');
+    $this->assertEqual($info['example_theme']['info type'], 'theme');
+    $this->assertEqual($info['example_theme']['theme'], 'libraries_test_theme');
+    $this->assertTrue($info['example_theme']['theme_altered']);
+
     // Test that library information is found correctly.
     $expected = array(
       'name' => 'Example files',
diff --git a/tests/modules/libraries_test_module/libraries_test_module.info b/tests/modules/libraries_test_module/libraries_test_module.info
index 4a850b5..60e6422 100644
--- a/tests/modules/libraries_test_module/libraries_test_module.info
+++ b/tests/modules/libraries_test_module/libraries_test_module.info
@@ -1,5 +1,6 @@
 name = Libraries test module
 description = Tests library detection and loading.
 core = 7.x
+package = Testing
 dependencies[] = libraries
 hidden = TRUE
diff --git a/tests/modules/libraries_test_module/libraries_test_module.module b/tests/modules/libraries_test_module/libraries_test_module.module
index c02a025..614e30e 100644
--- a/tests/modules/libraries_test_module/libraries_test_module.module
+++ b/tests/modules/libraries_test_module/libraries_test_module.module
@@ -9,6 +9,12 @@
  * Implements hook_libraries_info().
  */
 function libraries_test_module_libraries_info() {
+  // Test library information gathering.
+  $libraries['example_module'] = array(
+    'name' => 'Example module',
+    'module_altered' => FALSE,
+  );
+
   // Test library detection.
   $libraries['example_missing'] = array(
     'name' => 'Example missing',
@@ -29,7 +35,6 @@ function libraries_test_module_libraries_info() {
       '2' => array(),
     ),
   );
-
   $libraries['example_supported_version'] = array(
     'name' => 'Example supported version',
     'library path' => drupal_get_path('module', 'libraries') . '/tests/libraries/example',
@@ -300,6 +305,13 @@ function libraries_test_module_libraries_info() {
 }
 
 /**
+ * Implements hook_libraries_info_alter().
+ */
+function libraries_test_module_libraries_info_alter(&$libraries) {
+  $libraries['example_module']['module_altered'] = TRUE;
+}
+
+/**
  * Implements hook_libraries_info_file_paths()
  */
 function libraries_test_module_libraries_info_file_paths() {
@@ -576,3 +588,12 @@ function _libraries_test_module_load($library, $variant = NULL) {
 
   return $output;
 }
+
+/**
+ * Implements hook_system_theme_info().
+ */
+function libraries_test_module_system_theme_info() {
+  $themes = array();
+  $themes['libraries_test_theme'] = drupal_get_path('module', 'libraries') . '/tests/themes/libraries_test_theme/libraries_test_theme.info';
+  return $themes;
+}
diff --git a/tests/themes/libraries_test_theme/libraries_test_theme.info b/tests/themes/libraries_test_theme/libraries_test_theme.info
new file mode 100644
index 0000000..32cee7a
--- /dev/null
+++ b/tests/themes/libraries_test_theme/libraries_test_theme.info
@@ -0,0 +1,4 @@
+name = Libraries test theme
+description = Tests that themes can provide and alter library information.
+core = 7.x
+hidden = TRUE
diff --git a/tests/themes/libraries_test_theme/template.php b/tests/themes/libraries_test_theme/template.php
new file mode 100644
index 0000000..1f3b4cf
--- /dev/null
+++ b/tests/themes/libraries_test_theme/template.php
@@ -0,0 +1,24 @@
+<?php
+
+/**
+ * @file
+ * Libraries test theme.
+ */
+
+/**
+ * Implements hook_libraries_info().
+ */
+function libraries_test_theme_libraries_info() {
+  $libraries['example_theme'] = array(
+    'name' => 'Example theme',
+    'theme_altered' => FALSE,
+  );
+  return $libraries;
+}
+
+/**
+ * Implements hook_libraries_info_alter().
+ */
+function libraries_test_theme_libraries_info_alter(&$libraries) {
+  $libraries['example_theme']['theme_altered'] = TRUE;
+}
