Skip to content

Commit 26b37f1

Browse files
committed
Fix two issues with run-tests.php
1. E_STRICT error due to passing return of array_intersect() into reset() directly 2. Details in junit output can produce invalid UTF-8 and XML due to unescaped characters
1 parent 157ddd9 commit 26b37f1

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

run-tests.php

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2668,12 +2668,15 @@ function junit_mark_test_as($type, $file_name, $test_name, $time = null, $messag
26682668
$time = null !== $time ? $time : junit_get_timer($file_name);
26692669
junit_suite_record($suite, 'execution_time', $time);
26702670

2671+
$escaped_details = htmlspecialchars($details, ENT_QUOTES, 'UTF-8');
2672+
26712673
$escaped_test_name = basename($file_name) . ' - ' . htmlspecialchars($test_name, ENT_QUOTES);
26722674
$JUNIT['files'][$file_name]['xml'] = "<testcase classname='$suite' name='$escaped_test_name' time='$time'>\n";
26732675

26742676
if (is_array($type)) {
26752677
$output_type = $type[0] . 'ED';
2676-
$type = reset(array_intersect(array('XFAIL', 'FAIL'), $type));
2678+
$temp = array_intersect(array('XFAIL', 'FAIL'), $type);
2679+
$type = reset($temp);
26772680
} else {
26782681
$output_type = $type . 'ED';
26792682
}
@@ -2688,10 +2691,10 @@ function junit_mark_test_as($type, $file_name, $test_name, $time = null, $messag
26882691
$JUNIT['files'][$file_name]['xml'] .= "<skipped>$message</skipped>\n";
26892692
} elseif('FAIL' == $type) {
26902693
junit_suite_record($suite, 'test_fail');
2691-
$JUNIT['files'][$file_name]['xml'] .= "<failure type='$output_type' message='$message'>$details</failure>\n";
2694+
$JUNIT['files'][$file_name]['xml'] .= "<failure type='$output_type' message='$message'>$escaped_details</failure>\n";
26922695
} else {
26932696
junit_suite_record($suite, 'test_error');
2694-
$JUNIT['files'][$file_name]['xml'] .= "<error type='$output_type' message='$message'>$details</error>\n";
2697+
$JUNIT['files'][$file_name]['xml'] .= "<error type='$output_type' message='$message'>$escaped_details</error>\n";
26952698
}
26962699

26972700
$JUNIT['files'][$file_name]['xml'] .= "</testcase>\n";

0 commit comments

Comments
 (0)