diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2019-02-11 15:35:34 +0100 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2019-02-11 15:35:34 +0100 |
commit | 7a17be7f31be344605b244599f37b6f8579ec90b (patch) | |
tree | 13aa2bcde383a6075f4d12db4e72d08ffd104da9 /scripts | |
parent | 6054b2363c0c51d4e5b881d126d5d7bbc7f86a7a (diff) | |
download | php-git-7a17be7f31be344605b244599f37b6f8579ec90b.tar.gz |
Add bless_tests.php
Helper script to perform certain kinds of trivial test updates.
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/dev/bless_tests.php | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/scripts/dev/bless_tests.php b/scripts/dev/bless_tests.php new file mode 100644 index 0000000000..121a011f9a --- /dev/null +++ b/scripts/dev/bless_tests.php @@ -0,0 +1,49 @@ +#!/usr/bin/env php +<?php + +if ($argc < 2) { + die("Usage: php bless_tests.php dir/"); +} + +$dir = $argv[1]; +$it = new RecursiveIteratorIterator( + new RecursiveDirectoryIterator($dir), + RecursiveIteratorIterator::LEAVES_ONLY +); +foreach ($it as $file) { + $path = $file->getPathName(); + if (!preg_match('/^(.*)\.phpt$/', $path, $matches)) { + // Not a phpt test + continue; + } + + $outPath = $matches[1] . '.out'; + if (!file_exists($outPath)) { + // Test did not fail + continue; + } + + $phpt = file_get_contents($path); + if (false !== strpos($phpt, '--XFAIL--')) { + // Don't modify expected output of XFAIL tests + continue; + } + + $out = file_get_contents($outPath); + $out = normalizeOutput($out); + $phpt = insertOutput($phpt, $out); + file_put_contents($path, $phpt); +} + +function normalizeOutput(string $out): string { + $out = preg_replace('/in \/.+ on line \d+/', 'in %s on line %d', $out); + $out = preg_replace('/Resource id #\d+/', 'Resource id #%d', $out); + return $out; +} + +function insertOutput(string $phpt, string $out): string { + return preg_replace_callback('/--EXPECTF?--.*$/s', function($matches) use($out) { + $F = strpos($out, '%') !== false ? 'F' : ''; + return "--EXPECT$F--\n" . $out . "\n"; + }, $phpt); +} |