1
0
Fork 0

[ClassMapGenerator] Refine the findClasses method

The code could not throw
pull/1315/head
Victor Berchet 2012-11-11 18:30:31 +01:00
parent 1726fd4d8b
commit ff5c428d60
2 changed files with 43 additions and 30 deletions

View File

@ -96,6 +96,10 @@ class ClassMapGenerator
try { try {
$contents = php_strip_whitespace($path); $contents = php_strip_whitespace($path);
} catch (\Exception $e) {
throw new \RuntimeException('Could not scan for classes inside '.$path.": \n".$e->getMessage(), 0, $e);
}
if (!preg_match('{\b(?:class|interface'.$traits.')\b}i', $contents)) { if (!preg_match('{\b(?:class|interface'.$traits.')\b}i', $contents)) {
return array(); return array();
} }
@ -116,8 +120,6 @@ class ClassMapGenerator
$namespace = ''; $namespace = '';
for ($i = 0, $len = count($matches['type']); $i < $len; $i++) { for ($i = 0, $len = count($matches['type']); $i < $len; $i++) {
$name = $matches['name'][$i];
if (!empty($matches['ns'][$i])) { if (!empty($matches['ns'][$i])) {
$namespace = str_replace(array(' ', "\t", "\r", "\n"), '', $matches['nsname'][$i]) . '\\'; $namespace = str_replace(array(' ', "\t", "\r", "\n"), '', $matches['nsname'][$i]) . '\\';
} else { } else {
@ -126,8 +128,6 @@ class ClassMapGenerator
} }
return $classes; return $classes;
} catch (\Exception $e) {
throw new \RuntimeException('Could not scan for classes inside '.$path.": \n".$e->getMessage(), 0, $e);
}
} }
} }

View File

@ -84,6 +84,19 @@ class ClassMapGeneratorTest extends \PHPUnit_Framework_TestCase
), ClassMapGenerator::createMap($finder)); ), ClassMapGenerator::createMap($finder));
} }
/**
* @expectedException \RuntimeException
* @expectedExceptionMessage Could not scan for classes inside
*/
public function testThrowsWhenFileDoesNotExist()
{
$r = new \ReflectionClass('Composer\\Autoload\\ClassMapGenerator');
$find = $r->getMethod('findClasses');
$find->setAccessible(true);
$find->invoke(null, __DIR__.'/no-file');
}
protected function assertEqualsNormalized($expected, $actual, $message = null) protected function assertEqualsNormalized($expected, $actual, $message = null)
{ {
foreach ($expected as $ns => $path) { foreach ($expected as $ns => $path) {