summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwebchick <webchick@24967.no-reply.drupal.org>2011-11-11 20:41:16 -0800
committerwebchick <webchick@24967.no-reply.drupal.org>2011-11-11 20:41:16 -0800
commit625cf954e8ec39faf4cb5e517729de92a64e07ed (patch)
tree81779df583cdbf04b03ed703f21953a31ae31b9f
parent4c45ee17e16a92b7ffd59ad7e402a43bb6a723d7 (diff)
downloadbrdo-625cf954e8ec39faf4cb5e517729de92a64e07ed.tar.gz
brdo-625cf954e8ec39faf4cb5e517729de92a64e07ed.tar.bz2
Issue #1006714 by Steven Jones, chx, mr.baileys, xjm, carlos8f: Fixed drupal_get_path() doesn't work for profiles.
-rw-r--r--includes/bootstrap.inc5
-rw-r--r--modules/simpletest/tests/bootstrap.test12
-rw-r--r--scripts/test.script4
3 files changed, 20 insertions, 1 deletions
diff --git a/includes/bootstrap.inc b/includes/bootstrap.inc
index 78f54de04..0a18d22bd 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 cb4fe8e2a..014fc9488 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 000000000..a45f3f0c6
--- /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.