Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / vendor / symfony / config / Tests / Definition / ScalarNodeTest.php
index a402a61ef951de4f08dcde3bb7c8673e613ff77c..481ef3f4969cf7846af481df9f7cc5a4bac78389 100644 (file)
@@ -12,6 +12,7 @@
 namespace Symfony\Component\Config\Tests\Definition;
 
 use PHPUnit\Framework\TestCase;
+use Symfony\Component\Config\Definition\ArrayNode;
 use Symfony\Component\Config\Definition\ScalarNode;
 
 class ScalarNodeTest extends TestCase
@@ -40,6 +41,37 @@ class ScalarNodeTest extends TestCase
         );
     }
 
+    public function testSetDeprecated()
+    {
+        $childNode = new ScalarNode('foo');
+        $childNode->setDeprecated('"%node%" is deprecated');
+
+        $this->assertTrue($childNode->isDeprecated());
+        $this->assertSame('"foo" is deprecated', $childNode->getDeprecationMessage($childNode->getName(), $childNode->getPath()));
+
+        $node = new ArrayNode('root');
+        $node->addChild($childNode);
+
+        $deprecationTriggered = 0;
+        $deprecationHandler = function ($level, $message, $file, $line) use (&$prevErrorHandler, &$deprecationTriggered) {
+            if (E_USER_DEPRECATED === $level) {
+                return ++$deprecationTriggered;
+            }
+
+            return $prevErrorHandler ? $prevErrorHandler($level, $message, $file, $line) : false;
+        };
+
+        $prevErrorHandler = set_error_handler($deprecationHandler);
+        $node->finalize(array());
+        restore_error_handler();
+        $this->assertSame(0, $deprecationTriggered, '->finalize() should not trigger if the deprecated node is not set');
+
+        $prevErrorHandler = set_error_handler($deprecationHandler);
+        $node->finalize(array('foo' => ''));
+        restore_error_handler();
+        $this->assertSame(1, $deprecationTriggered, '->finalize() should trigger if the deprecated node is set');
+    }
+
     /**
      * @dataProvider getInvalidValues
      * @expectedException \Symfony\Component\Config\Definition\Exception\InvalidTypeException