ソースを参照

Merge pull request #11659 from mtak3/absolute_path

Change determination of absolute path
Mark Story 8 年 前
コミット
f61425e8fa
2 ファイル変更20 行追加1 行削除
  1. 1 1
      src/Filesystem/Folder.php
  2. 19 0
      tests/TestCase/Filesystem/FolderTest.php

+ 1 - 1
src/Filesystem/Folder.php

@@ -345,7 +345,7 @@ class Folder
      */
     public static function isRegisteredStreamWrapper($path)
     {
-        return preg_match('/^[A-Z]+(?=:\/\/)/i', $path, $matches) &&
+        return preg_match('/^[^:\/\/]+?(?=:\/\/)/i', $path, $matches) &&
             in_array($matches[0], stream_get_wrappers());
     }
 

+ 19 - 0
tests/TestCase/Filesystem/FolderTest.php

@@ -1391,4 +1391,23 @@ class FolderTest extends TestCase
 
         $this->assertSame(['a.txt', 'b.txt', 'c.txt'], $results);
     }
+
+    /**
+     * testIsRegisteredStreamWrapper
+     *
+     * @return void
+     */
+    public function testIsRegisteredStreamWrapper()
+    {
+        foreach (stream_get_wrappers() as $wrapper) {
+            $this->assertTrue(Folder::isRegisteredStreamWrapper($wrapper . "://path/to/file"));
+            $this->assertFalse(Folder::isRegisteredStreamWrapper("bad." . $wrapper . "://path/to/file"));
+        }
+
+        $wrapper = 'unit.test1-';
+        $this->assertFalse(Folder::isRegisteredStreamWrapper($wrapper . "://path/to/file"));
+        stream_wrapper_register($wrapper, self::class);
+        $this->assertTrue(Folder::isRegisteredStreamWrapper($wrapper . "://path/to/file"));
+        stream_wrapper_unregister($wrapper);
+    }
 }