From 952311959d12326a8366b98109a5b3e03064fc1d Mon Sep 17 00:00:00 2001
From: Alex Pott <alex.a.pott@googlemail.com>
Date: Tue, 29 Jul 2014 12:38:19 +0100
Subject: [PATCH] Issue #2051877 by dawehner, sun, tstoeckler: Log error when
 people use invalid route parameters.

---
 .../SpecialAttributesRouteSubscriber.php      | 10 +++------
 .../SpecialAttributesRouteSubscriberTest.php  | 21 +++++--------------
 2 files changed, 8 insertions(+), 23 deletions(-)

diff --git a/core/lib/Drupal/Core/EventSubscriber/SpecialAttributesRouteSubscriber.php b/core/lib/Drupal/Core/EventSubscriber/SpecialAttributesRouteSubscriber.php
index 8556561d33c9..8c11bad34e11 100644
--- a/core/lib/Drupal/Core/EventSubscriber/SpecialAttributesRouteSubscriber.php
+++ b/core/lib/Drupal/Core/EventSubscriber/SpecialAttributesRouteSubscriber.php
@@ -33,16 +33,12 @@ protected function alterRoutes(RouteCollection $collection) {
       '_content',
       '_form',
     );
-
-    foreach ($collection->all() as $route) {
+    foreach ($collection->all() as $name => $route) {
       if ($not_allowed_variables = array_intersect($route->compile()->getVariables(), $special_variables)) {
-        $placeholders = array('@variables' => implode(', ', $not_allowed_variables));
-        drupal_set_message(String::format('The following variables are reserved names by drupal: @variables', $placeholders));
-        watchdog('error', 'The following variables are reserved names by drupal: @variables', $placeholders);
-        return FALSE;
+        $reserved = implode(', ', $not_allowed_variables);
+        trigger_error(sprintf('Route %s uses reserved variable names: %s', $name, $reserved), E_USER_WARNING);
       }
     }
-    return TRUE;
   }
 
   /**
diff --git a/core/tests/Drupal/Tests/Core/EventSubscriber/SpecialAttributesRouteSubscriberTest.php b/core/tests/Drupal/Tests/Core/EventSubscriber/SpecialAttributesRouteSubscriberTest.php
index cdab44f16a87..3ce881f26ebd 100644
--- a/core/tests/Drupal/Tests/Core/EventSubscriber/SpecialAttributesRouteSubscriberTest.php
+++ b/core/tests/Drupal/Tests/Core/EventSubscriber/SpecialAttributesRouteSubscriberTest.php
@@ -5,7 +5,7 @@
  * Contains \Drupal\Tests\Core\EventSubscriber\SpecialAttributesRouteSubscriberTest.
  */
 
-namespace Drupal\Tests\Core\EventSubscriber {
+namespace Drupal\Tests\Core\EventSubscriber;
 
 use Drupal\Core\EventSubscriber\SpecialAttributesRouteSubscriber;
 use Drupal\Core\Routing\RouteBuildEvent;
@@ -85,7 +85,7 @@ public function testOnRouteBuildingValidVariables(Route $route) {
     $route_collection = new RouteCollection();
     $route_collection->add('test', $route);
     $event = new RouteBuildEvent($route_collection, 'test');
-    $this->assertTrue($this->specialAttributesRouteSubscriber->onAlterRoutes($event));
+    $this->specialAttributesRouteSubscriber->onAlterRoutes($event);
   }
 
   /**
@@ -95,25 +95,14 @@ public function testOnRouteBuildingValidVariables(Route $route) {
    *   The route to check.
    *
    * @dataProvider providerTestOnRouteBuildingInvalidVariables
+   * @expectedException \PHPUnit_Framework_Error_Warning
+   * @expectedExceptionMessage uses reserved variable names
    */
   public function testOnRouteBuildingInvalidVariables(Route $route) {
     $route_collection = new RouteCollection();
     $route_collection->add('test', $route);
     $event = new RouteBuildEvent($route_collection, 'test');
-    $this->assertFalse($this->specialAttributesRouteSubscriber->onAlterRoutes($event));
+    $this->specialAttributesRouteSubscriber->onAlterRoutes($event);
   }
 
 }
-
-}
-
-namespace {
-  if (!function_exists('watchdog')) {
-    function watchdog($type, $message, array $args = array()) {
-    }
-  }
-  if (!function_exists('drupal_set_message')) {
-    function drupal_set_message($type = NULL, $message = '') {
-    }
-  }
-}
-- 
GitLab