MantisBT

View Revisions: Issue #1540 All Revisions ] Back to Issue ]
Summary 0001540: Multiline class instantiate within method call is not covered when using php-fpm
Revision 2018-12-27 18:24 by derick
Description When 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.

//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)
print_r(
    [
        'phpversion(\'xdebug\')' => phpversion('xdebug'),
        'phpversion()'           => phpversion(),
        'php_sapi_name()'        => php_sapi_name()
    ]
);
print_r($coverage);


When executing above code via CLI, following output is generated:
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
        )
)


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:
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
        )
)
Revision 2018-12-27 18:23 by derick
Description When 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.

//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);


When executing above code via CLI, following output is generated:
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
        )
)


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:
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
        )
)
Revision 2018-03-26 15:31 by theoboldt
Description When 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}


Copyright © 2000 - 2019 MantisBT Team
Powered by Mantis Bugtracker