N°2651 Remove tests from lib : browse dirs using SPL classes instead of GLOB

This commit is contained in:
Pierre Goiffon
2020-01-20 11:15:27 +01:00
committed by odain
parent e3c6ac814e
commit ee39a387db

View File

@@ -24,70 +24,96 @@ class iTopComposer
public function ListAllTestDir() public function ListAllTestDir()
{ {
return array_merge( $aAllTestDirs = array();
glob(APPROOT.'lib/*/*/[tT]est/', GLOB_ONLYDIR ), $sPath = realpath(APPROOT.'lib');
glob(APPROOT.'lib/*/*/*/[tT]est/', GLOB_ONLYDIR ),
glob(APPROOT.'lib/*/*/*/*/[tT]est/', GLOB_ONLYDIR ),
glob(APPROOT.'lib/*/*/*/*/*/[tT]est/', GLOB_ONLYDIR ),
glob(APPROOT.'lib/*/*/*/*/*/*/[tT]est/', GLOB_ONLYDIR ),
glob(APPROOT.'lib/*/*/*/*/*/*/*/[tT]est/', GLOB_ONLYDIR ),
glob(APPROOT.'lib/*/*/*/*/*/*/*/*/[tT]est/', GLOB_ONLYDIR ),
$oDirectoryIterator = new RecursiveDirectoryIterator($sPath);
$iterator = new RecursiveIteratorIterator(
$oDirectoryIterator,
RecursiveIteratorIterator::CHILD_FIRST);
glob(APPROOT.'lib/*/*/[tT]ests/', GLOB_ONLYDIR ), /** @var DirectoryIterator $file */
glob(APPROOT.'lib/*/*/*/[tT]ests/', GLOB_ONLYDIR ), foreach($iterator as $file) {
glob(APPROOT.'lib/*/*/*/*/[tT]ests/', GLOB_ONLYDIR ), if(!$file->isDir()) {
glob(APPROOT.'lib/*/*/*/*/*/[tT]ests/', GLOB_ONLYDIR ), continue;
glob(APPROOT.'lib/*/*/*/*/*/*/[tT]ests/', GLOB_ONLYDIR ), }
glob(APPROOT.'lib/*/*/*/*/*/*/*/[tT]ests/', GLOB_ONLYDIR ), $sDirName = $file->getFilename();
glob(APPROOT.'lib/*/*/*/*/*/*/*/*/[tT]ests/', GLOB_ONLYDIR ) if (in_array($sDirName, array('.', '..'), true))
{
continue;
}
if (!$this->IsTestDir($sDirName))
{
continue;
}
); $sDirPath = $file->getRealpath();
$sDirPathWithSlashes = str_replace(DIRECTORY_SEPARATOR, '/', $sDirPath);
$aAllTestDirs[] = $sDirPathWithSlashes;
}
return $aAllTestDirs;
}
private function IsTestDir($sDirName)
{
return preg_match('/^[tT]ests?$/', $sDirName);
}
/**
* @return string APPROOT constant but with slashes instead of DIRECTORY_SEPARATOR.
* This ease writing our paths, as we can use '/' for every platforms.
*/
private function GetApprootWithSlashes()
{
return str_replace(DIRECTORY_SEPARATOR, '/', APPROOT);
} }
public function ListAllowedTestDir() public function ListAllowedTestDir()
{ {
$APPROOT_WITH_SLASHES = $this->GetApprootWithSlashes();
return array( return array(
APPROOT.'lib/twig/twig/src/Node/Expression/Test/', $APPROOT_WITH_SLASHES.'lib/twig/twig/src/Node/Expression/Test',
APPROOT.'lib/twig/twig/lib/Twig/Node/Expression/Test/', $APPROOT_WITH_SLASHES.'lib/twig/twig/lib/Twig/Node/Expression/Test',
); );
} }
public function ListDeniedTestDir() public function ListDeniedTestDir()
{ {
$APPROOT_WITH_SLASHES = $this->GetApprootWithSlashes();
return array( return array(
APPROOT.'lib/nikic/php-parser/test/', $APPROOT_WITH_SLASHES.'lib/nikic/php-parser/test',
APPROOT.'lib/symfony/framework-bundle/Test/', $APPROOT_WITH_SLASHES.'lib/symfony/framework-bundle/Test',
APPROOT.'lib/symfony/var-dumper/Test/', $APPROOT_WITH_SLASHES.'lib/symfony/var-dumper/Test',
APPROOT.'lib/symfony/var-dumper/Tests/Test/', $APPROOT_WITH_SLASHES.'lib/symfony/var-dumper/Tests/Test',
APPROOT.'lib/twig/twig/src/Test/', $APPROOT_WITH_SLASHES.'lib/twig/twig/src/Test',
APPROOT.'lib/psr/log/Psr/Log/Test/', $APPROOT_WITH_SLASHES.'lib/psr/log/Psr/Log/Test',
APPROOT.'lib/twig/twig/lib/Twig/Test/', $APPROOT_WITH_SLASHES.'lib/twig/twig/lib/Twig/Test',
APPROOT.'lib/symfony/framework-bundle/Tests/Fixtures/TestBundle/FooBundle/Controller/Test/', $APPROOT_WITH_SLASHES.'lib/symfony/framework-bundle/Tests/Fixtures/TestBundle/FooBundle/Controller/Test',
APPROOT.'lib/pear/console_getopt/tests/', $APPROOT_WITH_SLASHES.'lib/pear/console_getopt/tests',
APPROOT.'lib/pear/pear_exception/tests/', $APPROOT_WITH_SLASHES.'lib/pear/pear_exception/tests',
APPROOT.'lib/symfony/cache/Tests/', $APPROOT_WITH_SLASHES.'lib/symfony/cache/Tests',
APPROOT.'lib/symfony/class-loader/Tests/', $APPROOT_WITH_SLASHES.'lib/symfony/class-loader/Tests',
APPROOT.'lib/symfony/config/Tests/', $APPROOT_WITH_SLASHES.'lib/symfony/config/Tests',
APPROOT.'lib/symfony/console/Tests/', $APPROOT_WITH_SLASHES.'lib/symfony/console/Tests',
APPROOT.'lib/symfony/css-selector/Tests/', $APPROOT_WITH_SLASHES.'lib/symfony/css-selector/Tests',
APPROOT.'lib/symfony/debug/Tests/', $APPROOT_WITH_SLASHES.'lib/symfony/debug/Tests',
APPROOT.'lib/symfony/dependency-injection/Tests/', $APPROOT_WITH_SLASHES.'lib/symfony/dependency-injection/Tests',
APPROOT.'lib/symfony/dotenv/Tests/', $APPROOT_WITH_SLASHES.'lib/symfony/dotenv/Tests',
APPROOT.'lib/symfony/event-dispatcher/Tests/', $APPROOT_WITH_SLASHES.'lib/symfony/event-dispatcher/Tests',
APPROOT.'lib/symfony/filesystem/Tests/', $APPROOT_WITH_SLASHES.'lib/symfony/filesystem/Tests',
APPROOT.'lib/symfony/finder/Tests/', $APPROOT_WITH_SLASHES.'lib/symfony/finder/Tests',
APPROOT.'lib/symfony/framework-bundle/Tests/', $APPROOT_WITH_SLASHES.'lib/symfony/framework-bundle/Tests',
APPROOT.'lib/symfony/http-foundation/Tests/', $APPROOT_WITH_SLASHES.'lib/symfony/http-foundation/Tests',
APPROOT.'lib/symfony/http-kernel/Tests/', $APPROOT_WITH_SLASHES.'lib/symfony/http-kernel/Tests',
APPROOT.'lib/symfony/routing/Tests/', $APPROOT_WITH_SLASHES.'lib/symfony/routing/Tests',
APPROOT.'lib/symfony/stopwatch/Tests/', $APPROOT_WITH_SLASHES.'lib/symfony/stopwatch/Tests',
APPROOT.'lib/symfony/twig-bridge/Tests/', $APPROOT_WITH_SLASHES.'lib/symfony/twig-bridge/Tests',
APPROOT.'lib/symfony/twig-bundle/Tests/', $APPROOT_WITH_SLASHES.'lib/symfony/twig-bundle/Tests',
APPROOT.'lib/symfony/var-dumper/Tests/', $APPROOT_WITH_SLASHES.'lib/symfony/var-dumper/Tests',
APPROOT.'lib/symfony/web-profiler-bundle/Tests/', $APPROOT_WITH_SLASHES.'lib/symfony/web-profiler-bundle/Tests',
APPROOT.'lib/symfony/yaml/Tests/', $APPROOT_WITH_SLASHES.'lib/symfony/yaml/Tests',
APPROOT.'lib/symfony/debug/Resources/ext/tests/', $APPROOT_WITH_SLASHES.'lib/symfony/debug/Resources/ext/tests',
); );
} }