Skip to content

Commit

Permalink
Fix two issues with run-tests.php
Browse files Browse the repository at this point in the history
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
  • Loading branch information
ircmaxell committed Jul 7, 2012
1 parent 157ddd9 commit 26b37f1
Showing 1 changed file with 6 additions and 3 deletions.
9 changes: 6 additions & 3 deletions run-tests.php
Original file line number Diff line number Diff line change
Expand Up @@ -2668,12 +2668,15 @@ function junit_mark_test_as($type, $file_name, $test_name, $time = null, $messag
$time = null !== $time ? $time : junit_get_timer($file_name);
junit_suite_record($suite, 'execution_time', $time);

$escaped_details = htmlspecialchars($details, 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";

if (is_array($type)) {
$output_type = $type[0] . 'ED';
$type = reset(array_intersect(array('XFAIL', 'FAIL'), $type));
$temp = array_intersect(array('XFAIL', 'FAIL'), $type);
$type = reset($temp);
} else {
$output_type = $type . 'ED';
}
Expand All @@ -2688,10 +2691,10 @@ function junit_mark_test_as($type, $file_name, $test_name, $time = null, $messag
$JUNIT['files'][$file_name]['xml'] .= "<skipped>$message</skipped>\n";
} elseif('FAIL' == $type) {
junit_suite_record($suite, 'test_fail');
$JUNIT['files'][$file_name]['xml'] .= "<failure type='$output_type' message='$message'>$details</failure>\n";
$JUNIT['files'][$file_name]['xml'] .= "<failure type='$output_type' message='$message'>$escaped_details</failure>\n";
} else {
junit_suite_record($suite, 'test_error');
$JUNIT['files'][$file_name]['xml'] .= "<error type='$output_type' message='$message'>$details</error>\n";
$JUNIT['files'][$file_name]['xml'] .= "<error type='$output_type' message='$message'>$escaped_details</error>\n";
}

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

0 comments on commit 26b37f1

Please sign in to comment.