100% покрытие кода различными версиями PHP в Travis-CI

Я работаю над своим любимым проектом трубы и стараюсь максимально приблизиться к покрытию 100% кода (я использую спецодежда) для этого).

Проблема, с которой я сталкиваюсь, заключается в следующем: как получить 100% покрытие кода различными версиями PHP? На данный момент мой проект не содержит специфичный для версии код, но это, вероятно, изменится очень скоро.

Я хотел бы получить 100% покрытие кода для PHP 5.4, даже если код, связанный с генераторами, не будет выполняться при тестировании против 5.4.

Кто-нибудь может предложить стратегию или совет о том, как сохранить мою статистику покрытия подотчетной?

Вот мой .travis.yml:

language: php

php:
- 5.6
- 5.5
- 5.4
- hhvm

install:
- composer require satooshi/php-coveralls:~0.6@stable

before_script:
- curl -s http://getcomposer.org/installer | php
- php composer.phar install --dev
- mkdir -p build/logs

script:
- phpunit --coverage-clover build/logs/clover.xml

after_success:
- sh -c 'if [ "$TRAVIS_PHP_VERSION" != "hhvm" ]; then php vendor/bin/coveralls -v; fi;'

Вот мой phpunit.xml:

<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"backupStaticAttributes="false"colors="true"convertErrorsToExceptions="true"convertNoticesToExceptions="true"convertWarningsToExceptions="true"processIsolation="false"stopOnFailure="false"stopOnError="false"stopOnIncomplete="false"stopOnSkipped="false"syntaxCheck="false"bootstrap="vendor/autoload.php">
<testsuites>
<testsuite name="Application Test Suite">
<directory>./tests/</directory>
</testsuite>
</testsuites>
<!-- Add a filter to make sure we don't count venders and Tests in the coverage report -->
<filter>
<whitelist>
<directory suffix="Test.php">./src</directory>
<exclude>
<directory>./docs</directory>
<directory>./vendor</directory>
<directory>./tests</directory>
</exclude>
</whitelist>
</filter>
</phpunit>

PS: я знаю, что Code Coverage — это не серебряная пуля.

2

Решение

Используя другой пример, я found, Я обнаружил, что @requires негативно влияет на покрытие кода. Например:

<?php

require_once('class.php');

class FooTest extends PHPUnit_Framework_TestCase {
/**
* @requires PHP 5.5
* @covers Foo::greater
*/
public function testGreater() {
$x = new Foo();
$this->assertSame(2, $x->greater());
}

public function testLesser() {
$x = new Foo();
$this->assertSame(1, $x->lesser());
}
}

<?php
class Foo {
public function greater() {
return 2;
}

public function lesser() {
return 1;
}
}

На мой взгляд, @covers должен заставить покрытие кода отмечать greater метод, как описано. Но это не так:

введите описание изображения здесь

0

Другие решения

Других решений пока нет …