mirror of
https://github.com/php/php-src.git
synced 2024-11-23 18:04:36 +08:00
1ad08256f3
This patch adds missing newlines, trims multiple redundant final newlines into a single one, and trims redundant leading newlines. According to POSIX, a line is a sequence of zero or more non-' <newline>' characters plus a terminating '<newline>' character. [1] Files should normally have at least one final newline character. C89 [2] and later standards [3] mention a final newline: "A source file that is not empty shall end in a new-line character, which shall not be immediately preceded by a backslash character." Although it is not mandatory for all files to have a final newline fixed, a more consistent and homogeneous approach brings less of commit differences issues and a better development experience in certain text editors and IDEs. [1] http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_206 [2] https://port70.net/~nsz/c/c89/c89-draft.html#2.1.1.2 [3] https://port70.net/~nsz/c/c99/n1256.html#5.1.1.2
75 lines
1.6 KiB
PHP
75 lines
1.6 KiB
PHP
<?php
|
|
/*
|
|
Helper for simple tests to check return-value. Usage:
|
|
|
|
$tests = <<<TESTS
|
|
expected_return_value === expression
|
|
2 === 1+1
|
|
4 === 2*2
|
|
FALSE === @ fopen('non_existent_file')
|
|
TESTS;
|
|
include( 'tests/quicktester.inc' );
|
|
|
|
Expect: OK
|
|
|
|
Remember to NOT put a trailing ; after a line!
|
|
|
|
*/
|
|
error_reporting(E_ALL);
|
|
$tests = explode("\n",$tests);
|
|
$success = TRUE;
|
|
foreach ($tests as $n=>$test)
|
|
{
|
|
// ignore empty lines
|
|
if (!$test) continue;
|
|
|
|
// warn for trailing ;
|
|
if (substr(trim($test), -1, 1) === ';') {
|
|
echo "WARNING: trailing ';' found in test ".($n+1)."\n";
|
|
exit;
|
|
}
|
|
|
|
// try for operators
|
|
$operators = array('===', '~==');
|
|
$operator = NULL;
|
|
foreach ($operators as $a_operator) {
|
|
if (strpos($test, $a_operator)!== FALSE) {
|
|
$operator = $a_operator;
|
|
list($left,$right) = explode($operator, $test);
|
|
break;
|
|
}
|
|
}
|
|
if (!$operator) {
|
|
echo "WARNING: unknown operator in '$test' (1)\n";
|
|
exit;
|
|
}
|
|
|
|
$left = eval("return ($left );");
|
|
$right = eval("return ($right);");
|
|
switch (@$operator) {
|
|
case '===': // exact match
|
|
$result = $left === $right;
|
|
break;
|
|
case '~==': // may differ after 12th significant number
|
|
if ( !is_float($left ) && !is_int($left )
|
|
|| !is_float($right) && !is_int($right)) {
|
|
$result = FALSE;
|
|
break;
|
|
}
|
|
$result = abs(($left-$right) / $left) < 1e-12;
|
|
break;
|
|
default:
|
|
echo "WARNING: unknown operator in '$test' (2)\n";
|
|
exit;
|
|
}
|
|
|
|
$success = $success && $result;
|
|
if (!$result) {
|
|
echo "\nAssert failed:\n";
|
|
echo "$test\n";
|
|
echo "Left: ";var_dump($left );
|
|
echo "Right: ";var_dump($right);
|
|
}
|
|
}
|
|
if ($success) echo "OK";
|