Пример #1
0
/**
 * @param array|string $type
 * @param string $file_name
 * @param string $test_name
 * @param int|string $time
 * @param string $message
 * @param string $details
 * @return void
 */
function junit_mark_test_as($type, $file_name, $test_name, $time = null, $message = '', $details = '')
{
    global $JUNIT;
    if (!junit_enabled()) {
        return;
    }
    $suite = junit_get_suitename_for($file_name);
    junit_suite_record($suite, 'test_total');
    $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_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);
    $JUNIT['files'][$file_name]['xml'] = "<testcase classname='{$suite}' name='{$escaped_test_name}' time='{$time}'>\n";
    if (is_array($type)) {
        $output_type = $type[0] . 'ED';
        $temp = array_intersect(array('XFAIL', 'FAIL', 'WARN'), $type);
        $type = reset($temp);
    } else {
        $output_type = $type . 'ED';
    }
    if ('PASS' == $type || 'XFAIL' == $type) {
        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='{$escaped_message}'/>\n";
    } elseif ('SKIP' == $type) {
        junit_suite_record($suite, 'test_skip');
        $JUNIT['files'][$file_name]['xml'] .= "<skipped>{$escaped_message}</skipped>\n";
    } elseif ('WARN' == $type) {
        junit_suite_record($suite, 'test_warn');
        $JUNIT['files'][$file_name]['xml'] .= "<warning>{$escaped_message}</warning>\n";
    } elseif ('FAIL' == $type) {
        junit_suite_record($suite, 'test_fail');
        $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='{$escaped_message}'>{$escaped_details}</error>\n";
    }
    $JUNIT['files'][$file_name]['xml'] .= "</testcase>\n";
}
Пример #2
0
/**
 * @param array|string $type
 * @param string $file_name
 * @param string $test_name
 * @param int|string $time
 * @param string $message
 * @param string $details
 * @return void
 */
function junit_mark_test_as($type, $file_name, $test_name, $time = null, $message = '', $details = '')
{
    global $JUNIT;
    if (!junit_enabled()) {
        return;
    }
    $suite = junit_get_suitename_for($file_name);
    junit_suite_record($suite, 'test_total');
    $time = null !== $time ? $time : junit_get_timer($file_name);
    junit_suite_record($suite, 'execution_time', $time);
    $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));
    } else {
        $output_type = $type . 'ED';
    }
    if ('PASS' == $type || 'XFAIL' == $type) {
        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";
    } elseif ('SKIP' == $type) {
        junit_suite_record($suite, 'test_skip');
        $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";
    } 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'] .= "</testcase>\n";
}