[ticket/12589] Fix tests

PHPBB3-12589
This commit is contained in:
Tristan Darricau 2014-05-24 18:58:52 +02:00
parent f7896f46a5
commit 930c5d85ed

View file

@ -463,7 +463,10 @@ class finder
} }
else if ($directory && $directory[0] === '/') else if ($directory && $directory[0] === '/')
{ {
$path .= substr($directory, 1); if (!$is_dir)
{
$path .= substr($directory, 1);
}
$directory_pattern = '^' . preg_quote(str_replace('/', DIRECTORY_SEPARATOR, $directory) . DIRECTORY_SEPARATOR, '#'); $directory_pattern = '^' . preg_quote(str_replace('/', DIRECTORY_SEPARATOR, $directory) . DIRECTORY_SEPARATOR, '#');
} }
else else
@ -476,57 +479,56 @@ class finder
} }
$directory_pattern = '#' . $directory_pattern . '#'; $directory_pattern = '#' . $directory_pattern . '#';
$iterator = new \RecursiveIteratorIterator( if (is_dir($path))
new \phpbb\recursive_dot_prefix_filter_iterator(
new \RecursiveDirectoryIterator(
$path,
\FilesystemIterator::SKIP_DOTS
)
),
\RecursiveIteratorIterator::SELF_FIRST
);
foreach ($iterator as $file_info)
{ {
$filename = $file_info->getFilename(); $iterator = new \RecursiveIteratorIterator(
new \phpbb\recursive_dot_prefix_filter_iterator(
new \RecursiveDirectoryIterator(
$path,
\FilesystemIterator::SKIP_DOTS
)
),
\RecursiveIteratorIterator::SELF_FIRST
);
if ($file_info->isDir() == $is_dir) foreach ($iterator as $file_info)
{ {
if ($is_dir) $filename = $file_info->getFilename();
if ($file_info->isDir() == $is_dir)
{ {
$relative_path = $iterator->getInnerIterator()->getSubPath() . DIRECTORY_SEPARATOR . basename($filename) . DIRECTORY_SEPARATOR; if ($is_dir)
if ($directory && $directory[0] === '/')
{ {
$relative_path = str_replace('/', DIRECTORY_SEPARATOR, $directory) . DIRECTORY_SEPARATOR . $relative_path; $relative_path = $iterator->getInnerIterator()->getSubPath() . DIRECTORY_SEPARATOR . basename($filename) . DIRECTORY_SEPARATOR;
} if ($relative_path[0] !== DIRECTORY_SEPARATOR)
else if ($relative_path[0] !== DIRECTORY_SEPARATOR) {
{ $relative_path = DIRECTORY_SEPARATOR . $relative_path;
$relative_path = DIRECTORY_SEPARATOR . $relative_path; }
}
}
else
{
$relative_path = DIRECTORY_SEPARATOR . $iterator->getInnerIterator()->getSubPathname();
if ($directory && $directory[0] === '/')
{
$relative_path = str_replace('/', DIRECTORY_SEPARATOR, $directory) . DIRECTORY_SEPARATOR . $relative_path;
} }
else else
{ {
$relative_path = DIRECTORY_SEPARATOR . $relative_path; $relative_path = $iterator->getInnerIterator()->getSubPathname();
if ($directory && $directory[0] === '/')
{
$relative_path = str_replace('/', DIRECTORY_SEPARATOR, $directory) . DIRECTORY_SEPARATOR . $relative_path;
}
else
{
$relative_path = DIRECTORY_SEPARATOR . $relative_path;
}
} }
}
if ((!$suffix || substr($relative_path, -strlen($suffix)) === $suffix) && if ((!$suffix || substr($relative_path, -strlen($suffix)) === $suffix) &&
(!$prefix || substr($filename, 0, strlen($prefix)) === $prefix) && (!$prefix || substr($filename, 0, strlen($prefix)) === $prefix) &&
(!$directory || preg_match($directory_pattern, $relative_path))) (!$directory || preg_match($directory_pattern, $relative_path)))
{ {
$files[] = array( $files[] = array(
'named_path' => str_replace(DIRECTORY_SEPARATOR, '/', $location . $name . substr($relative_path, 1)), 'named_path' => str_replace(DIRECTORY_SEPARATOR, '/', $location . $name . substr($relative_path, 1)),
'ext_name' => $ext_name, 'ext_name' => $ext_name,
'path' => str_replace(array(DIRECTORY_SEPARATOR, $this->phpbb_root_path), array('/', ''), $file_info->getPath()) . '/', 'path' => str_replace(array(DIRECTORY_SEPARATOR, $this->phpbb_root_path), array('/', ''), $file_info->getPath()) . '/',
'filename' => $filename, 'filename' => $filename,
); );
}
} }
} }
} }