When run-tests.php has been typed[1], the type of `$time` has been
chosen to be `int`. This, however, leads to truncation, and the
somewhat relevant subsecond precision is lost. We fix that by
changing the type to `float`, although `int|string` would be more
appropriate, but requires PHP ≥ 7.4.0. Another option would be to
move the `number_format()` formatting into `junit_mark_test_as()`.
[1] <11274f53e7>
Closes GH-7836.
The lack of such a check leads to false-passes of tests on Windows
which expect no output, but produce a segfault or similar issue. I
discovered this a while ago due to bad tests in an extension I maintain.
Closes GH-6722.
When no test paths are specified this shows up when 'make test' is used on a PECL extension without specifying tests to run (or in php-src too, I guess...)
Closes GH-6717.
Mentioned in https://github.com/php/php-src/pull/5965#discussion_r467621123
This PR proposes 3 lines of context so the impact can be seen in tests.
Other `diff` programs show around 3 lines of context.
(This helps indicate exactly which position a test should be updated
to add a new expected line at)
Use the mapping for choosing order to display diffs
Properly include context in cases where the expected output had more lines than
the actual output, e.g.
```
--FILE--
A
A1
A
C
NEARBY
--EXPECTF--
A
B
A1
B
A
B
A
B
NEARBY
```
Closes GH-5968
And add a --color option for run-tests.php
See https://no-color.org/
> an informal standard is hereby proposed:
>
> All command-line software which outputs text with ANSI color added should check
> for the presence of a `NO_COLOR` environment variable that, when present
> (regardless of its value), prevents the addition of ANSI color.
This uses green for lines with `+` and red for lines with `-`.
Colors(Red and Green) would make the failure causes stand out visually when scrolling through errors.
Closes GH-5965
The run-tests.php file already requires php 7 syntax.
Done automatically with phpcbf with no other changes done/planned.
This file is already using short arrays in other places.
run-tests has already been substantially refactored in PHP 8.0
compared to PHP 7.4.
This makes merge conflicts more likely, but changes to run-tests.php on older
versions are less frequent bug fixes.
Add a `zend.exception_string_param_max_len` ini setting.
(same suffix as `log_errors_max_len`)
Allow values between 0 and 1000000 bytes.
For example, with zend.exception_string_param_max_len=0,
"" would represent the empty string, and "..." would represent something
longer than the empty string.
Previously, this was hardcoded as exactly 15 bytes.
Discussion: https://externals.io/message/110717
Closes GH-5769
As discussed on GH-5632, the HTML functionality does not appear
to be in active use. For HTML rendering of test results, it is
suggested to instead use the JUnit integration, in combination
with your favorite JUnit viewer.
Closes GH-5705.
Don't connect to each worker individually: First spawn all processes
and then establish connections in any order.
This avoids a ~1s wait when running on many cores.
The test runner currently defaults to running the entire test suite if
no selected tests can be found. This can be unexpected.
For example the ext/mysqlnd/ directory has no tests, if you specify that
directory when testing the entire test suite will be run.
run-tests.php [options] ext/mysqlnd/
Closes GH-5605.
--file-cache-prime populates the file cache,
--file-cache-use uses the file cache.
And fix a number of tests to run under file cache or disabled
timestamp validation.
I used php-cs-fixer to do the cs fixes. The configuration I used is
posted below. The reason I disabled some of the rules is because they
create too much noise and would make it difficult to review. But please
feel free to close this PR and run the php-cs-fixer yourself.
<?php
$config = PhpCsFixer\Config::create();
$config->setRiskyAllowed(false);
$config->setRules([
'@PSR2' => true,
'@Symfony' => true,
'array_syntax' => false,
'binary_operator_spaces' => false,
'blank_line_before_statement' => false,
'concat_space' => false,
'increment_style' => false,
'phpdoc_align' => false,
'single_quote' => false,
'trailing_comma_in_multiline_array' => false,
'unary_operator_spaces' => false,
'yoda_style' => false,
]);
$finder = PhpCsFixer\Finder::create();
$finder->in(getcwd());
$finder->exclude('Zend');
$finder->exclude('build');
$finder->exclude('ext');
$finder->exclude('pear');
$finder->exclude('sapi');
$finder->exclude('scripts');
$finder->exclude('win32');
$config->setFinder($finder);
return $config;
Closes GH-5557.
The FILE_BINARY (and FILE_TEXT) constants are not really valid or useful
constants. It looks like they were added in 5.2.7 and have "no effect,
and are only available for forward compatibility."
See: https://www.php.net/manual/en/filesystem.constants.php
The default value of the file_put_contents() flags parameter is 0 and
FILE_BINARY is set to 0, so removing it doesn't change functionality.
P.S. Maybe those constants should be deprecated or removed in 8.0.
Closes GH-5556.
On Windows, reusing/sharing of OPcache instances with different
configuration is not necessarily supported, so we have to make that it
does not happen for the clean scripts, by using `$orig_ini_settings`
instead of `$clean_params`.
var_dump() is debugging functionality, so it should print
floating-point numbers accurately. We do this by switching
to serialize_precision, which (by default) will print with
as much precision as necessary to preserve the exact value
of the float.
This also affects debug_zval_dump().
Closes GH-5172.