PHPUnit Code Coverage not working and always saying incorrect whitelist config

Viewed 5418

Ich checked on several sources on the network and also here on stack overflow but couldn't solve it so far.

Heres my config:

<?xml version="1.0" encoding="UTF-8"?>

<!-- https://phpunit.de/manual/current/en/appendixes.configuration.html -->
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/6.0/phpunit.xsd"
     backupGlobals="false"
     colors="true"
     bootstrap="../../src/test.bootstrap.php"
     convertErrorsToExceptions="true"
     convertNoticesToExceptions="true"
     convertWarningsToExceptions="true"
     processIsolation="false"
     stopOnError="false"
     stopOnFailure="false"
     stopOnIncomplete="false"
     stopOnSkipped="false"
     stopOnRisky="false"
     verbose="true"
>
<!--printerFile="vendor/whatthejeff/emoji-phpunit-resultprinter/src/Emoji/PHPUnit/ResultPrinter.php"-->
<!--printerClass="Emoji\PHPUnit\ResultPrinter"-->
<php>
    <ini name="error_reporting" value="-1" />
    <server name="KERNEL_DIR" value="src/" />
    <env name="BOOTSTRAP_CLEAR_CACHE_ENV" value="testing"/>
</php>

<loggin>
    <log type="coverage-html" target="build/coverage"/>
    <log type="coverage-clover" target="build/logs/clover.xml"/>
    <log type="coverage-crap4j" target="build/logs/crap4j.xml"/>
    <log type="junit" target="build/logs/junit.xml" logIncompleteSkipped="false"/>
</loggin>

<testsuites>
    <testsuite name="Project Test Suite">
        <directory>src/*/*Bundle/Tests</directory>
        <directory>src/*/Bundle/*Bundle/Tests</directory>
    </testsuite>
</testsuites>

<filter>
    <whitelist>
        <directory>../src</directory>
        <exclude>
            <directory>src/*/*Bundle/Resources</directory>
            <directory>src/*/*Bundle/Tests</directory>
            <directory>src/*/Bundle/*Bundle/Resources</directory>
            <directory>src/*/Bundle/*Bundle/Tests</directory>
        </exclude>
    </whitelist>
</filter>
</phpunit>

Due to the Build Server limitations I need to call phpunit with the following command:

./build/bin/phpunit.phar -c build/config/phpunit.xml --coverage-clover build/logs/clover.xml --coverage-crap4j build/logs/crap4j.xml --coverage-html build/coverage --coverage-xml build/logs/coverage.xml --log-junit build/logs/junit.xml --testdox-html build/testdox/testdox.html  --testdox-xml build/logs/testdox.xml src/ -v

Everything works except code coverage heres the Result Output:

    PHPUnit 6.1.4 by Sebastian Bergmann and contributors.

    Runtime:       PHP 7.1.5-1+0~20170522123046.25+jessie~1.gbpb8686b with Xdebug 2.6.0-dev
    Configuration: /home/testcase/build-directories/build/config/phpunit.xml
    Error:         Incorrect whitelist config, no code coverage will be generated.

    ..................                                                18 / 18 (100%)

    Time: 945 ms, Memory: 6.00MB

    OK (18 tests, 68 assertions)

I'm a little bit irritated as unit tests itself are working. The Reds Message can be ignored (Hope so) as the Redis server is not yet fully configured.

I'm using oh-unit 6.1.4

Please give me a clue where the error is in my configuration

3 Answers

The directory given in the filter/whitelist/directory XML node is relative to the directory that contains the phpunit configuration file.

I think you should use ../../src.

I have the same issue, so I have update the whitelist directory path in phpunit.xml

    <whitelist>
      <directory>./web/core/includes</directory>
      <directory>./web/core/lib</directory>
      <!-- Extensions can have their own test directories, so exclude those. -->
      <directory>./web/core/modules</directory>
      <exclude>
        <directory>./web/core/modules/*/src/Tests</directory>
        <directory>./web/core/modules/*/tests</directory>
      </exclude>
      <directory>./web/modules</directory>
      <exclude>
        <directory>./web/modules/*/src/Tests</directory>
        <directory>./web/modules/*/tests</directory>
        <directory>./web/modules/*/*/src/Tests</directory>
        <directory>./web/modules/*/*/tests</directory>
      </exclude>
      <directory>./web/sites</directory>
     </whitelist>

Related