WordPress.org

Make WordPress Core

Ticket #46149: 46149-hard-deprecate-checkRequirements.patch

File 46149-hard-deprecate-checkRequirements.patch, 3.1 KB (added by jrf, 3 months ago)

Build/Test Tools: hard deprecate WP_UnitTestCase_Base::checkRequirements()

  • tests/phpunit/includes/abstract-testcase.php

    From 884de9fdf570873ceda8a680d9ca6eedaadc51f8 Mon Sep 17 00:00:00 2001
    From: jrfnl <jrfnl@users.noreply.github.com>
    Date: Wed, 11 Aug 2021 07:32:22 +0200
    Subject: [PATCH] Build/Test Tools: hard deprecate
     `WP_UnitTestCase_Base::checkRequirements()`.
    
    The `WP_UnitTestCase_Base::checkRequirements()` method calls the `parent::checkRequirements()` method, but this method became `private` in PHPUnit 7.0.0 via commit  [https://github.com/sebastianbergmann/phpunit/commit/932238a6a3018cdfac6c2a7d8f1d5d49e65f5dc0 sebastianbergmann/phpunit@932238a].
    
    Aside from that the `TestCase::getAnnotations()` method which is called next is now also removed in PHPUnit 9.5.0.
    
    WP Core doesn't use the method anymore and the method only remains to prevent potentially breaking external integration tests relying on the method.
    However, in effect, the method is not functional anymore knowing the above.
    
    So, I'm proposing to hard deprecate the method, effectively rendering it useless, except to prevent breaking test suites which still called the method.
    ---
     tests/phpunit/includes/abstract-testcase.php | 45 ++------------------
     1 file changed, 4 insertions(+), 41 deletions(-)
    
    diff --git a/tests/phpunit/includes/abstract-testcase.php b/tests/phpunit/includes/abstract-testcase.php
    index a169754c69..502abe881c 100644
    a b abstract class WP_UnitTestCase_Base extends PHPUnit_Adapter_TestCase { 
    892892         * Core tests no longer support this behaviour.
    893893         *
    894894         * @since 3.5.0
     895         * @deprecated 5.9.0 This function hasn't been functional since PHPUnit 7.0.
    895896         */
    896897        protected function checkRequirements() {
    897                 parent::checkRequirements();
    898 
    899                 $annotations = $this->getAnnotations();
    900 
    901                 $groups = array();
    902                 if ( ! empty( $annotations['class']['group'] ) ) {
    903                         $groups = array_merge( $groups, $annotations['class']['group'] );
    904                 }
    905                 if ( ! empty( $annotations['method']['group'] ) ) {
    906                         $groups = array_merge( $groups, $annotations['method']['group'] );
    907                 }
    908 
    909                 if ( ! empty( $groups ) ) {
    910                         if ( in_array( 'ms-required', $groups, true ) ) {
    911                                 $this->skipWithoutMultisite();
    912                         }
    913 
    914                         if ( in_array( 'ms-excluded', $groups, true ) ) {
    915                                 $this->skipWithMultisite();
    916                         }
    917                 }
    918 
    919                 // Core tests no longer check against open Trac tickets,
    920                 // but others using WP_UnitTestCase may do so.
    921                 if ( defined( 'WP_RUN_CORE_TESTS' ) && WP_RUN_CORE_TESTS ) {
    922                         return;
    923                 }
    924 
    925                 if ( WP_TESTS_FORCE_KNOWN_BUGS ) {
    926                         return;
    927                 }
    928                 $tickets = PHPUnit_Util_Test::getTickets( get_class( $this ), $this->getName( false ) );
    929                 foreach ( $tickets as $ticket ) {
    930                         if ( is_numeric( $ticket ) ) {
    931                                 $this->knownWPBug( $ticket );
    932                         } elseif ( 0 === strpos( $ticket, 'Plugin' ) ) {
    933                                 $ticket = substr( $ticket, 6 );
    934                                 if ( $ticket && is_numeric( $ticket ) ) {
    935                                         $this->knownPluginBug( $ticket );
    936                                 }
    937                         }
     898                // For PHPUnit 5/6 as we're overloading a public PHPUnit native method in those versions.
     899                if ( is_callable( 'PHPUnit\Framework\TestCase', 'checkRequirements' ) ) {
     900                        parent::checkRequirements();
    938901                }
    939902        }
    940903