From e53e753c0e90df0039b4789850b2870cf92a8450 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Wed, 20 Feb 2019 12:45:27 +0100 Subject: Support passing single file to bless_tests.php Or a mix of multiple directories/files. Also make the file executable. --- scripts/dev/bless_tests.php | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) mode change 100644 => 100755 scripts/dev/bless_tests.php (limited to 'scripts/dev/bless_tests.php') diff --git a/scripts/dev/bless_tests.php b/scripts/dev/bless_tests.php old mode 100644 new mode 100755 index 67c4defa3b..19c24bf188 --- a/scripts/dev/bless_tests.php +++ b/scripts/dev/bless_tests.php @@ -2,16 +2,11 @@ getPathName(); +$files = getFiles(array_slice($argv, 1)); +foreach ($files as $path) { if (!preg_match('/^(.*)\.phpt$/', $path, $matches)) { // Not a phpt test continue; @@ -35,6 +30,24 @@ foreach ($it as $file) { file_put_contents($path, $phpt); } +function getFiles(array $dirsOrFiles): \Iterator { + foreach ($dirsOrFiles as $dirOrFile) { + if (is_dir($dirOrFile)) { + $it = new RecursiveIteratorIterator( + new RecursiveDirectoryIterator($dirOrFile), + RecursiveIteratorIterator::LEAVES_ONLY + ); + foreach ($it as $file) { + yield $file->getPathName(); + } + } else if (is_file($dirOrFile)) { + yield $dirOrFile; + } else { + die("$dirOrFile is not a directory or file\n"); + } + } +} + function normalizeOutput(string $out): string { $out = preg_replace('/in \/.+ on line \d+$/m', 'in %s on line %d', $out); $out = preg_replace('/in \/.+:\d+$/m', 'in %s:%d', $out); -- cgit v1.2.1