diff --git a/includes/bootstrap.inc b/includes/bootstrap.inc
index 78f54de04cb6e8de996dfe057cbdcc16628cf6d9..0a18d22bdbccc172cd579eba2f8d87ea35511609 100644
--- a/includes/bootstrap.inc
+++ b/includes/bootstrap.inc
@@ -828,6 +828,11 @@ function drupal_get_filename($type, $name, $filename = NULL) {
   // drupal_static().
   static $files = array(), $dirs = array();
 
+  // Profiles are a special case: they have a fixed location and naming.
+  if ($type == 'profile') {
+    $profile_filename = "profiles/$name/$name.profile";
+    $files[$type][$name] = file_exists($profile_filename) ? $profile_filename : FALSE;
+  }
   if (!isset($files[$type])) {
     $files[$type] = array();
   }
diff --git a/modules/simpletest/tests/bootstrap.test b/modules/simpletest/tests/bootstrap.test
index cb4fe8e2a40245199f9ec3fd494e9b2d83a1e504..014fc94883c928943f921023d98ead483ebbc679 100644
--- a/modules/simpletest/tests/bootstrap.test
+++ b/modules/simpletest/tests/bootstrap.test
@@ -350,8 +350,18 @@ class BootstrapGetFilenameTestCase extends DrupalUnitTestCase {
     // Retrieving the location of a theme engine.
     $this->assertIdentical(drupal_get_filename('theme_engine', 'phptemplate'), 'themes/engines/phptemplate/phptemplate.engine', t('Retrieve theme engine location.'));
 
-    // Retrieving a file that is definitely not stored in the database.
+    // Retrieving the location of a profile. Profiles are a special case with
+    // a fixed location and naming.
     $this->assertIdentical(drupal_get_filename('profile', 'standard'), 'profiles/standard/standard.profile', t('Retrieve install profile location.'));
+
+    // When a file is not found in the database cache, drupal_get_filename()
+    // searches several locations on the filesystem, including the DRUPAL_ROOT
+    // directory. We use the '.script' extension below because this is a
+    // non-existent filetype that will definitely not exist in the database.
+    // Since there is already a scripts directory, drupal_get_filename() will
+    // automatically check there for 'script' files, just as it does for (e.g.)
+    // 'module' files in modules.
+    $this->assertIdentical(drupal_get_filename('script', 'test'), 'scripts/test.script', t('Retrieve test script location.'));
   }
 }
 
diff --git a/scripts/test.script b/scripts/test.script
new file mode 100644
index 0000000000000000000000000000000000000000..a45f3f0c68575395354b69b831514c2a6fdb426e
--- /dev/null
+++ b/scripts/test.script
@@ -0,0 +1,4 @@
+This file is for testing purposes only.
+
+It is used to test the functionality of drupal_get_filename().  See
+BootstrapGetFilenameTestCase::testDrupalGetFilename() for more information.