Sfoglia il codice sorgente

ZF-7690: update $_optionKeys when setOptions called subsequent times

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@17824 44c647ce-9c0f-0410-b52a-842ac1e357ba
matthew 16 anni fa
parent
commit
7a7854cb4d

+ 1 - 1
library/Zend/Application/Bootstrap/BootstrapAbstract.php

@@ -115,7 +115,7 @@ abstract class Zend_Application_Bootstrap_BootstrapAbstract
         $this->_options = $this->mergeOptions($this->_options, $options);
 
         $options = array_change_key_case($options, CASE_LOWER);
-        $this->_optionKeys = array_keys($options);
+        $this->_optionKeys = array_merge($this->_optionKeys, array_keys($options));
 
         $methods = get_class_methods($this);
         foreach ($methods as $key => $method) {

+ 50 - 0
tests/Zend/Application/Bootstrap/BootstrapAbstractTest.php

@@ -40,6 +40,26 @@ require_once 'Zend/Loader/Autoloader.php';
 require_once 'Zend/Application/Resource/ResourceAbstract.php';
 
 /**
+ * Zend_Application_Bootstrap_Bootstrapper
+ */
+require_once 'Zend/Application/Bootstrap/Bootstrapper.php';
+
+/**
+ * Zend_Application_Bootstrap_ResourceBootstrapper
+ */
+require_once 'Zend/Application/Bootstrap/ResourceBootstrapper.php';
+
+/**
+ * Zend_Application_Bootstrap_BootstrapAbstract
+ */
+require_once 'Zend/Application/Bootstrap/BootstrapAbstract.php';
+
+/**
+ * Zend_Application_Bootstrap_Bootstrap
+ */
+require_once 'Zend/Application/Bootstrap/Bootstrap.php';
+
+/**
  * @category   Zend
  * @package    Zend_Application
  * @subpackage UnitTests
@@ -664,6 +684,27 @@ class Zend_Application_Bootstrap_BootstrapAbstractTest extends PHPUnit_Framework
         $bootstrap = new Zend_Application_Bootstrap_Bootstrap($this->application);
         $bootstrap->bootstrap();
     }
+
+    /**
+     * @group ZF-7690
+     */
+    public function testCallingSetOptionsMultipleTimesShouldUpdateOptionKeys()
+    {
+        $this->application->setOptions(array(
+            'resources' => array(
+                'layout' => array(),
+            ),
+        ));
+        $bootstrap = new Zend_Application_Bootstrap_BootstrapAbstractTest_OptionKeys($this->application);
+        $bootstrap->setOptions(array(
+            'pluginPaths' => array(
+                'Foo' => dirname(__FILE__),
+            ),
+        ));
+        $expected = array('resources', 'pluginpaths');
+        $actual   = $bootstrap->getOptionKeys();
+        $this->assertEquals($expected, $actual);
+    }
 }
 
 class Zend_Application_Bootstrap_BootstrapAbstractTest_View
@@ -714,6 +755,15 @@ class Zend_Application_Bootstrap_BootstrapAbstractTest_Foo
     }
 }
 
+class Zend_Application_Bootstrap_BootstrapAbstractTest_OptionKeys
+    extends Zend_Application_Bootstrap_Bootstrap
+{
+    public function getOptionKeys()
+    {
+        return $this->_optionKeys;
+    }
+}
+
 if (PHPUnit_MAIN_METHOD == 'Zend_Application_Bootstrap_BootstrapAbstractTest::main') {
     Zend_Application_Bootstrap_BootstrapAbstractTest::main();
 }