Browse Source

[ZF-6085] Zend_Log

- fixed type hinting setFormatter

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@22510 44c647ce-9c0f-0410-b52a-842ac1e357ba
ramon 15 years ago
parent
commit
8c0dfbf777

+ 8 - 2
library/Zend/Log/Writer/Abstract.php

@@ -56,6 +56,12 @@ abstract class Zend_Log_Writer_Abstract implements Zend_Log_FactoryInterface
             $filter = new Zend_Log_Filter_Priority($filter);
         }
 
+        if (!$filter instanceof Zend_Log_Filter_Interface) {
+            /** @see Zend_Log_Exception */
+            require_once 'Zend/Log/Exception.php';
+            throw new Zend_Log_Exception('Invalid filter provided');
+        }
+
         $this->_filters[] = $filter;
     }
 
@@ -83,7 +89,7 @@ abstract class Zend_Log_Writer_Abstract implements Zend_Log_FactoryInterface
      * @param  Zend_Log_Formatter_Interface $formatter
      * @return void
      */
-    public function setFormatter($formatter)
+    public function setFormatter(Zend_Log_Formatter_Interface $formatter)
     {
         $this->_formatter = $formatter;
     }
@@ -106,7 +112,7 @@ abstract class Zend_Log_Writer_Abstract implements Zend_Log_FactoryInterface
 
     /**
      * Validate and optionally convert the config to array
-     * 
+     *
      * @param  array|Zend_Config $config Zend_Config or Array
      * @return array
      * @throws Zend_Log_Exception

+ 2 - 0
tests/Zend/Log/AllTests.php

@@ -33,6 +33,7 @@ require_once 'Zend/Log/Filter/MessageTest.php';
 require_once 'Zend/Log/Filter/SuppressTest.php';
 require_once 'Zend/Log/Formatter/SimpleTest.php';
 require_once 'Zend/Log/Formatter/XmlTest.php';
+require_once 'Zend/Log/Writer/AbstractTest.php';
 require_once 'Zend/Log/Writer/DbTest.php';
 if (PHP_OS != 'AIX') {
     require_once 'Zend/Log/Writer/FirebugTest.php';
@@ -71,6 +72,7 @@ class Zend_Log_AllTests
         $suite->addTestSuite('Zend_Log_Filter_SuppressTest');
         $suite->addTestSuite('Zend_Log_Formatter_SimpleTest');
         $suite->addTestSuite('Zend_Log_Formatter_XmlTest');
+        $suite->addTestSuite('Zend_Log_Writer_AbstractTest');
         $suite->addTestSuite('Zend_Log_Writer_DbTest');
         if (PHP_OS != 'AIX') {
             $suite->addTestSuite('Zend_Log_Writer_FirebugTest');

+ 76 - 0
tests/Zend/Log/Writer/AbstractTest.php

@@ -0,0 +1,76 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Log
+ * @subpackage UnitTests
+ * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id$
+ */
+
+/** PHPUnit_Framework_TestCase */
+require_once 'PHPUnit/Framework/TestCase.php';
+
+/** Zend_Log_Writer_Abstract */
+require_once 'Zend/Log/Writer/Abstract.php';
+
+/**
+ * @category   Zend
+ * @package    Zend_Log
+ * @subpackage UnitTests
+ * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @group      Zend_Log
+ */
+class Zend_Log_Writer_AbstractTest extends PHPUnit_Framework_TestCase
+{
+    protected $_writer;
+
+    protected function setUp()
+    {
+        $this->_writer = new Zend_Log_Writer_AbstractTest_Concrete();
+    }
+
+    /**
+     * @group ZF-6085
+     */
+    public function testSetFormatter()
+    {
+        require_once 'Zend/Log/Formatter/Simple.php';
+        $this->_writer->setFormatter(new Zend_Log_Formatter_Simple());
+        $this->setExpectedException('PHPUnit_Framework_Error');
+        $this->_writer->setFormatter(new StdClass());
+    }
+
+    public function testAddFilter()
+    {
+        $this->_writer->addFilter(1);
+        require_once 'Zend/Log/Filter/Message.php';
+        $this->_writer->addFilter(new Zend_Log_Filter_Message('/mess/'));
+        $this->setExpectedException('Zend_Log_Exception');
+        $this->_writer->addFilter(new StdClass());
+    }
+}
+
+class Zend_Log_Writer_AbstractTest_Concrete extends Zend_Log_Writer_Abstract
+{
+    protected function _write($event)
+    {
+    }
+
+    static public function factory($config)
+    {
+    }
+}