From 60237c2ce212756674cc95756f474be99199bb4e Mon Sep 17 00:00:00 2001 From: Rajesh Taneja Date: Wed, 13 Jan 2016 15:13:12 +0800 Subject: [PATCH] MDL-52721 unittest: Exclude tests in vendor and node_modules --- lib/testing/classes/tests_finder.php | 31 +++++++++++++++++++++------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/lib/testing/classes/tests_finder.php b/lib/testing/classes/tests_finder.php index 666e34087fb..ef59014b665 100644 --- a/lib/testing/classes/tests_finder.php +++ b/lib/testing/classes/tests_finder.php @@ -125,15 +125,30 @@ class tests_finder { private static function get_all_directories_with_tests($testtype) { global $CFG; + // List of directories to exclude from test file searching. + $excludedir = array('node_modules', 'vendor'); + + // Get first level directories in which tests should be searched. + $directoriestosearch = array(); + $alldirs = glob($CFG->dirroot . DIRECTORY_SEPARATOR . '*' , GLOB_ONLYDIR); + foreach ($alldirs as $dir) { + if (!in_array(basename($dir), $excludedir)) { + $directoriestosearch[] = $dir; + } + } + + // Search for tests in valid directories. $dirs = array(); - $dirite = new RecursiveDirectoryIterator($CFG->dirroot); - $iteite = new RecursiveIteratorIterator($dirite); - $regexp = self::get_regexp($testtype); - $regite = new RegexIterator($iteite, $regexp); - foreach ($regite as $path => $element) { - $key = dirname(dirname($path)); - $value = trim(str_replace('/', '_', str_replace($CFG->dirroot, '', $key)), '_'); - $dirs[$key] = $value; + foreach ($directoriestosearch as $dir) { + $dirite = new RecursiveDirectoryIterator($dir); + $iteite = new RecursiveIteratorIterator($dirite); + $regexp = self::get_regexp($testtype); + $regite = new RegexIterator($iteite, $regexp); + foreach ($regite as $path => $element) { + $key = dirname(dirname($path)); + $value = trim(str_replace(DIRECTORY_SEPARATOR, '_', str_replace($CFG->dirroot, '', $key)), '_'); + $dirs[$key] = $value; + } } ksort($dirs); return array_flip($dirs);