Преглед на файлове

[DoctrineBridge] Fix log of non utf8 data

Victor Berchet преди 12 години
родител
ревизия
a0709fc365
променени са 2 файла, в които са добавени 40 реда и са изтрити 1 реда
  1. 1 1
      src/Symfony/Bridge/Doctrine/Logger/DbalLogger.php
  2. 39 0
      tests/Symfony/Tests/Bridge/Doctrine/Logger/DbalLoggerTest.php

+ 1 - 1
src/Symfony/Bridge/Doctrine/Logger/DbalLogger.php

@@ -41,7 +41,7 @@ class DbalLogger extends DebugStack
         parent::startQuery($sql, $params, $types);
 
         if (null !== $this->logger) {
-            $this->log($sql.' ('.json_encode($params).')');
+            $this->log($sql.' ('.@json_encode($params).')');
         }
     }
 

+ 39 - 0
tests/Symfony/Tests/Bridge/Doctrine/Logger/DbalLoggerTest.php

@@ -0,0 +1,39 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Tests\Bridge\Doctrine\Logger;
+
+
+class DbalLoggerTest extends \PHPUnit_Framework_TestCase
+{
+    public function testLogNonUtf8()
+    {
+        $logger = $this->getMock('Symfony\\Component\\HttpKernel\\Log\\LoggerInterface');
+
+        $dbalLogger = $this
+            ->getMockBuilder('Symfony\\Bridge\\Doctrine\\Logger\\DbalLogger')
+            ->setConstructorArgs(array($logger, null))
+            ->setMethods(array('log'))
+            ->getMock()
+        ;
+
+        $dbalLogger
+            ->expects($this->once())
+            ->method('log')
+            ->with('SQL ({"utf8":"foo","nonutf8":null})')
+        ;
+
+        $dbalLogger->startQuery('SQL', array(
+            'utf8'    => 'foo',
+            'nonutf8' => "\x7F\xFF"
+        ));
+    }
+}