summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--includes/path.inc13
-rw-r--r--modules/simpletest/tests/system_test.module10
-rw-r--r--modules/system/system.test55
3 files changed, 75 insertions, 3 deletions
diff --git a/includes/path.inc b/includes/path.inc
index 2a7c3eac0..ef606fb26 100644
--- a/includes/path.inc
+++ b/includes/path.inc
@@ -212,6 +212,7 @@ function drupal_set_title($title = NULL, $output = CHECK_PLAIN) {
if (isset($title)) {
$stored_title = ($output == PASS_THROUGH) ? $title : check_plain($title);
}
+
return $stored_title;
}
@@ -222,9 +223,15 @@ function drupal_set_title($title = NULL, $output = CHECK_PLAIN) {
* Boolean value: TRUE if the current page is the front page; FALSE if otherwise.
*/
function drupal_is_front_page() {
- // As drupal_init_path updates $_GET['q'] with the 'site_frontpage' path,
- // we can check it against the 'site_frontpage' variable.
- return $_GET['q'] == drupal_get_normal_path(variable_get('site_frontpage', 'node'));
+ static $is_front_page;
+
+ if (!isset($is_front_page)) {
+ // As drupal_init_path updates $_GET['q'] with the 'site_frontpage' path,
+ // we can check it against the 'site_frontpage' variable.
+ $is_front_page = ($_GET['q'] == drupal_get_normal_path(variable_get('site_frontpage', 'node')));
+ }
+
+ return $is_front_page;
}
/**
diff --git a/modules/simpletest/tests/system_test.module b/modules/simpletest/tests/system_test.module
index fadc05e3c..dfe25bbf8 100644
--- a/modules/simpletest/tests/system_test.module
+++ b/modules/simpletest/tests/system_test.module
@@ -150,6 +150,16 @@ function system_test_boot() {
}
/**
+ * Implementation of hook_init().
+ */
+function system_test_init() {
+ // Used by FrontPageTestCase to get the results of drupal_is_front_page().
+ if (variable_get('front_page_output', 0) && drupal_is_front_page()) {
+ drupal_set_message(t('On front page.'));
+ }
+}
+
+/**
* Implementation of hook_exit().
*/
function system_test_exit() {
diff --git a/modules/system/system.test b/modules/system/system.test
index 8a888a052..9b1b2cbdc 100644
--- a/modules/system/system.test
+++ b/modules/system/system.test
@@ -576,3 +576,58 @@ class PageTitleFiltering extends DrupalWebTestCase {
$this->assertText(check_plain($edit['title']), 'Check to make sure tags in the node title are converted.');
}
}
+
+/**
+ * Test front page functionality and administration.
+ */
+class FrontPageTestCase extends DrupalWebTestCase {
+
+ function getInfo() {
+ return array(
+ 'name' => t('Front page'),
+ 'description' => t('Tests front page functionality and administration.'),
+ 'group' => t('System'),
+ );
+ }
+
+ function setUp() {
+ parent::setUp('system_test');
+
+ // Create admin user, log in admin user, and create one node.
+ $this->admin_user = $this->drupalCreateUser(array('access content', 'administer site configuration'));
+ $this->drupalLogin($this->admin_user);
+ $this->node_path = "node/" . $this->drupalCreateNode(array('promote' => 1))->nid;
+
+ // Enable front page logging in system_test.module.
+ variable_set('front_page_output', 1);
+ }
+
+ /**
+ * Test front page functionality.
+ */
+ function testDrupalIsFrontPage() {
+ $this->drupalGet('');
+ $this->assertText(t('On front page.'), t('Path is the front page.'));
+ $this->drupalGet('node');
+ $this->assertText(t('On front page.'), t('Path is the front page.'));
+ $this->drupalGet($this->node_path);
+ $this->assertNoText(t('On front page.'), t('Path is not the front page.'));
+
+ // Change the front page to an invalid path.
+ $edit = array('site_frontpage' => 'kittens');
+ $this->drupalPost('admin/settings/site-information', $edit, t('Save configuration'));
+ $this->assertText(t("The path '@path' is either invalid or you do not have access to it.", array('@path' => $edit['site_frontpage'])));
+
+ // Change the front page to a valid path.
+ $edit['site_frontpage'] = $this->node_path;
+ $this->drupalPost('admin/settings/site-information', $edit, t('Save configuration'));
+ $this->assertText(t('The configuration options have been saved.'), t('The front page path has been saved.'));
+
+ $this->drupalGet('');
+ $this->assertText(t('On front page.'), t('Path is the front page.'));
+ $this->drupalGet('node');
+ $this->assertNoText(t('On front page.'), t('Path is not the front page.'));
+ $this->drupalGet($this->node_path);
+ $this->assertText(t('On front page.'), t('Path is the front page.'));
+ }
+}