public function PhpRequirementsTest::providerMinimumSupportedPhp in Drupal 10
Data provider for ::testMinimumSupportedPhp().
See the parameter documentation of testMinimumSupportedPhp() for the test array structure. The last element is the expected minimum supported PHP.
Return value
\Generator Test scenarios.
File
- core/
tests/ Drupal/ Tests/ Core/ Utility/ PhpRequirementsTest.php, line 87
Class
- PhpRequirementsTest
- Tests the \Drupal\Core\Utility\PhpRequirements class.
Namespace
Drupal\Tests\Core\UtilityCode
public function providerMinimumSupportedPhp() : \Generator {
$eol_lists = [];
// Test against the known valid data from 9.0.0 to 9.3.0.
$eol_lists['d9_release'] = [
'7.2' => '2020-11-30',
'7.3' => '2021-12-06',
'7.4' => '2022-11-28',
'8.0' => '2023-11-26',
'8.1' => '2024-11-25',
];
// The actual situation the day of 9.0.0's release.
(yield [
'2020-06-03',
'7.3.0',
$eol_lists['d9_release'],
'7.3.0',
]);
// If Drupal's MINIMUM_PHP had been 7.3.12 then.
(yield [
'2020-06-03',
'7.3.12',
$eol_lists['d9_release'],
'7.3.12',
]);
// If Drupal's MINIMUM_PHP had been 7.2.17 then.
(yield [
'2020-06-03',
'7.2.17',
$eol_lists['d9_release'],
'7.2.17',
]);
// If Drupal's MINIMUM_PHP had been 7.1.5 then.
(yield [
'2020-06-03',
'7.1.5',
$eol_lists['d9_release'],
'7.2',
]);
// If the PHP EOL date list were empty.
(yield [
'2020-06-03',
'7.3.0',
[],
'7.3.0',
]);
// Cases around PHP 7.2's EOL.
(yield [
'2020-11-29',
'7.3.0',
$eol_lists['d9_release'],
'7.3.0',
]);
(yield [
'2020-11-30',
'7.3.0',
$eol_lists['d9_release'],
'7.3.0',
]);
(yield [
'2020-12-01',
'7.3.0',
$eol_lists['d9_release'],
'7.3.0',
]);
// Cases around PHP 7.3's EOL.
(yield [
'2021-12-05',
'7.3.0',
$eol_lists['d9_release'],
'7.3.0',
]);
(yield [
'2021-12-06',
'7.3.0',
$eol_lists['d9_release'],
'7.4',
]);
(yield [
'2021-12-07',
'7.3.0',
$eol_lists['d9_release'],
'7.4',
]);
// Cases around PHP 7.4's EOL.
(yield [
'2022-11-27',
'7.3.0',
$eol_lists['d9_release'],
'7.4',
]);
(yield [
'2022-11-28',
'7.3.0',
$eol_lists['d9_release'],
'8.0',
]);
(yield [
'2022-11-29',
'7.3.0',
$eol_lists['d9_release'],
'8.0',
]);
// Cases around PHP 8.0's EOL.
(yield [
'2023-11-25',
'7.3.0',
$eol_lists['d9_release'],
'8.0',
]);
(yield [
'2023-11-26',
'7.3.0',
$eol_lists['d9_release'],
'8.1',
]);
(yield [
'2023-11-27',
'7.3.0',
$eol_lists['d9_release'],
'8.1',
]);
// Cases around PHP 8.1's EOL, without any data for 8.2.
(yield [
'2024-11-24',
'7.3.0',
$eol_lists['d9_release'],
'8.1',
]);
(yield [
'2024-11-25',
'7.3.0',
$eol_lists['d9_release'],
'8.1',
]);
(yield [
'2024-11-26',
'7.3.0',
$eol_lists['d9_release'],
'8.1',
]);
// Cases for Drupal 10, with its current 8.0.2 MINIMUM_PHP, prior to PHP
// 8.0's EOL.
(yield [
'2021-12-05',
'8.0.2',
$eol_lists['d9_release'],
'8.0.2',
]);
(yield [
'2021-12-06',
'8.0.2',
$eol_lists['d9_release'],
'8.0.2',
]);
(yield [
'2021-12-07',
'8.0.2',
$eol_lists['d9_release'],
'8.0.2',
]);
(yield [
'2022-11-27',
'8.0.2',
$eol_lists['d9_release'],
'8.0.2',
]);
(yield [
'2022-11-28',
'8.0.2',
$eol_lists['d9_release'],
'8.0.2',
]);
(yield [
'2022-11-29',
'8.0.2',
$eol_lists['d9_release'],
'8.0.2',
]);
// Cases for Drupal 10 around PHP 8.0's EOL.
(yield [
'2023-11-25',
'8.0.2',
$eol_lists['d9_release'],
'8.0.2',
]);
(yield [
'2023-11-26',
'8.0.2',
$eol_lists['d9_release'],
'8.1',
]);
(yield [
'2023-11-27',
'8.0.2',
$eol_lists['d9_release'],
'8.1',
]);
// Cases for Drupal 10 around and after PHP 8.1's EOL, without any data
// for 8.2.
(yield [
'2024-11-24',
'8.0.2',
$eol_lists['d9_release'],
'8.1',
]);
(yield [
'2024-11-25',
'8.0.2',
$eol_lists['d9_release'],
'8.1',
]);
(yield [
'2024-11-26',
'8.0.2',
$eol_lists['d9_release'],
'8.1',
]);
(yield [
'2027-01-01',
'8.0.2',
$eol_lists['d9_release'],
'8.1',
]);
// Test against a hypothetical set of PHP versions that have an LTS
// (supported longer than subsequent versions).
$eol_lists['php_with_lts'] = $eol_lists['d9_release'];
// Ensure that the PHP version with longest support is listed last.
unset($eol_lists['php_with_lts']['7.4']);
$eol_lists['php_with_lts']['7.4'] = '2025-11-28';
(yield [
'2021-12-05',
'7.3',
$eol_lists['php_with_lts'],
'7.3',
]);
(yield [
'2021-12-06',
'7.3',
$eol_lists['php_with_lts'],
'7.4',
]);
(yield [
'2022-11-28',
'7.3',
$eol_lists['php_with_lts'],
'7.4',
]);
(yield [
'2023-11-26',
'7.3',
$eol_lists['php_with_lts'],
'7.4',
]);
(yield [
'2024-11-25',
'7.3',
$eol_lists['php_with_lts'],
'7.4',
]);
(yield [
'2025-12-01',
'7.3',
$eol_lists['php_with_lts'],
'7.4',
]);
// Case with multiple versions EOL on the same day.
$eol_lists['same_eol_date'] = $eol_lists['d9_release'];
$eol_lists['same_eol_date']['8.2'] = $eol_lists['same_eol_date']['8.1'];
(yield [
'2021-12-05',
'7.3',
$eol_lists['same_eol_date'],
'7.3',
]);
(yield [
'2023-11-27',
'8.0.2',
$eol_lists['same_eol_date'],
'8.1',
]);
(yield [
'2027-07-31',
'8.0.2',
$eol_lists['same_eol_date'],
'8.2',
]);
}