in util/YamlTests.php [183:227]
private function getAllTests(string $dir): array
{
$it = new RecursiveDirectoryIterator($dir);
$parsed = [];
// Iterate over the Yaml test files
foreach (new RecursiveIteratorIterator($it) as $file) {
if ($file->getExtension() !== 'yml') {
continue;
}
$omit = false;
foreach (self::YAML_FILES_TO_OMIT as $fileOmit) {
if (false !== strpos($file->getPathname(), $fileOmit)) {
$omit = true;
break;
}
}
if ($omit) {
continue;
}
$content = file_get_contents($file->getPathname());
$content = str_replace(' y:', " 'y':", $content); // replace y: with 'y': due the y/true conversion in YAML 1.1
$content = str_replace(' n:', " 'n':", $content); // replace n: with 'n': due the n/false conversion in YAML 1.1
try {
$test = yaml_parse($content, -1, $ndocs, [
YAML_MAP_TAG => function($value, $tag, $flags) {
return empty($value) ? new stdClass : $value;
}
]);
} catch (Throwable $e) {
throw new Exception(sprintf(
"YAML parse error file %s: %s",
$file->getPathname(),
$e->getMessage()
));
}
if (false === $test) {
throw new Exception(sprintf(
"YAML parse error file %s",
$file->getPathname()
));
}
$parsed[$file->getPathname()] = $test;
}
return $parsed;
}