MantisBT

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0001540XdebugCode Coveragepublic2018-03-26 15:312018-04-12 04:25
Reportertheoboldt 
Assigned To 
PrioritynormalSeveritymajorReproducibilityalways
StatusnewResolutionopen 
PlatformLinuxOSUbuntuOS Version16.04.1
Product Version2.6.0 
Target VersionFixed in Version 
Summary0001540: Multiline class instantiate within method call is not covered when using php-fpm
DescriptionWhen instantiating a class within a method call and the variables for the new object are passed in separate lines, the lines containing the parameters are not marked as covered when php is executed by FPM. The lines are marked as covered as expected when the same file is executed via CLI using same php/xdebug version.

{code}
//TEST
class A {
    public function b($a, $b, $c, $d) {
        return new B(
            $a,
            $b,
            $c,
            $d
        );
    }
}

class B {
    public function __construct($a, $b, $c, bool $d) { }
}

xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
$a = new A();
$b = $a->b(
    'a',
    'b',
    'c',
    'd'
);
$coverage = xdebug_get_code_coverage();
xdebug_stop_code_coverage();


//EVALUATE (not part of proof)
echo "
\n";
print_r(
    [
        'phpversion(\'xdebug\')' => phpversion('xdebug'),
        'phpversion()' => phpversion(),
        'php_sapi_name()' => php_sapi_name()
    ]
);
print_r($coverage);
{code}

When executing above code via CLI, following output is generated:
{code}

Array
(
    [phpversion('xdebug')] => 2.6.0
    [phpversion()] => 7.0.28-0ubuntu0.16.04.1
    [php_sapi_name()] => cli
)
Array
(
    [/intproj/users/erik/xdebug_coverage_issues/multiline_class_instantiate.php] => Array
        (
            [11] => 1
            [12] => 1
            [13] => 1
            [14] => 1
            [15] => 1
            [21] => 1
            [25] => 1
            [26] => 1
            [27] => 1
            [28] => 1
            [29] => 1
            [30] => 1
            [32] => 1
        )
)
{code}

When executing above code via Apache 2 (Server API: FPM/FastCGI, PHP API: 20151012, PHP Extension: 20151012) the output differs significantly for line 12, 13, 14, 15:
{code}
Array
(
    [phpversion('xdebug')] => 2.6.0
    [phpversion()] => 7.0.28-0ubuntu0.16.04.1
    [php_sapi_name()] => fpm-fcgi
)
Array
(
    [/intproj/users/erik/xdebug_coverage_issues/multiline_class_instantiate.php] => Array
        (
            [11] => 1
            [12] => -1
            [13] => -1
            [14] => -1
            [15] => -1
            [21] => 1
            [25] => 1
            [26] => 1
            [30] => 1
            [32] => 1
        )
)
{code}
Steps To ReproduceExecute provided snipped via php-fpm and via cli as well, compare results
TagsPHP7
Operating Systemubuntu0.16.04.1
PHP Version7.0.25-7.0.29
Attached Files? file icon multiline_class_instantiate.php [^] (838 bytes) 2018-03-26 15:31

- Relationships

-  Notes
There are no notes attached to this issue.

- Issue History
Date Modified Username Field Change
2018-03-26 15:31 theoboldt New Issue
2018-03-26 15:31 theoboldt File Added: multiline_class_instantiate.php
2018-03-26 15:48 theoboldt Tag Attached: PHP7


Copyright © 2000 - 2018 MantisBT Team
Powered by Mantis Bugtracker