/** * Lists contents backward (storage lookup first) * * @param string $directory * @param bool $recursive * @return \Generator */ private function getMetadataFromIndexBackward($directory, $recursive) { Expect::that($directory)->equals("/"); Expect::that($recursive)->equals(true); $index = ["targetDirname" => null, "content" => null]; foreach ($this->getInnerFileSystem()->listContents("/", false) as $directory) { if ("/{$directory["path"]}" == self::PATH_TO_INDEXES) { continue; } foreach ($this->getInnerFileSystem()->listContents("/{$directory["path"]}", true) as $content) { if (strlen($content["basename"]) == 2) { continue; } if ($index["targetDirname"] != $content["dirname"]) { $index["targetDirname"] = $content["dirname"]; $index["content"] = $this->readIndex(self::PATH_TO_INDEXES . "/{$content["dirname"]}/" . self::INDEX_FILE); } foreach ($index["content"][self::INDEX_FILE__DATA] as $knownPath => $unused) { if ("/{$content["path"]}" == FileSystem::getInnerPath($knownPath)) { (yield $this->getOuterFileSystem()->getMetadata($knownPath)); break; } } } } }
/** * @dataProvider getInnerPathWorksDataProvider * @param string $expectedInnerPath * @param string $path */ public function testGetInnerPathWorks($expectedInnerPath, $path) { $this->assertEquals($expectedInnerPath, FileSystem::getInnerPath($path)); }