Make WordPress Core

Changeset 49535


Ignore:
Timestamp:
11/07/2020 01:18:24 PM (4 years ago)
Author:
SergeyBiryukov
Message:

Build/Test Tools: Check if all the required PHP extensions are loaded before running the test suite.

Add the GD extension as a hard requirement.

This improves the reliability of the test suite and ensures that if the test infrastructure changes in the future and a platform requirement such as GD accidentally gets removed, the tests fail with an appropriate error message.

Follow-up to [48592].

Props ayeshrajans, jrf, johnbillion.
Fixes #50640.

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/composer.json

    r49306 r49535  
    1717        "wp-coding-standards/wpcs": "~2.3.0",
    1818        "phpcompatibility/phpcompatibility-wp": "^2.1.0",
    19         "phpunit/phpunit": "^7.5"
     19        "phpunit/phpunit": "^7.5",
     20        "ext-gd": "*"
    2021    },
    2122    "autoload-dev": {
  • trunk/composer.lock

    r49306 r49535  
    55        "This file is @generated automatically"
    66    ],
    7     "content-hash": "463db2b4afb439fb63d93173c0852e27",
     7    "content-hash": "fcf040d9233a22165eeffaeb98694436",
    88    "packages": [],
    99    "packages-dev": [
     
    131131                "constructor",
    132132                "instantiate"
     133            ],
     134            "funding": [
     135                {
     136                    "url": "https://www.doctrine-project.org/sponsorship.html",
     137                    "type": "custom"
     138                },
     139                {
     140                    "url": "https://www.patreon.com/phpdoctrine",
     141                    "type": "patreon"
     142                },
     143                {
     144                    "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
     145                    "type": "tidelift"
     146                }
    133147            ],
    134148            "time": "2020-05-29T17:27:14+00:00"
     
    18381852        "php": ">=5.6"
    18391853    },
    1840     "platform-dev": [],
     1854    "platform-dev": {
     1855        "ext-gd": "*"
     1856    },
    18411857    "plugin-api-version": "1.1.0"
    18421858}
  • trunk/tests/phpunit/includes/bootstrap.php

    r49491 r49535  
    3838require_once __DIR__ . '/functions.php';
    3939
     40if ( defined( 'WP_RUN_CORE_TESTS' ) && WP_RUN_CORE_TESTS && ! is_dir( ABSPATH ) ) {
     41    echo "Error: The /build/ directory is missing! Please run `npm run build` prior to running PHPUnit.\n";
     42    exit( 1 );
     43}
     44
    4045$phpunit_version = tests_get_phpunit_version();
    4146
     
    4954}
    5055
    51 if ( defined( 'WP_RUN_CORE_TESTS' ) && WP_RUN_CORE_TESTS && ! is_dir( ABSPATH ) ) {
    52     echo "Error: The /build/ directory is missing! Please run `npm run build` prior to running PHPUnit.\n";
     56$required_extensions = array(
     57    'gd',
     58);
     59$missing_extensions  = array();
     60
     61foreach ( $required_extensions as $extension ) {
     62    if ( ! extension_loaded( $extension ) ) {
     63        $missing_extensions[] = $extension;
     64    }
     65}
     66
     67if ( $missing_extensions ) {
     68    printf(
     69        "Error: The following required PHP extensions are missing from the testing environment: %s.\n",
     70        implode( ', ', $missing_extensions )
     71    );
     72    echo "Please make sure they are installed and enabled.\n",
    5373    exit( 1 );
    5474}
     
    6080    'WP_PHP_BINARY',
    6181);
     82$missing_constants  = array();
    6283
    6384foreach ( $required_constants as $constant ) {
    6485    if ( ! defined( $constant ) ) {
    65         printf(
    66             "Error: The required %s constant is not defined. Check out `wp-tests-config-sample.php` for an example.\n",
    67             $constant
    68         );
    69         exit( 1 );
    70     }
     86        $missing_constants[] = $constant;
     87    }
     88}
     89
     90if ( $missing_constants ) {
     91    printf(
     92        "Error: The following required constants are not defined: %s.\n",
     93        implode( ', ', $missing_constants )
     94    );
     95    echo "Please check out `wp-tests-config-sample.php` for an example.\n",
     96    exit( 1 );
    7197}
    7298
Note: See TracChangeset for help on using the changeset viewer.