diff options
author | Matteo Beccati <mbeccati@php.net> | 2014-05-27 11:04:48 +0200 |
---|---|---|
committer | Matteo Beccati <mbeccati@php.net> | 2014-05-27 11:04:48 +0200 |
commit | 1696166466e179c361c562f01a14995a09c41ae3 (patch) | |
tree | 0eb61684296d76bd83a5f96d0b3af96defbf86a9 /run-tests.php | |
parent | d184f07b3ccc30113ae11dd68f987f6cefe36d79 (diff) | |
download | php-git-1696166466e179c361c562f01a14995a09c41ae3.tar.gz |
Fixed broken XML junit output due to escaping of CDATA sections
I've removed CDATA and used htmlspecialchars as the output might not be UTF-8 safe, as pointed out by ircmaxell in 26b37f1792dfaf9b0b30f81e492c8f68b9ece571
Diffstat (limited to 'run-tests.php')
-rwxr-xr-x | run-tests.php | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/run-tests.php b/run-tests.php index e11271c109..c86ebc8cdd 100755 --- a/run-tests.php +++ b/run-tests.php @@ -1529,7 +1529,7 @@ TEST $file } $message = !empty($m[1]) ? $m[1] : ''; - junit_mark_test_as('SKIP', $shortname, $tested, null, "<![CDATA[\n$message\n]]>"); + junit_mark_test_as('SKIP', $shortname, $tested, null, $message); return 'SKIPPED'; } @@ -1554,7 +1554,7 @@ TEST $file ) { $message = "ext/zlib required"; show_result('SKIP', $tested, $tested_file, "reason: $message", $temp_filenames); - junit_mark_test_as('SKIP', $shortname, $tested, null, "<![CDATA[\n$message\n]]>"); + junit_mark_test_as('SKIP', $shortname, $tested, null, $message); return 'SKIPPED'; } @@ -2122,7 +2122,7 @@ $output $php = $old_php; } - $diff = empty($diff) ? '' : "<![CDATA[\n " . preg_replace('/\e/', '<esc>', $diff) . "\n]]>"; + $diff = empty($diff) ? '' : preg_replace('/\e/', '<esc>', $diff); junit_mark_test_as($restype, str_replace($cwd . '/', '', $tested_file), $tested, null, $info, $diff); @@ -2701,6 +2701,7 @@ 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_message = htmlspecialchars($message, ENT_QUOTES, 'UTF-8'); $escaped_test_name = basename($file_name) . ' - ' . htmlspecialchars($test_name, ENT_QUOTES); $JUNIT['files'][$file_name]['xml'] = "<testcase classname='$suite' name='$escaped_test_name' time='$time'>\n"; @@ -2717,16 +2718,16 @@ function junit_mark_test_as($type, $file_name, $test_name, $time = null, $messag junit_suite_record($suite, 'test_pass'); } elseif ('BORK' == $type) { junit_suite_record($suite, 'test_error'); - $JUNIT['files'][$file_name]['xml'] .= "<error type='$output_type' message='$message'/>\n"; + $JUNIT['files'][$file_name]['xml'] .= "<error type='$output_type' message='$escaped_message'/>\n"; } elseif ('SKIP' == $type) { junit_suite_record($suite, 'test_skip'); - $JUNIT['files'][$file_name]['xml'] .= "<skipped>$message</skipped>\n"; + $JUNIT['files'][$file_name]['xml'] .= "<skipped>$escaped_message</skipped>\n"; } elseif('FAIL' == $type) { junit_suite_record($suite, 'test_fail'); - $JUNIT['files'][$file_name]['xml'] .= "<failure type='$output_type' message='$message'>$escaped_details</failure>\n"; + $JUNIT['files'][$file_name]['xml'] .= "<failure type='$output_type' message='$escaped_message'>$escaped_details</failure>\n"; } else { junit_suite_record($suite, 'test_error'); - $JUNIT['files'][$file_name]['xml'] .= "<error type='$output_type' message='$message'>$escaped_details</error>\n"; + $JUNIT['files'][$file_name]['xml'] .= "<error type='$output_type' message='$escaped_message'>$escaped_details</error>\n"; } $JUNIT['files'][$file_name]['xml'] .= "</testcase>\n"; |