2
0
فهرست منبع

ZF-9000: Make Zend_View more tolerant of stream schemas, particularly in Windows

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@20906 44c647ce-9c0f-0410-b52a-842ac1e357ba
matthew 16 سال پیش
والد
کامیت
6aef33f598
2فایلهای تغییر یافته به همراه21 افزوده شده و 6 حذف شده
  1. 3 3
      library/Zend/View/Abstract.php
  2. 18 3
      tests/Zend/ViewTest.php

+ 3 - 3
library/Zend/View/Abstract.php

@@ -1020,9 +1020,9 @@ abstract class Zend_View_Abstract implements Zend_View_Interface
         foreach ((array) $path as $dir) {
             // attempt to strip any possible separator and
             // append the system directory separator
-            $dir = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $dir);
-            $dir = rtrim($dir, DIRECTORY_SEPARATOR . DIRECTORY_SEPARATOR)
-                 . DIRECTORY_SEPARATOR;
+            $dir  = rtrim($dir, '/');
+            $dir  = rtrim($dir, '\\');
+            $dir .= '/';
 
             switch ($type) {
                 case 'script':

+ 18 - 3
tests/Zend/ViewTest.php

@@ -672,7 +672,7 @@ class Zend_ViewTest extends PHPUnit_Framework_TestCase
         $this->assertEquals('bar', $view->foo);
         $paths = $view->getScriptPaths();
         $this->assertEquals(1, count($paths));
-        $this->assertEquals(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'View' . DIRECTORY_SEPARATOR . '_templates' . DIRECTORY_SEPARATOR, $paths[0]);
+        $this->assertEquals(dirname(__FILE__) . '/View/_templates/', $paths[0]);
     }
 
     public function testHelperViewAccessor()
@@ -826,10 +826,10 @@ class Zend_ViewTest extends PHPUnit_Framework_TestCase
     public function testGetScriptPath()
     {
         $view = new Zend_View();
-        $base = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'View' . DIRECTORY_SEPARATOR . '_templates';
+        $base = dirname(__FILE__) . '/View/_templates';
         $view->setScriptPath($base);
         $path = $view->getScriptPath('test.phtml');
-        $this->assertEquals($base . DIRECTORY_SEPARATOR . 'test.phtml', $path);
+        $this->assertEquals($base . '/test.phtml', $path);
     }
 
     public function testGetHelper()
@@ -1123,6 +1123,21 @@ class Zend_ViewTest extends PHPUnit_Framework_TestCase
     	$view->registerHelper($helper, 'doctype');
         $this->assertSame($view, $helper->view);
     }
+
+    /**
+     * @group ZF-9000
+     */
+    public function testAddingStreamSchemeAsScriptPathShouldNotReverseSlashesOnWindows()
+    {
+        if (false === strstr(strtolower(PHP_OS), 'windows')) {
+            $this->markTestSkipped('Windows-only test');
+        }
+    	$view = new Zend_View();
+        $path = rtrim('file://' . str_replace('\\', '/', realpath(dirname(__FILE__))), '/') . '/';
+        $view->addScriptPath($path);
+        $paths = $view->getScriptPaths();
+        $this->assertContains($path, $paths, var_export($paths, 1));
+    }
 }
 
 /**