本文整理汇总了PHP中generate_diff函数的典型用法代码示例。如果您正苦于以下问题:PHP generate_diff函数的具体用法?PHP generate_diff怎么用?PHP generate_diff使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了generate_diff函数的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的PHP代码示例。
示例1: run_test
//.........这里部分代码省略.........
*/
if (preg_match("/^{$wanted_re}\$/s", $output)) {
$passed = true;
if (!$cfg['keep']['php']) {
@unlink($test_file);
}
if (!$leaked && !$failed_headers) {
if (isset($section_text['XFAIL'])) {
$warn = true;
$info = " (warn: XFAIL section but test passes)";
} else {
show_result("PASS", $tested, $tested_file, '', $temp_filenames);
junit_mark_test_as('PASS', $shortname, $tested);
return 'PASSED';
}
}
}
} else {
$wanted = trim($section_text['EXPECT']);
$wanted = preg_replace('/\\r\\n/', "\n", $wanted);
show_file_block('exp', $wanted);
// compare and leave on success
if (!strcmp($output, $wanted)) {
$passed = true;
if (!$cfg['keep']['php']) {
@unlink($test_file);
}
if (!$leaked && !$failed_headers) {
if (isset($section_text['XFAIL'])) {
$warn = true;
$info = " (warn: XFAIL section but test passes)";
} else {
show_result("PASS", $tested, $tested_file, '', $temp_filenames);
junit_mark_test_as('PASS', $shortname, $tested);
return 'PASSED';
}
}
}
$wanted_re = null;
}
// Test failed so we need to report details.
if ($failed_headers) {
$passed = false;
$wanted = $wanted_headers . "\n--HEADERS--\n" . $wanted;
$output = $output_headers . "\n--HEADERS--\n" . $output;
if (isset($wanted_re)) {
$wanted_re = preg_quote($wanted_headers . "\n--HEADERS--\n", '/') . $wanted_re;
}
}
if ($leaked) {
$restype[] = 'LEAK';
}
if ($warn) {
$restype[] = 'WARN';
}
if (!$passed) {
if (isset($section_text['XFAIL'])) {
$restype[] = 'XFAIL';
$info = ' XFAIL REASON: ' . rtrim($section_text['XFAIL']);
} else {
$restype[] = 'FAIL';
}
}
if (!$passed) {
// write .exp
if (strpos($log_format, 'E') !== false && file_put_contents($exp_filename, $wanted, FILE_BINARY) === false) {
error("Cannot create expected test output - {$exp_filename}");
}
// write .out
if (strpos($log_format, 'O') !== false && file_put_contents($output_filename, $output, FILE_BINARY) === false) {
error("Cannot create test output - {$output_filename}");
}
// write .diff
$diff = generate_diff($wanted, $wanted_re, $output);
if (is_array($IN_REDIRECT)) {
$diff = "# original source file: {$shortname}\n" . $diff;
}
show_file_block('diff', $diff);
if (strpos($log_format, 'D') !== false && file_put_contents($diff_filename, $diff, FILE_BINARY) === false) {
error("Cannot create test diff - {$diff_filename}");
}
// write .sh
if (strpos($log_format, 'S') !== false && file_put_contents($sh_filename, "#!/bin/sh\n\n{$cmd}\n", FILE_BINARY) === false) {
error("Cannot create test shell script - {$sh_filename}");
}
chmod($sh_filename, 0755);
// write .log
if (strpos($log_format, 'L') !== false && file_put_contents($log_filename, "\n---- EXPECTED OUTPUT\n{$wanted}\n---- ACTUAL OUTPUT\n{$output}\n---- FAILED\n", FILE_BINARY) === false) {
error("Cannot create test log - {$log_filename}");
error_report($file, $log_filename, $tested);
}
}
show_result(implode('&', $restype), $tested, $tested_file, $info, $temp_filenames);
foreach ($restype as $type) {
$PHP_FAILED_TESTS[$type . 'ED'][] = array('name' => $file, 'test_name' => (is_array($IN_REDIRECT) ? $IN_REDIRECT['via'] : '') . $tested . " [{$tested_file}]", 'output' => $output_filename, 'diff' => $diff_filename, 'info' => $info);
}
$diff = empty($diff) ? '' : preg_replace('/\\e/', '<esc>', $diff);
junit_mark_test_as($restype, str_replace($cwd . '/', '', $tested_file), $tested, null, $info, $diff);
return $restype[0] . 'ED';
}
开发者ID:jimjag,项目名称:php-src,代码行数:101,代码来源:run-tests.php
示例2: run_test
//.........这里部分代码省略.........
$wanted_re = str_replace('%s', '[^\\r\\n]+', $wanted_re);
$wanted_re = str_replace('%a', '.+', $wanted_re);
$wanted_re = str_replace('%w', '\\s*', $wanted_re);
$wanted_re = str_replace('%i', '[+-]?\\d+', $wanted_re);
$wanted_re = str_replace('%d', '\\d+', $wanted_re);
$wanted_re = str_replace('%x', '[0-9a-fA-F]+', $wanted_re);
$wanted_re = str_replace('%f', '[+-]?\\.?\\d+\\.?\\d*(?:[Ee][+-]?\\d+)?', $wanted_re);
$wanted_re = str_replace('%c', '.', $wanted_re);
// %f allows two points "-.0.0" but that is the best *simple* expression
}
/* DEBUG YOUR REGEX HERE
var_dump($wanted_re);
print(str_repeat('=', 80) . "\n");
var_dump($output);
*/
if (preg_match((string) "/^{$wanted_re}\$/s", $output)) {
$passed = true;
if (!$cfg['keep']['php']) {
@unlink($test_file);
}
if (isset($old_php)) {
$php = $old_php;
}
if (!$leaked && !$failed_headers) {
show_result("PASS", $tested, $tested_file, '', $temp_filenames);
return 'PASSED';
}
}
} else {
$wanted = trim($section_text['EXPECT']);
$wanted = preg_replace('/\\r\\n/', "\n", $wanted);
show_file_block('exp', $wanted);
// compare and leave on success
if (!strcmp($output, $wanted)) {
$passed = true;
if (!$cfg['keep']['php']) {
@unlink($test_file);
}
if (isset($old_php)) {
$php = $old_php;
}
if (!$leaked && !$failed_headers) {
show_result("PASS", $tested, $tested_file, '', $temp_filenames);
return 'PASSED';
}
}
$wanted_re = null;
}
// Test failed so we need to report details.
if ($failed_headers) {
$passed = false;
$wanted = $wanted_headers . "\n--HEADERS--\n" . $wanted;
$output = $output_headers . "\n--HEADERS--\n" . $output;
if (isset($wanted_re)) {
$wanted_re = preg_quote($wanted_headers . "\n--HEADERS--\n", '/') . $wanted_re;
}
}
if ($leaked) {
$restype[] = 'LEAK';
}
if ($warn) {
$restype[] = 'WARN';
}
if (!$passed) {
if (isset($section_text['XFAIL'])) {
$restype[] = 'XFAIL';
} else {
$restype[] = 'FAIL';
}
}
if (!$passed) {
// write .exp
if (strpos($log_format, 'E') !== false && file_put_contents($exp_filename, (string) $wanted, FILE_BINARY) === false) {
error("Cannot create expected test output - {$exp_filename}");
}
// write .out
if (strpos($log_format, 'O') !== false && file_put_contents($output_filename, (string) $output, FILE_BINARY) === false) {
error("Cannot create test output - {$output_filename}");
}
// write .diff
$diff = generate_diff($wanted, $wanted_re, $output);
show_file_block('diff', $diff);
if (strpos($log_format, 'D') !== false && file_put_contents($diff_filename, (string) $diff, FILE_BINARY) === false) {
error("Cannot create test diff - {$diff_filename}");
}
// write .log
if (strpos($log_format, 'L') !== false && file_put_contents($log_filename, "\n---- EXPECTED OUTPUT\n{$wanted}\n---- ACTUAL OUTPUT\n{$output}\n---- FAILED\n", FILE_BINARY) === false) {
error("Cannot create test log - {$log_filename}");
error_report($file, $log_filename, $tested);
}
}
show_result(implode('&', $restype), $tested, $tested_file, $info, $temp_filenames);
foreach ($restype as $type) {
$PHP_FAILED_TESTS[$type . 'ED'][] = array('name' => $file, 'test_name' => (is_array($IN_REDIRECT) ? $IN_REDIRECT['via'] : '') . $tested . " [{$tested_file}]", 'output' => $output_filename, 'diff' => $diff_filename, 'info' => $info);
}
if (isset($old_php)) {
$php = $old_php;
}
return $restype[0] . 'ED';
}
开发者ID:wgy0323,项目名称:ffmpeg-php,代码行数:101,代码来源:run-tests.php
示例3: run_test
//.........这里部分代码省略.........
echo "OUTPUT: \n{$out}\n";
}
// Does the output match what is expected?
$output = trim($out);
$output = preg_replace('/\\r\\n/', "\n", $output);
$failed = FALSE;
if (isset($section_text['EXPECTF']) || isset($section_text['EXPECTREGEX'])) {
if (isset($section_text['EXPECTF'])) {
$wanted = $section_text['EXPECTF'];
} else {
$wanted = $section_text['EXPECTREGEX'];
}
$wanted_re = preg_replace('/\\r\\n/', "\n", $wanted);
if (isset($section_text['EXPECTF'])) {
$wanted_re = preg_quote($wanted_re, '/');
// Stick to basics
$wanted_re = str_replace("%s", ".+?", $wanted_re);
//not greedy
$wanted_re = str_replace("%i", "[+\\-]?[0-9]+", $wanted_re);
$wanted_re = str_replace("%d", "[0-9]+", $wanted_re);
$wanted_re = str_replace("%x", "[0-9a-fA-F]+", $wanted_re);
$wanted_re = str_replace("%f", "[+\\-]?\\.?[0-9]+\\.?[0-9]*(E-?[0-9]+)?", $wanted_re);
$wanted_re = str_replace("%c", ".", $wanted_re);
// %f allows two points "-.0.0" but that is the best *simple* expression
}
/* DEBUG YOUR REGEX HERE
var_dump($wanted_re);
print(str_repeat('=', 80) . "\n");
var_dump($output);
*/
$failed = !preg_match("/^{$wanted_re}\$/s", $output);
}
$skipexpect = false;
if (!$failed && $this->conf['TEST_WEB'] && isset($section_text['EXPECTHEADERS'])) {
$want = array();
$lines = preg_split("/[\n\r]+/", $section_text['EXPECTHEADERS']);
$wanted = '';
foreach ($lines as $line) {
if (strpos($line, ':') !== false) {
$line = explode(":", $line, 2);
$want[trim($line[0])] = trim($line[1]);
$wanted .= trim($line[0]) . ': ' . trim($line[1]) . "\n";
}
}
$output = '';
foreach ($want as $k => $v) {
$output .= "{$k}: {$headers[$k]}\n";
if (!isset($headers[$k]) || $headers[$k] != $v) {
$failed = TRUE;
}
}
// different servers may do different things on non-200 results
// for instance, IIS will deliver it's own error pages, so we
// cannot expect to match up the EXPECT section. We may however,
// want to match EXPECT on more than 200 results, so this may
// need to change later.
$skipexpect = isset($headers['Status']) && $headers['Status'] != 200;
}
if (!$failed && !$skipexpect && isset($section_text['EXPECT'])) {
$wanted = $section_text['EXPECT'];
$wanted = preg_replace('/\\r\\n/', "\n", $wanted);
$failed = 0 != strcmp($output, $wanted);
}
if (!$failed) {
@unlink($tmp_file);
$this->showstatus($tested, 'PASSED');
return 'PASSED';
}
// Test failed so we need to report details.
$this->showstatus($tested, 'FAILED');
$this->failed_tests[] = array('name' => $file, 'test_name' => $tested, 'output' => ereg_replace('\\.phpt$', '.log', $file), 'diff' => ereg_replace('\\.phpt$', '.diff', $file));
if ($this->conf['TEST_PHP_DETAILED']) {
$this->writemsg(generate_diff($wanted, $output) . "\n");
}
// write .exp
if (strpos($this->conf['TEST_PHP_LOG_FORMAT'], 'E') !== FALSE) {
$logname = ereg_replace('\\.phpt$', '.exp', $file);
save_to_file($logname, $wanted);
}
// write .out
if (strpos($this->conf['TEST_PHP_LOG_FORMAT'], 'O') !== FALSE) {
$logname = ereg_replace('\\.phpt$', '.out', $file);
save_to_file($logname, $output);
}
// write .diff
if (strpos($this->conf['TEST_PHP_LOG_FORMAT'], 'D') !== FALSE) {
$logname = ereg_replace('\\.phpt$', '.diff', $file);
save_to_file($logname, generate_diff($wanted, $output));
}
// write .log
if (strpos($this->conf['TEST_PHP_LOG_FORMAT'], 'L') !== FALSE) {
$logname = ereg_replace('\\.phpt$', '.log', $file);
save_to_file($logname, "\n---- EXPECTED OUTPUT\n{$wanted}\n" . "---- ACTUAL OUTPUT\n{$output}\n" . "---- FAILED\n");
// display emacs/msvc error output
if (strpos($this->conf['TEST_PHP_LOG_FORMAT'], 'C') !== FALSE) {
$this->error_report($file, $logname, $tested);
}
}
return 'FAILED';
}
开发者ID:browniebraun,项目名称:php-src,代码行数:101,代码来源:server-tests.php
示例4: run_test
//.........这里部分代码省略.........
$out = system_with_timeout($cmd);
if (!empty($section_text['ENV'])) {
foreach (explode("\n", $section_text['ENV']) as $env) {
$env = explode('=', $env);
putenv($env[0] . '=');
}
}
@unlink($tmp_post);
// Does the output match what is expected?
$output = trim($out);
$output = preg_replace('/\\r\\n/', "\n", $output);
/* when using CGI, strip the headers from the output */
if (isset($old_php) && ($pos = strpos($output, "\n\n")) !== FALSE) {
$output = substr($output, $pos + 2);
}
if (isset($section_text['EXPECTF']) || isset($section_text['EXPECTREGEX'])) {
if (isset($section_text['EXPECTF'])) {
$wanted = trim($section_text['EXPECTF']);
} else {
$wanted = trim($section_text['EXPECTREGEX']);
}
$wanted_re = preg_replace('/\\r\\n/', "\n", $wanted);
if (isset($section_text['EXPECTF'])) {
$wanted_re = preg_quote($wanted_re, '/');
// Stick to basics
$wanted_re = str_replace("%e", '\\' . DIRECTORY_SEPARATOR, $wanted_re);
$wanted_re = str_replace("%s", ".+?", $wanted_re);
//not greedy
$wanted_re = str_replace("%i", "[+\\-]?[0-9]+", $wanted_re);
$wanted_re = str_replace("%d", "[0-9]+", $wanted_re);
$wanted_re = str_replace("%x", "[0-9a-fA-F]+", $wanted_re);
$wanted_re = str_replace("%f", "[+\\-]?\\.?[0-9]+\\.?[0-9]*(E-?[0-9]+)?", $wanted_re);
$wanted_re = str_replace("%c", ".", $wanted_re);
// %f allows two points "-.0.0" but that is the best *simple* expression
}
/* DEBUG YOUR REGEX HERE
var_dump($wanted_re);
print(str_repeat('=', 80) . "\n");
var_dump($output);
*/
if (preg_match("/^{$wanted_re}\$/s", $output)) {
@unlink($tmp_file);
echo "PASS {$tested}\n";
if (isset($old_php)) {
$php = $old_php;
}
return 'PASSED';
}
} else {
$wanted = trim($section_text['EXPECT']);
$wanted = preg_replace('/\\r\\n/', "\n", $wanted);
// compare and leave on success
$ok = 0 == strcmp($output, $wanted);
if ($ok) {
@unlink($tmp_file);
echo "PASS {$tested}\n";
if (isset($old_php)) {
$php = $old_php;
}
return 'PASSED';
}
$wanted_re = NULL;
}
// Test failed so we need to report details.
if ($warn) {
echo "WARN {$tested}{$info}\n";
} else {
echo "FAIL {$tested}{$info}\n";
}
$PHP_FAILED_TESTS['FAILED'][] = array('name' => $file, 'test_name' => (is_array($IN_REDIRECT) ? $IN_REDIRECT['via'] : '') . $tested, 'output' => $output_filename, 'diff' => $diff_filename, 'info' => $info);
// write .exp
if (strpos($log_format, 'E') !== FALSE) {
$log = fopen($exp_filename, 'w') or error("Cannot create test log - {$exp_filename}");
fwrite($log, $wanted);
fclose($log);
}
// write .out
if (strpos($log_format, 'O') !== FALSE) {
$log = fopen($output_filename, 'w') or error("Cannot create test log - {$output_filename}");
fwrite($log, $output);
fclose($log);
}
// write .diff
if (strpos($log_format, 'D') !== FALSE) {
$log = fopen($diff_filename, 'w') or error("Cannot create test log - {$diff_filename}");
fwrite($log, generate_diff($wanted, $wanted_re, $output));
fclose($log);
}
// write .log
if (strpos($log_format, 'L') !== FALSE) {
$log = fopen($log_filename, 'w') or error("Cannot create test log - {$log_filename}");
fwrite($log, "\n---- EXPECTED OUTPUT\n{$wanted}\n---- ACTUAL OUTPUT\n{$output}\n---- FAILED\n");
fclose($log);
error_report($file, $log_filename, $tested);
}
if (isset($old_php)) {
$php = $old_php;
}
return $warn ? 'WARNED' : 'FAILED';
}
开发者ID:BackupTheBerlios,项目名称:php-qt-svn,代码行数:101,代码来源:run-tests.php
示例5: run_test
//.........这里部分代码省略.........
$length = strlen($wanted_re);
while ($startOffset < $length) {
$start = strpos($wanted_re, $r, $startOffset);
if ($start !== false) {
// we have found a start tag
$end = strpos($wanted_re, $r, $start + 2);
if ($end === false) {
// unbalanced tag, ignore it.
$end = $start = $length;
}
} else {
// no more %r sections
$start = $end = $length;
}
// quote a non re portion of the string
$temp = $temp . preg_quote(substr($wanted_re, $startOffset, $start - $startOffset), '/');
// add the re unquoted.
if ($end > $start) {
$temp = $temp . '(' . substr($wanted_re, $start + 2, $end - $start - 2) . ')';
}
$startOffset = $end + 2;
}
$wanted_re = $temp;
$wanted_re = str_replace(array('%binary_string_optional%'), version_compare(PHP_VERSION, '6.0.0-dev') == -1 ? 'string' : 'binary string', $wanted_re);
$wanted_re = str_replace(array('%unicode_string_optional%'), version_compare(PHP_VERSION, '6.0.0-dev') == -1 ? 'string' : 'Unicode string', $wanted_re);
$wanted_re = str_replace(array('%unicode\\|string%', '%string\\|unicode%'), version_compare(PHP_VERSION, '6.0.0-dev') == -1 ? 'string' : 'unicode', $wanted_re);
$wanted_re = str_replace(array('%u\\|b%', '%b\\|u%'), version_compare(PHP_VERSION, '6.0.0-dev') == -1 ? '' : 'u', $wanted_re);
// Stick to basics
$wanted_re = str_replace('%e', '\\' . '\\', $wanted_re);
$wanted_re = str_replace('%s', '[^\\r\\n]+', $wanted_re);
$wanted_re = str_replace('%S', '[^\\r\\n]*', $wanted_re);
$wanted_re = str_replace('%a', '.+', $wanted_re);
$wanted_re = str_replace('%A', '.*', $wanted_re);
$wanted_re = str_replace('%w', '\\s*', $wanted_re);
$wanted_re = str_replace('%i', '[+-]?\\d+', $wanted_re);
$wanted_re = str_replace('%d', '\\d+', $wanted_re);
$wanted_re = str_replace('%x', '[0-9a-fA-F]+', $wanted_re);
$wanted_re = str_replace('%f', '[+-]?\\.?\\d+\\.?\\d*(?:[Ee][+-]?\\d+)?', $wanted_re);
$wanted_re = str_replace('%c', '.', $wanted_re);
// %f allows two points "-.0.0" but that is the best *simple* expression
}
/* DEBUG YOUR REGEX HERE
var_dump($wanted_re);
print(str_repeat('=', 80) . "\n");
var_dump($output);
*/
if (preg_match("/^{$wanted_re}\$/s", $output)) {
@unlink($phpfile);
show_result("<span class='pass'>PASS</span>", "{$file}", '');
}
} else {
$wanted = (string) trim($section_text['EXPECT']);
$wanted = preg_replace('/\\r\\n/', "\n", $wanted);
// compare and leave on success
if (!strcmp($output, $wanted)) {
@unlink($phpfile);
show_result("<span class='pass'>PASS</span>", $file, '');
}
$wanted_re = null;
}
// Test failed so we need to report details.
if ($failed_headers) {
$passed = false;
$wanted = (string) $wanted_headers . "\n--HEADERS--\n" . (string) $wanted;
$output = (string) $output_headers . "\n--HEADERS--\n" . (string) $output;
if (isset($wanted_re)) {
$wanted_re = preg_quote($wanted_headers . "\n--HEADERS--\n", '/') . $wanted_re;
}
}
// write .exp
if (file_put_contents($file . '.exp', (string) $wanted, FILE_BINARY) === false) {
error("Cannot create expected test output '{$file}.exp'");
}
// write .out
if (file_put_contents($file . '.out', (string) $output, FILE_BINARY) === false) {
error("Cannot create test output - '{$file}.out'");
}
// write .diff
$diff = generate_diff($wanted, $wanted_re, $output);
if (file_put_contents($file . '.diff', (string) $diff, FILE_BINARY) === false) {
error("Cannot create test diff - '{$file}.diff'");
}
$resultid = "result_" . strlen($phpfile) . '_' . crc32($phpfile);
$sourceid = "source_" . strlen($phpfile) . '_' . crc32($phpfile);
show_result("<span class='fail'>FAIL</span>", $file, ", <a href='{$phpfile}' target='_blank'>Try the script</a>" . ", <a href='#' onclick='\$(\"#{$sourceid}\").slideToggle();return false;'>source</a>" . ", <a href='#' onclick='\$(\"#{$resultid}\").slideToggle();return false;'>details</a>" . "<div id='{$sourceid}' style='display:none;background:#eee;border:1px dashed #888;'><pre>" . htmlspecialchars(trim(_file_get_contents($file, false, null, &$dummyheaders))) . "</pre></div>" . "<div id='{$resultid}' style='display:none;'><table border='1'><tr><td><b>Output</b><br/><pre style='background:#fee;font-size:8px;'>" . htmlspecialchars($output) . "</pre></td><td><b>Expected</b><br/><pre style='background:#efe;font-size:8px;'>" . htmlspecialchars($wanted) . "</pre></td></tr></table></div>");
// write .sh
//if (strpos($log_format, 'S') !== false && file_put_contents($sh_filename, b"#!/bin/sh{$cmd}", FILE_BINARY) === false) {
//error("Cannot create test shell script - $sh_filename");
//}
//chmod($sh_filename, 0755);
/*foreach ($restype as $type) {
$PHP_FAILED_TESTS[$type.'ED'][] = array (
'name' => $file,
'test_name' => (is_array($IN_REDIRECT) ? $IN_REDIRECT['via'] : '') . $tested . " [$tested_file]",
'output' => $output_filename,
'diff' => $diff_filename,
'info' => $info,
);
}*/
}
开发者ID:dw4dev,项目名称:Phalanger,代码行数:101,代码来源:index.php
示例6: run_test
//.........这里部分代码省略.........
}
if (DETAILED) {
echo "\nCONTENT_LENGTH = " . getenv("CONTENT_LENGTH") . "\nCONTENT_TYPE = " . getenv("CONTENT_TYPE") . "\nPATH_TRANSLATED = " . getenv("PATH_TRANSLATED") . "\nQUERY_STRING = " . getenv("QUERY_STRING") . "\nREDIRECT_STATUS = " . getenv("REDIRECT_STATUS") . "\nREQUEST_METHOD = " . getenv("REQUEST_METHOD") . "\nSCRIPT_FILENAME = " . getenv("SCRIPT_FILENAME") . "\nCOMMAND {$cmd}\n";
}
$out = `{$cmd}`;
@unlink($tmp_post);
// Does the output match what is expected?
$output = trim($out);
$output = preg_replace('/\\r\\n/', "\n", $output);
/* when using CGI, strip the headers from the output */
if (isset($old_php) && ($pos = strpos($output, "\n\n")) !== FALSE) {
$output = substr($output, $pos + 2);
}
if (isset($section_text['EXPECTF']) || isset($section_text['EXPECTREGEX'])) {
if (isset($section_text['EXPECTF'])) {
$wanted = trim($section_text['EXPECTF']);
} else {
$wanted = trim($section_text['EXPECTREGEX']);
}
$wanted_re = preg_replace('/\\r\\n/', "\n", $wanted);
if (isset($section_text['EXPECTF'])) {
$wanted_re = preg_quote($wanted_re, '/');
// Stick to basics
$wanted_re = str_replace("%s", ".+?", $wanted_re);
//not greedy
$wanted_re = str_replace("%i", "[+\\-]?[0-9]+", $wanted_re);
$wanted_re = str_replace("%d", "[0-9]+", $wanted_re);
$wanted_re = str_replace("%x", "[0-9a-fA-F]+", $wanted_re);
$wanted_re = str_replace("%f", "[+\\-]?\\.?[0-9]+\\.?[0-9]*(E-?[0-9]+)?", $wanted_re);
$wanted_re = str_replace("%c", ".", $wanted_re);
// %f allows two points "-.0.0" but that is the best *simple* expression
}
/* DEBUG YOUR REGEX HERE
var_dump($wanted_re);
print(str_repeat('=', 80) . "\n");
var_dump($output);
*/
if (preg_match("/^{$wanted_re}\$/s", $output)) {
@unlink($tmp_file);
echo "PASS {$tested}{$info}\n";
if (isset($old_php)) {
$php = $old_php;
}
return 'PASSED';
}
} else {
$wanted = trim($section_text['EXPECT']);
$wanted = preg_replace('/\\r\\n/', "\n", $wanted);
// compare and leave on success
$ok = 0 == strcmp($output, $wanted);
if ($ok) {
@unlink($tmp_file);
echo "PASS {$tested}{$info}\n";
if (isset($old_php)) {
$php = $old_php;
}
return 'PASSED';
}
}
// Test failed so we need to report details.
if ($warn) {
echo "WARN {$tested}{$info}\n";
} else {
echo "FAIL {$tested}{$info}\n";
}
$GLOBALS['__PHP_FAILED_TESTS__'][] = array('name' => $file, 'test_name' => $tested, 'output' => ereg_replace('\\.phpt$', '.log', $file), 'diff' => ereg_replace('\\.phpt$', '.diff', $file), 'info' => $info);
// write .exp
if (strpos($log_format, 'E') !== FALSE) {
$logname = ereg_replace('\\.phpt$', '.exp', $file);
$log = fopen($logname, 'w') or error("Cannot create test log - {$logname}");
fwrite($log, $wanted);
fclose($log);
}
// write .out
if (strpos($log_format, 'O') !== FALSE) {
$logname = ereg_replace('\\.phpt$', '.out', $file);
$log = fopen($logname, 'w') or error("Cannot create test log - {$logname}");
fwrite($log, $output);
fclose($log);
}
// write .diff
if (strpos($log_format, 'D') !== FALSE) {
$logname = ereg_replace('\\.phpt$', '.diff', $file);
$log = fopen($logname, 'w') or error("Cannot create test log - {$logname}");
fwrite($log, generate_diff($wanted, $output));
fclose($log);
}
// write .log
if (strpos($log_format, 'L') !== FALSE) {
$logname = ereg_replace('\\.phpt$', '.log', $file);
$log = fopen($logname, 'w') or error("Cannot create test log - {$logname}");
fwrite($log, "\n---- EXPECTED OUTPUT\n{$wanted}\n---- ACTUAL OUTPUT\n{$output}\n---- FAILED\n");
fclose($log);
error_report($file, $logname, $tested);
}
if (isset($old_php)) {
$php = $old_php;
}
return $warn ? 'WARNED' : 'FAILED';
}
开发者ID:OTiZ,项目名称:osx,代码行数:101,代码来源:run-tests.php
示例7: run_test
//.........这里部分代码省略.........
// Does the output match what is expected?
$output = str_replace("\r\n", "\n", trim($out));
/* when using CGI, strip the headers from the output */
if (isset($old_php) && ($pos = strpos($output, "\n\n")) !== FALSE) {
$output = substr($output, $pos + 2);
}
if (isset($section_text['EXPECTF']) || isset($section_text['EXPECTREGEX'])) {
if (isset($section_text['EXPECTF'])) {
$wanted = trim($section_text['EXPECTF']);
} else {
$wanted = trim($section_text['EXPECTREGEX']);
}
$wanted_re = preg_replace('/\\r\\n/', "\n", $wanted);
if (isset($section_text['EXPECTF'])) {
$wanted_re = preg_quote($wanted_re, '/');
// Stick to basics
$wanted_re = str_replace("%e", '\\' . DIRECTORY_SEPARATOR, $wanted_re);
$wanted_re = str_replace("%s", ".+?", $wanted_re);
//not greedy
$wanted_re = str_replace("%w", "\\s*", $wanted_re);
$wanted_re = str_replace("%i", "[+\\-]?[0-9]+", $wanted_re);
$wanted_re = str_replace("%d", "[0-9]+", $wanted_re);
$wanted_re = str_replace("%x", "[0-9a-fA-F]+", $wanted_re);
$wanted_re = str_replace("%f", "[+\\-]?\\.?[0-9]+\\.?[0-9]*(E-?[0-9]+)?", $wanted_re);
$wanted_re = str_replace("%c", ".", $wanted_re);
// %f allows two points "-.0.0" but that is the best *simple* expression
}
/* DEBUG YOUR REGEX HERE
var_dump($wanted_re);
print(str_repeat('=', 80) . "\n");
var_dump($output);
*/
if (preg_match("/^{$wanted_re}\$/s", $output)) {
$passed = true;
if (!$cfg['keep']['php']) {
@unlink($test_file);
}
if (isset($old_php)) {
$php = $old_php;
}
if (!$leaked) {
show_result("PASS", $tested, $tested_file, '', $temp_filenames);
return 'PASSED';
}
}
} else {
$wanted = trim($section_text['EXPECT']);
$wanted = preg_replace('/\\r\\n/', "\n", $wanted);
// compare and leave on success
if (!strcmp($output, $wanted)) {
$passed = true;
if (!$cfg['keep']['php']) {
@unlink($test_file);
}
if (isset($old_php)) {
$php = $old_php;
}
if (!$leaked) {
show_result("PASS", $tested, $tested_file, '', $temp_filenames);
return 'PASSED';
}
}
$wanted_re = NULL;
}
// Test failed so we need to report details.
if ($leaked) {
$restype = 'LEAK';
} else {
if ($warn) {
$restype = 'WARN';
} else {
$restype = 'FAIL';
}
}
if (!$passed) {
// write .exp
if (strpos($log_format, 'E') !== FALSE && file_put_contents($exp_filename, $wanted) === FALSE) {
error("Cannot create expected test output - {$exp_filename}");
}
// write .out
if (strpos($log_format, 'O') !== FALSE && file_put_contents($output_filename, $output) === FALSE) {
error("Cannot create test output - {$output_filename}");
}
// write .diff
if (strpos($log_format, 'D') !== FALSE && file_put_contents($diff_filename, generate_diff($wanted, $wanted_re, $output)) === FALSE) {
error("Cannot create test diff - {$diff_filename}");
}
// write .log
if (strpos($log_format, 'L') !== FALSE && file_put_contents($log_filename, "\n---- EXPECTED OUTPUT\n{$wanted}\n---- ACTUAL OUTPUT\n{$output}\n---- FAILED\n") === FALSE) {
error("Cannot create test log - {$log_filename}");
error_report($file, $log_filename, $tested);
}
}
show_result($restype, $tested, $tested_file, $info, $temp_filenames);
$PHP_FAILED_TESTS[$restype . 'ED'][] = array('name' => $file, 'test_name' => (is_array($IN_REDIRECT) ? $IN_REDIRECT['via'] : '') . $tested . " [{$tested_file}]", 'output' => $output_filename, 'diff' => $diff_filename, 'info' => $info);
if (isset($old_php)) {
$php = $old_php;
}
return $restype . 'ED';
}
开发者ID:akhan786,项目名称:LaunchDevelopment,代码行数:101,代码来源:run-tests.php
注:本文中的generate_diff函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论