Index: skinr.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/skinr/skinr.module,v
retrieving revision 1.39
diff -u -p -r1.39 skinr.module
--- skinr.module	14 Jan 2011 03:16:38 -0000	1.39
+++ skinr.module	14 Jan 2011 16:25:49 -0000
@@ -976,11 +976,12 @@ function skinr_get_skin_info() {
       );
       // Load the extension's plugins, if any.
       if ($files = skinr_load_plugins($extension)) {
-        // The source path for a plugin is the directory it is contained in.
+        // The base path for plugins is the directory defined by the extension.
         $dir = $extension['path'] . '/' . $extension['directory'];
         foreach ($files as $plugin => $file) {
           $hooks["{$name}_skinr_skin_{$plugin}_info"] = array(
-            'path' => $dir,
+            // The source path for a plugin is the plugin directory.
+            'path' => $dir . '/' . basename(dirname($file->uri)),
           ) + $extension;
         }
       }
@@ -1028,11 +1029,12 @@ function skinr_get_group_info() {
       );
       // Load the extension's plugins, if any.
       if ($files = skinr_load_plugins($extension)) {
-        // The source path for a plugin is the directory it is contained in.
+        // The base path for plugins is the directory defined by the extension.
         $dir = $extension['path'] . '/' . $extension['directory'];
         foreach ($files as $plugin => $file) {
           $hooks["{$name}_skinr_group_{$plugin}_info"] = array(
-            'path' => $dir,
+            // The source path for a plugin is the plugin directory.
+            'path' => $dir . '/' . basename(dirname($file->uri)),
           ) + $extension;
         }
       }
Index: tests/skinr.test
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/skinr/tests/skinr.test,v
retrieving revision 1.7
diff -u -p -r1.7 skinr.test
--- tests/skinr.test	14 Jan 2011 03:16:38 -0000	1.7
+++ tests/skinr.test	14 Jan 2011 16:21:54 -0000
@@ -131,8 +131,9 @@ class SkinrApiTestCase extends DrupalWeb
         'path' => drupal_get_path($expected['type'], $name),
         'directory' => NULL,
       );
-      $this->assertEqual($extensions[$name], $expected, t('%extension implementation found.', array(
+      $this->assertEqual($extensions[$name], $expected, t('%extension implementation found:<pre>@data</pre>', array(
         '%extension' => $name,
+        '@data' => var_export($extensions[$name], TRUE),
       )));
       unset($extensions[$name]);
     }
@@ -151,14 +152,22 @@ class SkinrApiTestCase extends DrupalWeb
     // return skins that are incompatible with the current Skinr API version.
     $skin_info = skinr_get_skin_info();
 
+    $path = drupal_get_path('module', 'skinr');
+
     // skinr_test_font is registered via hook_skinr_skin_info() in
     // skinr_test.skinr.inc.
     $this->assertTrue(isset($skin_info['skinr_test_font']), 'Skin registered in $module.skinr.inc found.');
+    $this->assertEqual($skin_info['skinr_test_font']['source']['path'], $path . '/tests', t('Skin path points to module directory: @path', array(
+      '@path' => $skin_info['skinr_test_font']['source']['path'],
+    )));
     unset($skin_info['skinr_test_font']);
 
     // skinr_test_example is registered via hook_skinr_skin_PLUGIN_info() in
     // skins/example.inc.
     $this->assertTrue(isset($skin_info['skinr_test_example']), 'Skin registered in plugin file found.');
+    $this->assertEqual($skin_info['skinr_test_example']['source']['path'], $path . '/tests/skins/example', t('Skin path points to plugin directory: @path', array(
+      '@path' => $skin_info['skinr_test_example']['source']['path'],
+    )));
     unset($skin_info['skinr_test_example']);
 
     // Ensure that skinr_test_incompatible is not contained.
Index: tests/skins/example.inc
===================================================================
RCS file: tests/skins/example.inc
diff -N tests/skins/example.inc
--- tests/skins/example.inc	11 Jan 2011 00:54:20 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,12 +0,0 @@
-<?php
-// $Id$
-
-/**
- * Implements hook_skinr_skin_PLUGIN_info().
- */
-function skinr_test_skinr_skin_example_info() {
-  $skins['skinr_test_example'] = array(
-    'title' => t('Example skin plugin'),
-  );
-  return $skins;
-}
Index: tests/skins/example/example.inc
===================================================================
RCS file: tests/skins/example/example.inc
diff -N tests/skins/example/example.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ tests/skins/example/example.inc	11 Jan 2011 00:54:20 -0000
@@ -0,0 +1,12 @@
+<?php
+// $Id$
+
+/**
+ * Implements hook_skinr_skin_PLUGIN_info().
+ */
+function skinr_test_skinr_skin_example_info() {
+  $skins['skinr_test_example'] = array(
+    'title' => t('Example skin plugin'),
+  );
+  return $skins;
+}
