Phpunit: 7.2.5 quebra BC!

Criado em 21 jun. 2018  ·  4Comentários  ·  Fonte: sebastianbergmann/phpunit

| Q | UMA
| -------------------- | ---------------
| Versão PHPUnit | 7.2.5
| Versão PHP | 7.1, por exemplo
| Método de instalação | Compositor, mas não importa

recém-lançado 7.2.5 quebra BC:
https://github.com/sebastianbergmann/phpunit/commit/bcb4c788c7872cd2f885ccf50285f6feb7cfff1a#diff -9ae7a972d07df5f73629d5d315bf405aR521

declaração formal do método alterado:

-    public static function assertNotEquals($expected, $actual, string $message = '', $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false): void
+    public static function assertNotEquals($expected, $actual, string $message = '', float $delta = 0.0, int $maxDepth = 10, bool $canonicalize = false, bool $ignoreCase = false): void

para isso, minha integração falha em cabeçalhos de método incompatíveis:
https://travis-ci.org/FriendsOfPHP/PHP-CS-Fixer/jobs/394945074#L655

PHP Fatal error:  Uncaught Declaration of
PHPUnitGoodPractices\Traits\IdentityOverEqualityTrait::assertNotEquals($expected, $actual, string $message = '', $delta = 0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false): void
should be compatible with
PHPUnit\Framework\Assert::assertNotEquals($expected, $actual, string $message = '', float $delta = 0, int $maxDepth = 10, bool $canonicalize = false, bool $ignoreCase = false): void

Comentários muito úteis

Devo torná-los final no PHPUnit 8 então :-)

Todos 4 comentários

Por que as pessoas sobrescrevem as afirmações do PHPUnit? suspirar

história curta? porque eles não são marcados como finais

longa história? vide https://github.com/PHPUnitGoodPractices/Traits/blob/master/src/IdentityOverEqualityTrait.php#L46 -L56 para meu caso concreto

Devo torná-los final no PHPUnit 8 então :-)

Então, podemos primeiro trazer de um tópico morto de registrar asserções / expectativas? Portanto, pode-se decidir ter algumas asserções extras disponíveis globalmente (sem importação manual em cada teste) ou não registrar todas as embutidas?
Mas, em geral,: +1: para métodos / classes / exposição de interfaces finais sobre implementações concretas

Além disso, deixe-me solicitar isso mais uma vez;) por favor, vamos começar a usar a tag @internal para coisas fora da promessa do BC, que não devem ser usadas fora desta biblioteca.
(Por exemplo, posso preparar PR que tornaria tudo marcado interno, e então abriríamos o que será público)

Esta página foi útil?
0 / 5 - 0 avaliações