summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2019-02-11 15:35:34 +0100
committerNikita Popov <nikita.ppv@gmail.com>2019-02-11 15:35:34 +0100
commit7a17be7f31be344605b244599f37b6f8579ec90b (patch)
tree13aa2bcde383a6075f4d12db4e72d08ffd104da9 /scripts
parent6054b2363c0c51d4e5b881d126d5d7bbc7f86a7a (diff)
downloadphp-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.php49
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);
+}