diff options
author | Matteo Beccati <mbeccati@php.net> | 2014-05-27 11:54:34 +0200 |
---|---|---|
committer | Matteo Beccati <mbeccati@php.net> | 2014-05-27 12:03:38 +0200 |
commit | 92d54f81d671f0f14a06fec7bd6f917b085253c6 (patch) | |
tree | 99df3d9eac3702d5e5f84b0ad235b3a4ec5ba90d /run-tests.php | |
parent | 1696166466e179c361c562f01a14995a09c41ae3 (diff) | |
download | php-git-92d54f81d671f0f14a06fec7bd6f917b085253c6.tar.gz |
Escape non-printable characters in the junit XML output
XML doesn't allow most of the characters < 0x20 and binary output
breaks XML parsers. Such characters are not allowed as entities
either, so the generated entities are escaped in order to be printed
as text.
Diffstat (limited to 'run-tests.php')
-rwxr-xr-x | run-tests.php | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/run-tests.php b/run-tests.php index c86ebc8cdd..a2f552cfd4 100755 --- a/run-tests.php +++ b/run-tests.php @@ -2701,6 +2701,9 @@ function junit_mark_test_as($type, $file_name, $test_name, $time = null, $messag junit_suite_record($suite, 'execution_time', $time); $escaped_details = htmlspecialchars($details, ENT_QUOTES, 'UTF-8'); + $escaped_details = preg_replace_callback('/[\0-\x08\x0B\x0C\x0E-\x1F]/', function ($c) { + return sprintf('[[0x%02x]]', ord($c[0])); + }, $escaped_details); $escaped_message = htmlspecialchars($message, ENT_QUOTES, 'UTF-8'); $escaped_test_name = basename($file_name) . ' - ' . htmlspecialchars($test_name, ENT_QUOTES); |