Phpunit: Phpdbg рдХреЗ рддрд╣рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрд▓рдЧрд╛рд╡ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 30 рдирд╡ре░ 2019  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: sebastianbergmann/phpunit

- рдХреГрдкрдпрд╛ PHPUnit рдХреЗ рдРрд╕реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рди рдХрд░реЗрдВ рдЬреЛ рдЕрдм рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред PHPUnit рдХреЗ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА https://phpunit.de/supported-versions.html рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред - рдпрджрд┐ рдЖрдк PHP рдХреЗ рдХрд┐рд╕реА рдРрд╕реЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ PHPUnit рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рди рдХрд░реЗрдВред рдПрдХ рд╕реВрдЪреА рдЬреЛ рджрд┐рдЦрд╛рддреА рд╣реИ рдХрд┐ PHP рдХрд╛ рдХреМрди рд╕рд╛ рд╕рдВрд╕реНрдХрд░рдг PHPUnit рдХреЗ рдХрд┐рд╕ рд╕рдВрд╕реНрдХрд░рдг рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИ https://phpunit.de/supported-versions.html рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред - рдХреГрдкрдпрд╛ рдЗрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рднрд░реЗрдВред - рдХреГрдкрдпрд╛ рдиреАрдЪреЗ рджреА рдЧрдИ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд░рдЦреЗрдВред - рдХреГрдкрдпрд╛ "рд╕рдВрдЧреАрддрдХрд╛рд░ рдЬрд╛рдирдХрд╛рд░реА | рд╕реЙрд░реНрдЯ" рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ рдпрджрд┐ рдЖрдкрдиреЗ рд╕рдВрдЧреАрддрдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ PHPUnit рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИред - рдХреГрдкрдпрд╛ рдХреЛрдб рдХреЛ рдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВ (рдЙрдЪрд┐рдд рдорд╛рд░реНрдХрдЕрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)ред рдХреЛрдб рдХреЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдкреЛрд╕реНрдЯ рди рдХрд░реЗрдВред - рдЕрдЧрд░ рдЖрдк рд╕рдорд░реНрдерди рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╣реИрдВ рддреЛ https://phpunit.de/support.html рдкрд░ рдЬрд╛рдПрдВред - рдХреГрдкрдпрд╛ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рд╕рдмрдорд┐рдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдХреЛ рд╣рдЯрд╛ рджреЗрдВред

| рдХреНрдпреВ | рдП
| ------------------------| ---------------
| PHPUnit рд╕рдВрд╕реНрдХрд░рдг | 8.4.3
| рдкреАрдПрдЪрдкреА рд╕рдВрд╕реНрдХрд░рдг | 7.4.0 (phpdbg рдПрд╕рдПрдкреАрдЖрдИ)
| рд╕реНрдерд╛рдкрдирд╛ рд╡рд┐рдзрд┐ | рд╕рдВрдЧреАрддрдХрд╛рд░

рд╕рд╛рд░рд╛рдВрд╢

рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрд▓рдЧрд╛рд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ phpdbg рддрд╣рдд рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддрд╛ рд╣реИред рдкрд╣рд▓реЗ рддреЛ рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдпрд╣ #3772 рдХрд╛ рдкреНрд░рддрд┐рдЧрдорди рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдХрд╛рд░рдг рд▓рдЧрддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд▓рд╛рдЗрди рдореЗрдВ рдмрдЧ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ TestCaseClass.tpl )ред рдпреЗ рджреЛрдиреЛрдВ рдкрдВрдХреНрддрд┐рдпрд╛рдБ STDOUT рд╕реЗ рдкрдврд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреА рд╣реИрдВ, рдкрд╣рд▓реЗ рдпрд╣ рдЬрд╛рдБрдЪреЗ рдмрд┐рдирд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдкрдардиреАрдп рдзрд╛рд░рд╛ рд╣реИред

рдЕрдЧрд░ рдореИрдВ stream_get_meta_data(STDOUT) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреАрдмрдЧ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдбрд╛рд▓рддрд╛ рд╣реВрдВ, рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ STDOUT рдкрдврд╝рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ:

array(9) {
  ["timed_out"]=>
  bool(false)
  ["blocked"]=>
  bool(true)
  ["eof"]=>
  bool(false)
  ["wrapper_type"]=>
  string(3) "PHP"
  ["stream_type"]=>
  string(5) "STDIO"
  ["mode"]=>
  string(2) "wb"
  ["unread_bytes"]=>
  int(0)
  ["seekable"]=>
  bool(false)
  ["uri"]=>
  string(12) "php://stdout"
}

рдпрд╣ рд╕рднреА рджреЗрдЦреЗрдВ:

рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░

phpdbg рддрд╣рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрд▓рдЧрд╛рд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдИ рднреА рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдЪрд▓рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддрд╛ рд╣реИ: PHPUnit\Framework\Exception: Notice: stream_get_contents(): read of 8192 bytes failed with errno=9 Bad file descriptor in Standard input code on line 336 ред

рдХреИрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░реЗрдВ

рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдХреЛ phpdbg рддрд╣рдд рдЪрд▓рд╛рдПрдВ:

<?php

use PHPUnit\Framework\TestCase;

class ReproTest extends TestCase
{
    /**
     * <strong i="20">@doesNotPerformAssertions</strong>
     * <strong i="21">@runInSeparateProcess</strong>
     */
    public function testProcessIsolation()
    {
    }
}

рдФрд░ рдпрд╣ рдЖрдЙрдЯрдкреБрдЯ рджреЗрдЦреЗрдВ:

$ phpdbg -qrr vendor/bin/phpunit
PHPUnit 8.4.3 by Sebastian Bergmann and contributors.

E                                                                   1 / 1 (100%)

Time: 121 ms, Memory: 6.00 MB

There was 1 error:

1) ReproTest::testProcessIsolation
PHPUnit\Framework\Exception: Notice: stream_get_contents(): read of 8192 bytes failed with errno=9 Bad file descriptor in Standard input code on line 336

ERRORS!
Tests: 1, Assertions: 0, Errors: 1.

рдЕрдкреЗрдХреНрд╖рд┐рддреН рд╡реНрдпрд╡рд╣рд╛рд░

рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрд▓рдЧрд╛рд╡ phpdbg рдХреЗ рд▓рд┐рдП рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреИрд╕реЗ рдпрд╣ рдЕрдиреНрдп PHP SAPI рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИред

composer info | sort рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ

doctrine/instantiator              1.3.0   A small, lightweight utility to instantiate objects in PHP without invoking their constructors
myclabs/deep-copy                  1.9.3   Create deep copies (clones) of your objects
phar-io/manifest                   1.0.3   Component for reading phar.io manifest information from a PHP Archive (PHAR)
phar-io/version                    2.0.1   Library for handling version information and constraints
phpdocumentor/reflection-common    2.0.0   Common reflection classes used by phpdocumentor to reflect the code structure
phpdocumentor/reflection-docblock  4.3.2   With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.
phpdocumentor/type-resolver        1.0.1   A PSR-5 based resolver of Class names, Types and Structural Element Names
phpspec/prophecy                   1.9.0   Highly opinionated mocking framework for PHP 5.3+
phpunit/php-code-coverage          7.0.10  Library that provides collection, processing, and rendering functionality for PHP code coverage information.
phpunit/php-file-iterator          2.0.2   FilterIterator implementation that filters files based on a list of suffixes.
phpunit/php-text-template          1.2.1   Simple template engine.
phpunit/php-timer                  2.1.2   Utility class for timing
phpunit/php-token-stream           3.1.1   Wrapper around PHP's tokenizer extension.
phpunit/phpunit                    8.4.3   The PHP Unit Testing framework.
sebastian/code-unit-reverse-lookup 1.0.1   Looks up which function or method a line of code belongs to
sebastian/comparator               3.0.2   Provides the functionality to compare PHP values for equality
sebastian/diff                     3.0.2   Diff implementation
sebastian/environment              4.2.3   Provides functionality to handle HHVM/PHP environments
sebastian/exporter                 3.1.2   Provides the functionality to export PHP variables for visualization
sebastian/global-state             3.0.0   Snapshotting of global state
sebastian/object-enumerator        3.0.3   Traverses array structures and object graphs to enumerate all referenced objects
sebastian/object-reflector         1.1.1   Allows reflection of object attributes, including inherited and non-public ones
sebastian/recursion-context        3.0.0   Provides functionality to recursively process PHP variables
sebastian/resource-operations      2.0.1   Provides a list of PHP built-in functions that operate on resources
sebastian/type                     1.1.3   Collection of value objects that represent the types of the PHP type system
sebastian/version                  2.0.1   Library that helps with managing the version number of Git-hosted PHP projects
symfony/polyfill-ctype             v1.13.0 Symfony polyfill for ctype functions
theseer/tokenizer                  1.1.3   A small library for converting tokenized PHP source code into XML and potentially other formats
webmozart/assert                   1.6.0   Assertions to validate method input/output with nice error messages.
featurprocess-isolation typbug

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореИрдВ рдЗрд╕ рдмрд╛рдд рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реВрдБред

рдореИрдВ рдХрд┐рд╕реА рдРрд╕реЗ рдореБрджреНрджреЗ рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдордп рдирд╣реАрдВ рд▓рдЧрд╛рдКрдВрдЧрд╛ рдЬреЛ рдХреЗрд╡рд▓ PHPDBG рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реЛред рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП php-code-coverage рдХреЗ рд╕рд╛рде-рд╕рд╛рде PHPUnit рд╕реЗ рднреА рд╕рдорд░реНрдерди рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдпрдорд┐рдд PHP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рд╕реНрдЯреНрд░реАрдо рдХреЛ рдЧреИрд░-рдкрдардиреАрдп рдХреЗ рд░реВрдк рдореЗрдВ рднреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдЧрд╛:

php -r 'echo stream_get_meta_data(STDOUT)["mode"], "\n";' | cat
// Outputs: wb

рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ PHP 7.4.0 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреА ред рдпрд╣ рдПрдХ PHP рдмрдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдмреЗрд╣рддрд░ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

dciancu picture dciancu  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

dkarlovi picture dkarlovi  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

TiMESPLiNTER picture TiMESPLiNTER  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

stemis picture stemis  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

keradus picture keradus  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ