Phpunit: 7.2.5 rompe BC!

Creado en 21 jun. 2018  ·  4Comentarios  ·  Fuente: sebastianbergmann/phpunit

| Q | A
| -------------------- | ---------------
| Versión PHPUnit | 7.2.5
| Versión PHP | 7.1, por ejemplo
| Método de instalación | Compositor, pero no importa

recién lanzado 7.2.5 rompe BC:
https://github.com/sebastianbergmann/phpunit/commit/bcb4c788c7872cd2f885ccf50285f6feb7cfff1a#diff -9ae7a972d07df5f73629d5d315bf405aR521

declaración formal de método cambiado:

-    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 eso, mi integración falla en encabezados de métodos incompatibles:
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

Comentario más útil

Los haré final en PHPUnit 8 entonces :-)

Todos 4 comentarios

¿Por qué la gente sobrescribe las afirmaciones de PHPUnit? suspiro

¿cuento? porque no están marcados como finales

¿larga historia? vide https://github.com/PHPUnitGoodPractices/Traits/blob/master/src/IdentityOverEqualityTrait.php#L46 -L56 para mi caso concreto

Los haré final en PHPUnit 8 entonces :-)

Entonces, ¿podemos sacar primero del tema muerto del registro de afirmaciones / expectativas? Entonces, ¿uno puede decidir tener algunas aserciones adicionales disponibles globalmente (sin importación manual en cada prueba) o no registrar todas las integradas?
Pero en general,: +1: para métodos / clases / interfaces de exposición finales sobre implementaciones concretas

Además, permítame solicitar esto una vez más;) por favor, comencemos a usar la etiqueta @internal para cosas fuera de la promesa de BC, que no se utilizarán fuera de esta biblioteca.
(Por ejemplo, puedo preparar PR que haga que todo se marque como interno, y luego abriríamos lo que será público)

¿Fue útil esta página
0 / 5 - 0 calificaciones