From 6b5fff7fba693f27d9dc3a945fe2f126c816f44d Mon Sep 17 00:00:00 2001
From: webchick <webchick@24967.no-reply.drupal.org>
Date: Thu, 1 Mar 2012 21:17:19 -0800
Subject: [PATCH] Issue #1393604 by tedbow, Niklas Fiekas: Fixed
 path_form_element_validate() does not send correct  parameter to
 form_set_error().

---
 core/modules/path/path.module |  2 +-
 core/modules/path/path.test   | 17 +++++++++++++++++
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/core/modules/path/path.module b/core/modules/path/path.module
index 8127a912541c..cdeece7764ba 100644
--- a/core/modules/path/path.module
+++ b/core/modules/path/path.module
@@ -173,7 +173,7 @@ function path_form_element_validate($element, &$form_state, $complete_form) {
     $query->addExpression('1');
     $query->range(0, 1);
     if ($query->execute()->fetchField()) {
-      form_set_error('alias', t('The alias is already in use.'));
+      form_error($element, t('The alias is already in use.'));
     }
   }
 }
diff --git a/core/modules/path/path.test b/core/modules/path/path.test
index 3072150d4340..7b6b2f2e9e55 100644
--- a/core/modules/path/path.test
+++ b/core/modules/path/path.test
@@ -162,6 +162,23 @@ class PathTestCase extends DrupalWebTestCase {
   function getPID($alias) {
     return db_query("SELECT pid FROM {url_alias} WHERE alias = :alias", array(':alias' => $alias))->fetchField();
   }
+
+  /**
+   * Tests that duplicate aliases fail validation.
+   */
+  function testDuplicateNodeAlias() {
+    // Create one node with a random alias.
+    $node_one = $this->drupalCreateNode();
+    $edit = array();
+    $edit['path[alias]'] = $this->randomName();
+    $this->drupalPost('node/' . $node_one->nid . '/edit', $edit, t('Save'));
+
+    // Now create another node and try to set the same alias.
+    $node_two = $this->drupalCreateNode();
+    $this->drupalPost('node/' . $node_two->nid . '/edit', $edit, t('Save'));
+    $this->assertText(t('The alias is already in use.'));
+    $this->assertFieldByXPath("//input[@name='path[alias]' and contains(@class, 'error')]", $edit['path[alias]'], 'Textfield exists and has the error class.');
+  }
 }
 
 /**
-- 
GitLab