Issue #3127141 by mondrake, longwave, alexpott, Neslee Canil Pinto, Suresh Prabhu Parkala, ravi.shankar: Use PHPUnit 9 for PHP 7.4+, while keeping support for PHPUnit 8.4 in PHP 7.3
parent
89d9f113de
commit
74fbb0aabd
|
@ -21,7 +21,7 @@
|
|||
"composer/composer": "^1.9.1",
|
||||
"drupal/coder": "^8.3.7",
|
||||
"mikey179/vfsstream": "^1.6.8",
|
||||
"phpunit/phpunit": "^8.4.1",
|
||||
"phpunit/phpunit": "^8.4.1 || ^9",
|
||||
"phpspec/prophecy": "^1.7",
|
||||
"symfony/css-selector": "^4.4",
|
||||
"symfony/phpunit-bridge": "^5.1.4",
|
||||
|
@ -93,7 +93,10 @@
|
|||
"pre-update-cmd": "Drupal\\Composer\\Composer::ensureComposerVersion",
|
||||
"pre-autoload-dump": "Drupal\\Core\\Composer\\Composer::preAutoloadDump",
|
||||
"drupal-phpunit-upgrade-check": "Drupal\\Core\\Composer\\Composer::upgradePHPUnit",
|
||||
"drupal-phpunit-upgrade": "@composer update phpunit/phpunit symfony/phpunit-bridge phpspec/prophecy symfony/yaml --with-dependencies --no-progress",
|
||||
"drupal-phpunit-upgrade": [
|
||||
"@composer update phpunit/phpunit --with-dependencies --no-progress",
|
||||
"@composer require phpspec/prophecy-phpunit:^2 --no-progress --no-suggest"
|
||||
],
|
||||
"post-update-cmd": [
|
||||
"Drupal\\Composer\\Composer::generateMetapackages"
|
||||
],
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "059e8aee61edb73b1526b840eb6c624c",
|
||||
"content-hash": "09de613d0e44689de15282c33d3d700e",
|
||||
"packages": [
|
||||
{
|
||||
"name": "asm89/stack-cors",
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
"justinrainbow/json-schema": "^5.2",
|
||||
"mikey179/vfsstream": "^1.6.8",
|
||||
"phpspec/prophecy": "^1.7",
|
||||
"phpunit/phpunit": "^8.4.1",
|
||||
"phpunit/phpunit": "^8.4.1 || ^9",
|
||||
"symfony/browser-kit": "^4.4",
|
||||
"symfony/css-selector": "^4.4",
|
||||
"symfony/dom-crawler": "^4.4 !=4.4.5",
|
||||
|
|
|
@ -310,7 +310,7 @@ class Composer {
|
|||
return;
|
||||
}
|
||||
|
||||
// If the PHP version is 7.3 or above and PHPUnit is less than version 7
|
||||
// If the PHP version is 7.4 or above and PHPUnit is less than version 9
|
||||
// call the drupal-phpunit-upgrade script to upgrade PHPUnit.
|
||||
if (!static::upgradePHPUnitCheck($phpunit_package->getVersion())) {
|
||||
$event->getComposer()
|
||||
|
@ -332,7 +332,7 @@ class Composer {
|
|||
* TRUE if the PHPUnit needs to be upgraded, FALSE if not.
|
||||
*/
|
||||
public static function upgradePHPUnitCheck($phpunit_version) {
|
||||
return !(version_compare(PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION, '7.3') >= 0 && version_compare($phpunit_version, '7.0') < 0);
|
||||
return !(version_compare(PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION, '7.4') >= 0 && version_compare($phpunit_version, '9.0') < 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -70,8 +70,8 @@ class EntityTranslationNormalizeTest extends NormalizerTestBase {
|
|||
|
||||
$normalized = $this->serializer->normalize($node, $this->format);
|
||||
|
||||
$this->assertContains(['lang' => 'en', 'value' => $node->getTitle()], $normalized['title'], 'Original language title has been normalized.');
|
||||
$this->assertContains(['lang' => 'de', 'value' => $translation->getTitle()], $normalized['title'], 'Translation language title has been normalized.');
|
||||
$this->assertContainsEquals(['lang' => 'en', 'value' => $node->getTitle()], $normalized['title'], 'Original language title has been normalized.');
|
||||
$this->assertContainsEquals(['lang' => 'de', 'value' => $translation->getTitle()], $normalized['title'], 'Translation language title has been normalized.');
|
||||
|
||||
/** @var \Drupal\node\NodeInterface $denormalized_node */
|
||||
$denormalized_node = $this->serializer->denormalize($normalized, 'Drupal\node\Entity\Node', $this->format);
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
namespace Drupal\Tests\migrate\Unit;
|
||||
|
||||
use Drupal\Component\Plugin\Exception\PluginNotFoundException;
|
||||
use Drupal\Tests\UnitTestCase;
|
||||
use Drupal\migrate\MigrateStub;
|
||||
use Drupal\migrate\Plugin\MigrateDestinationInterface;
|
||||
use Drupal\migrate\Plugin\MigrateIdMapInterface;
|
||||
|
@ -10,7 +11,6 @@ use Drupal\migrate\Plugin\MigrateSourceInterface;
|
|||
use Drupal\migrate\Plugin\MigrationInterface;
|
||||
use Drupal\migrate\Plugin\MigrationPluginManagerInterface;
|
||||
use Drupal\migrate\Row;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Prophecy\Argument;
|
||||
|
||||
/**
|
||||
|
@ -20,7 +20,7 @@ use Prophecy\Argument;
|
|||
*
|
||||
* @coversDefaultClass \Drupal\migrate\MigrateStub
|
||||
*/
|
||||
class MigrateStubTest extends TestCase {
|
||||
class MigrateStubTest extends UnitTestCase {
|
||||
|
||||
/**
|
||||
* The plugin manager prophecy.
|
||||
|
|
|
@ -126,7 +126,7 @@ class EntityReferenceSelectionReferenceableTest extends KernelTestBase {
|
|||
// entity labels.
|
||||
// @see \Drupal\Core\Entity\EntityReferenceSelection\SelectionInterface::getReferenceableEntities()
|
||||
$item = is_string($item) ? Html::escape($item) : $item;
|
||||
$this->assertContains($item, $referenceables[$this->bundle]);
|
||||
$this->assertContainsEquals($item, $referenceables[$this->bundle]);
|
||||
}
|
||||
|
||||
// Test ::countReferenceableEntities().
|
||||
|
|
|
@ -149,7 +149,7 @@ if ($args['clean']) {
|
|||
}
|
||||
|
||||
if (!Composer::upgradePHPUnitCheck(Version::id())) {
|
||||
simpletest_script_print_error("PHPUnit testing framework version 7 or greater is required when running on PHP 7.3 or greater. Run the command 'composer run-script drupal-phpunit-upgrade' in order to fix this.");
|
||||
simpletest_script_print_error("PHPUnit testing framework version 9 or greater is required when running on PHP 7.4 or greater. Run the command 'composer run-script drupal-phpunit-upgrade' in order to fix this.");
|
||||
exit(SIMPLETEST_SCRIPT_EXIT_FAILURE);
|
||||
}
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@ use Behat\Mink\Driver\GoutteDriver;
|
|||
use Behat\Mink\Mink;
|
||||
use Behat\Mink\Session;
|
||||
use Drupal\Component\FileSystem\FileSystem as DrupalFilesystem;
|
||||
use Drupal\Tests\PhpUnitCompatibilityTrait;
|
||||
use Drupal\Tests\Traits\PhpUnitWarnings;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Symfony\Component\Filesystem\Filesystem as SymfonyFilesystem;
|
||||
|
@ -53,6 +54,7 @@ abstract class BuildTestBase extends TestCase {
|
|||
|
||||
use ExternalCommandRequirementsTrait;
|
||||
use PhpUnitWarnings;
|
||||
use PhpUnitCompatibilityTrait;
|
||||
|
||||
/**
|
||||
* The working directory where this test will manipulate files.
|
||||
|
|
|
@ -612,7 +612,7 @@ class ConfigImporterTest extends KernelTestBase {
|
|||
'Configuration <em class="placeholder">unknown.config</em> depends on the <em class="placeholder">unknown</em> extension that will not be installed after import.',
|
||||
];
|
||||
foreach ($expected as $expected_message) {
|
||||
$this->assertContains($expected_message, $error_log, $expected_message);
|
||||
$this->assertContainsEquals($expected_message, $error_log, $expected_message);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -658,7 +658,7 @@ class ConfigImporterTest extends KernelTestBase {
|
|||
'Configuration <em class="placeholder">config_test.dynamic.dotted.theme</em> depends on themes (<em class="placeholder">unknown, Seven</em>) that will not be installed after import.',
|
||||
];
|
||||
foreach ($expected as $expected_message) {
|
||||
$this->assertContains($expected_message, $error_log, $expected_message);
|
||||
$this->assertContainsEquals($expected_message, $error_log, $expected_message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -42,7 +42,7 @@ class NameMungingTest extends FileTestBase {
|
|||
$munged_name = file_munge_filename($this->name, '', TRUE);
|
||||
$messages = \Drupal::messenger()->all();
|
||||
\Drupal::messenger()->deleteAll();
|
||||
$this->assertContains(strtr('For security reasons, your upload has been renamed to <em class="placeholder">%filename</em>.', ['%filename' => $munged_name]), $messages['status'], 'Alert properly set when a file is renamed.');
|
||||
$this->assertContainsEquals(strtr('For security reasons, your upload has been renamed to <em class="placeholder">%filename</em>.', ['%filename' => $munged_name]), $messages['status'], 'Alert properly set when a file is renamed.');
|
||||
$this->assertNotEqual($munged_name, $this->name, new FormattableMarkup('The new filename (%munged) has been modified from the original (%original)', ['%munged' => $munged_name, '%original' => $this->name]));
|
||||
}
|
||||
|
||||
|
|
|
@ -49,7 +49,7 @@ class MessengerTest extends KernelTestBase {
|
|||
|
||||
// Check we only have the second one.
|
||||
$this->assertCount(1, $this->messenger->messagesByType(MessengerInterface::TYPE_STATUS));
|
||||
$this->assertContains('Second message with <em>markup!</em> (not removed).', $this->messenger->deleteByType(MessengerInterface::TYPE_STATUS));
|
||||
$this->assertContainsEquals('Second message with <em>markup!</em> (not removed).', $this->messenger->deleteByType(MessengerInterface::TYPE_STATUS));
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -18,6 +18,7 @@ use Drupal\Core\Site\Settings;
|
|||
use Drupal\Core\Test\TestDatabase;
|
||||
use Drupal\Tests\ConfigTestTrait;
|
||||
use Drupal\Tests\RandomGeneratorTrait;
|
||||
use Drupal\Tests\PhpUnitCompatibilityTrait;
|
||||
use Drupal\Tests\TestRequirementsTrait;
|
||||
use Drupal\Tests\Traits\PhpUnitWarnings;
|
||||
use Drupal\TestTools\Comparator\MarkupInterfaceComparator;
|
||||
|
@ -79,6 +80,7 @@ abstract class KernelTestBase extends TestCase implements ServiceProviderInterfa
|
|||
use ConfigTestTrait;
|
||||
use TestRequirementsTrait;
|
||||
use PhpUnitWarnings;
|
||||
use PhpUnitCompatibilityTrait;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\TestTools\PhpUnitCompatibility\PhpUnit8;
|
||||
|
||||
/**
|
||||
* Drupal's forward compatibility layer with multiple versions of PHPUnit.
|
||||
*/
|
||||
trait TestCompatibilityTrait {
|
||||
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\TestTools\PhpUnitCompatibility\PhpUnit9;
|
||||
|
||||
use Prophecy\PhpUnit\ProphecyTrait;
|
||||
|
||||
/**
|
||||
* Drupal's forward compatibility layer with multiple versions of PHPUnit.
|
||||
*/
|
||||
trait TestCompatibilityTrait {
|
||||
|
||||
use ProphecyTrait;
|
||||
|
||||
}
|
|
@ -65,6 +65,7 @@ abstract class BrowserTestBase extends TestCase {
|
|||
}
|
||||
use XdebugRequestTrait;
|
||||
use PhpUnitWarnings;
|
||||
use PhpUnitCompatibilityTrait;
|
||||
|
||||
/**
|
||||
* The database prefix of this test run.
|
||||
|
|
|
@ -6,6 +6,7 @@ use Drupal\Component\Annotation\Plugin;
|
|||
use Drupal\Component\Annotation\Plugin\Discovery\AnnotationBridgeDecorator;
|
||||
use Drupal\Component\Plugin\Definition\PluginDefinition;
|
||||
use Drupal\Component\Plugin\Discovery\DiscoveryInterface;
|
||||
use Drupal\Tests\PhpUnitCompatibilityTrait;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
/**
|
||||
|
@ -14,6 +15,8 @@ use PHPUnit\Framework\TestCase;
|
|||
*/
|
||||
class AnnotationBridgeDecoratorTest extends TestCase {
|
||||
|
||||
use PhpUnitCompatibilityTrait;
|
||||
|
||||
/**
|
||||
* @covers ::getDefinitions
|
||||
*/
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
namespace Drupal\Tests\Component\DependencyInjection;
|
||||
|
||||
use Drupal\Component\Utility\Crypt;
|
||||
use Drupal\Tests\PhpUnitCompatibilityTrait;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
||||
use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
|
||||
|
@ -24,6 +25,8 @@ use Prophecy\Argument;
|
|||
*/
|
||||
class ContainerTest extends TestCase {
|
||||
|
||||
use PhpUnitCompatibilityTrait;
|
||||
|
||||
/**
|
||||
* The tested container.
|
||||
*
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
namespace Drupal\Tests\Component\DependencyInjection\Dumper {
|
||||
|
||||
use Drupal\Component\Utility\Crypt;
|
||||
use Drupal\Tests\PhpUnitCompatibilityTrait;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Symfony\Component\DependencyInjection\Definition;
|
||||
use Symfony\Component\DependencyInjection\Reference;
|
||||
|
@ -24,6 +25,8 @@ namespace Drupal\Tests\Component\DependencyInjection\Dumper {
|
|||
*/
|
||||
class OptimizedPhpArrayDumperTest extends TestCase {
|
||||
|
||||
use PhpUnitCompatibilityTrait;
|
||||
|
||||
/**
|
||||
* The container builder instance.
|
||||
*
|
||||
|
|
|
@ -4,7 +4,6 @@ namespace Drupal\Tests\Component\Diff\Engine;
|
|||
|
||||
use Drupal\Component\Diff\Engine\DiffOp;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use PHPUnit\Framework\Error\Error;
|
||||
|
||||
/**
|
||||
* Test DiffOp base class.
|
||||
|
@ -25,7 +24,7 @@ class DiffOpTest extends TestCase {
|
|||
* @covers ::reverse
|
||||
*/
|
||||
public function testReverse() {
|
||||
$this->expectException(Error::class);
|
||||
$this->expectError();
|
||||
$op = new DiffOp();
|
||||
$result = $op->reverse();
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@ namespace Drupal\Tests\Component\Gettext;
|
|||
|
||||
use Drupal\Component\Gettext\PoItem;
|
||||
use Drupal\Component\Gettext\PoStreamWriter;
|
||||
use Drupal\Tests\PhpUnitCompatibilityTrait;
|
||||
use org\bovigo\vfs\vfsStream;
|
||||
use org\bovigo\vfs\vfsStreamFile;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
@ -14,6 +15,8 @@ use PHPUnit\Framework\TestCase;
|
|||
*/
|
||||
class PoStreamWriterTest extends TestCase {
|
||||
|
||||
use PhpUnitCompatibilityTrait;
|
||||
|
||||
/**
|
||||
* The PO writer object under test.
|
||||
*
|
||||
|
|
|
@ -4,8 +4,8 @@ namespace Drupal\Tests\Component\PhpStorage;
|
|||
|
||||
use Drupal\Component\PhpStorage\FileStorage;
|
||||
use Drupal\Component\Utility\Random;
|
||||
use Drupal\Tests\Traits\PhpUnitWarnings;
|
||||
use org\bovigo\vfs\vfsStreamDirectory;
|
||||
use PHPUnit\Framework\Error\Warning;
|
||||
|
||||
/**
|
||||
* @coversDefaultClass \Drupal\Component\PhpStorage\FileStorage
|
||||
|
@ -14,6 +14,8 @@ use PHPUnit\Framework\Error\Warning;
|
|||
*/
|
||||
class FileStorageTest extends PhpStorageTestBase {
|
||||
|
||||
use PhpUnitWarnings;
|
||||
|
||||
/**
|
||||
* Standard test settings to pass to storage instances.
|
||||
*
|
||||
|
@ -99,8 +101,8 @@ class FileStorageTest extends PhpStorageTestBase {
|
|||
'bin' => 'test',
|
||||
]);
|
||||
$code = "<?php\n echo 'here';";
|
||||
$this->expectException(Warning::class);
|
||||
$this->expectExceptionMessage('mkdir(): Permission Denied');
|
||||
$this->expectWarning();
|
||||
$this->expectWarningMessage('mkdir(): Permission Denied');
|
||||
$storage->save('subdirectory/foo.php', $code);
|
||||
}
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@ namespace Drupal\Tests\Component\Plugin;
|
|||
use Drupal\Component\Plugin\Exception\PluginNotFoundException;
|
||||
use Drupal\Component\Plugin\Mapper\MapperInterface;
|
||||
use Drupal\Component\Plugin\PluginManagerBase;
|
||||
use Drupal\Tests\PhpUnitCompatibilityTrait;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
/**
|
||||
|
@ -13,6 +14,8 @@ use PHPUnit\Framework\TestCase;
|
|||
*/
|
||||
class PluginManagerBaseTest extends TestCase {
|
||||
|
||||
use PhpUnitCompatibilityTrait;
|
||||
|
||||
/**
|
||||
* A callback method for mocking FactoryInterface objects.
|
||||
*/
|
||||
|
|
|
@ -4,6 +4,7 @@ namespace Drupal\Tests\Composer\Plugin\VendorHardening;
|
|||
|
||||
use Composer\Package\RootPackageInterface;
|
||||
use Drupal\Composer\Plugin\VendorHardening\Config;
|
||||
use Drupal\Tests\Traits\PhpUnitWarnings;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
/**
|
||||
|
@ -12,6 +13,8 @@ use PHPUnit\Framework\TestCase;
|
|||
*/
|
||||
class ConfigTest extends TestCase {
|
||||
|
||||
use PhpUnitWarnings;
|
||||
|
||||
/**
|
||||
* @covers ::getPathsForPackage
|
||||
*/
|
||||
|
|
|
@ -8,6 +8,8 @@ use Composer\Package\PackageInterface;
|
|||
use Composer\Package\RootPackageInterface;
|
||||
use Drupal\Composer\Plugin\VendorHardening\Config;
|
||||
use Drupal\Composer\Plugin\VendorHardening\VendorHardeningPlugin;
|
||||
use Drupal\Tests\PhpUnitCompatibilityTrait;
|
||||
use Drupal\Tests\Traits\PhpUnitWarnings;
|
||||
use org\bovigo\vfs\vfsStream;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
|
@ -17,6 +19,9 @@ use PHPUnit\Framework\TestCase;
|
|||
*/
|
||||
class VendorHardeningPluginTest extends TestCase {
|
||||
|
||||
use PhpUnitWarnings;
|
||||
use PhpUnitCompatibilityTrait;
|
||||
|
||||
public function setUp(): void {
|
||||
parent::setUp();
|
||||
vfsStream::setup('vendor', NULL, [
|
||||
|
|
|
@ -5,6 +5,7 @@ namespace Drupal\Tests;
|
|||
use Drupal\Composer\Plugin\VendorHardening\Config;
|
||||
use Drupal\Core\Composer\Composer;
|
||||
use Drupal\Tests\Composer\ComposerIntegrationTrait;
|
||||
use Drupal\TestTools\PhpUnitCompatibility\RunnerVersion;
|
||||
use Symfony\Component\Yaml\Yaml;
|
||||
|
||||
/**
|
||||
|
@ -260,6 +261,11 @@ class ComposerIntegrationTest extends UnitTestCase {
|
|||
$reflection = new \ReflectionProperty($class, $property);
|
||||
$reflection->setAccessible(TRUE);
|
||||
$config = $reflection->getValue();
|
||||
// PHPUnit 9.5.3 removes 'phpunit/php-token-stream' from its dependencies.
|
||||
// @todo remove the check below when PHPUnit 9 is the minimum.
|
||||
if (RunnerVersion::getMajor() >= 9) {
|
||||
unset($config['phpunit/php-token-stream']);
|
||||
}
|
||||
foreach (array_keys($config) as $package) {
|
||||
$this->assertContains(strtolower($package), $packages);
|
||||
}
|
||||
|
|
|
@ -113,8 +113,8 @@ class CssCollectionGrouperUnitTest extends UnitTestCase {
|
|||
$this->assertSame('all', $group['media']);
|
||||
$this->assertTrue($group['preprocess']);
|
||||
$this->assertCount(3, $group['items']);
|
||||
$this->assertContains($css_assets['system.base.css'], $group['items']);
|
||||
$this->assertContains($css_assets['js.module.css'], $group['items']);
|
||||
$this->assertContainsEquals($css_assets['system.base.css'], $group['items']);
|
||||
$this->assertContainsEquals($css_assets['js.module.css'], $group['items']);
|
||||
|
||||
// Check group 2.
|
||||
$group = $groups[1];
|
||||
|
@ -123,7 +123,7 @@ class CssCollectionGrouperUnitTest extends UnitTestCase {
|
|||
$this->assertSame('all', $group['media']);
|
||||
$this->assertTrue($group['preprocess']);
|
||||
$this->assertCount(1, $group['items']);
|
||||
$this->assertContains($css_assets['field.css'], $group['items']);
|
||||
$this->assertContainsEquals($css_assets['field.css'], $group['items']);
|
||||
|
||||
// Check group 3.
|
||||
$group = $groups[2];
|
||||
|
@ -132,7 +132,7 @@ class CssCollectionGrouperUnitTest extends UnitTestCase {
|
|||
$this->assertSame('all', $group['media']);
|
||||
$this->assertTrue($group['preprocess']);
|
||||
$this->assertCount(1, $group['items']);
|
||||
$this->assertContains($css_assets['external.css'], $group['items']);
|
||||
$this->assertContainsEquals($css_assets['external.css'], $group['items']);
|
||||
|
||||
// Check group 4.
|
||||
$group = $groups[3];
|
||||
|
@ -141,7 +141,7 @@ class CssCollectionGrouperUnitTest extends UnitTestCase {
|
|||
$this->assertSame('all', $group['media']);
|
||||
$this->assertTrue($group['preprocess']);
|
||||
$this->assertCount(1, $group['items']);
|
||||
$this->assertContains($css_assets['elements.css'], $group['items']);
|
||||
$this->assertContainsEquals($css_assets['elements.css'], $group['items']);
|
||||
|
||||
// Check group 5.
|
||||
$group = $groups[4];
|
||||
|
@ -150,7 +150,7 @@ class CssCollectionGrouperUnitTest extends UnitTestCase {
|
|||
$this->assertSame('print', $group['media']);
|
||||
$this->assertTrue($group['preprocess']);
|
||||
$this->assertCount(1, $group['items']);
|
||||
$this->assertContains($css_assets['print.css'], $group['items']);
|
||||
$this->assertContainsEquals($css_assets['print.css'], $group['items']);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -132,6 +132,17 @@ trait DeprecationListenerTrait {
|
|||
'AssertLegacyTrait::assertFieldByXPath() is deprecated in drupal:8.3.0 and is removed from drupal:10.0.0. Use $this->xpath() instead and check the values directly in the test. See https://www.drupal.org/node/3129738',
|
||||
'AssertLegacyTrait::assertNoFieldByXPath() is deprecated in drupal:8.3.0 and is removed from drupal:10.0.0. Use $this->xpath() instead and assert that the result is empty. See https://www.drupal.org/node/3129738',
|
||||
'AssertLegacyTrait::assertFieldsByValue() is deprecated in drupal:8.3.0 and is removed from drupal:10.0.0. Use iteration over the fields yourself instead and directly check the values in the test. See https://www.drupal.org/node/3129738',
|
||||
// PHPUnit 9.
|
||||
"The \"PHPUnit\TextUI\DefaultResultPrinter\" class is considered internal This class is not covered by the backward compatibility promise for PHPUnit. It may change without further notice. You should not use it from \"Drupal\Tests\Listeners\HtmlOutputPrinter\".",
|
||||
'assertFileNotExists() is deprecated and will be removed in PHPUnit 10. Refactor your code to use assertFileDoesNotExist() instead.',
|
||||
'assertRegExp() is deprecated and will be removed in PHPUnit 10. Refactor your code to use assertMatchesRegularExpression() instead.',
|
||||
'assertNotRegExp() is deprecated and will be removed in PHPUnit 10. Refactor your code to use assertDoesNotMatchRegularExpression() instead.',
|
||||
'assertDirectoryNotExists() is deprecated and will be removed in PHPUnit 10. Refactor your code to use assertDirectoryDoesNotExist() instead.',
|
||||
'Support for using expectException() with PHPUnit\\Framework\\Error\\Warning is deprecated and will be removed in PHPUnit 10. Use expectWarning() instead.',
|
||||
'Support for using expectException() with PHPUnit\\Framework\\Error\\Error is deprecated and will be removed in PHPUnit 10. Use expectError() instead.',
|
||||
'assertDirectoryNotIsWritable() is deprecated and will be removed in PHPUnit 10. Refactor your code to use assertDirectoryIsNotWritable() instead.',
|
||||
'assertFileNotIsWritable() is deprecated and will be removed in PHPUnit 10. Refactor your code to use assertFileIsNotWritable() instead.',
|
||||
'The at() matcher has been deprecated. It will be removed in PHPUnit 10. Please refactor your test to not rely on the order in which methods are invoked.',
|
||||
];
|
||||
}
|
||||
|
||||
|
|
|
@ -2,15 +2,27 @@
|
|||
|
||||
namespace Drupal\Tests\Listeners;
|
||||
|
||||
use Drupal\TestTools\PhpUnitCompatibility\RunnerVersion;
|
||||
use PHPUnit\Framework\TestResult;
|
||||
use PHPUnit\TextUI\ResultPrinter;
|
||||
|
||||
// In order to manage different implementations across PHPUnit versions, we
|
||||
// dynamically load the base ResultPrinter class dependent on the PHPUnit runner
|
||||
// version.
|
||||
if (!class_exists(ResultPrinterBase::class, FALSE)) {
|
||||
if (RunnerVersion::getMajor() < 9) {
|
||||
class_alias('PHPUnit\TextUI\ResultPrinter', ResultPrinterBase::class);
|
||||
}
|
||||
else {
|
||||
class_alias('PHPUnit\TextUI\DefaultResultPrinter', ResultPrinterBase::class);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Defines a class for providing html output results for functional tests.
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
class HtmlOutputPrinter extends ResultPrinter {
|
||||
class HtmlOutputPrinter extends ResultPrinterBase {
|
||||
|
||||
use HtmlOutputPrinterTrait;
|
||||
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\Tests;
|
||||
|
||||
use Drupal\TestTools\PhpUnitCompatibility\RunnerVersion;
|
||||
|
||||
// In order to manage different method signatures between PHPUnit versions, we
|
||||
// dynamically load a compatibility trait dependent on the PHPUnit runner
|
||||
// version.
|
||||
if (!trait_exists(PhpunitVersionDependentTestCompatibilityTrait::class, FALSE)) {
|
||||
class_alias("Drupal\TestTools\PhpUnitCompatibility\PhpUnit" . RunnerVersion::getMajor() . "\TestCompatibilityTrait", PhpUnitVersionDependentTestCompatibilityTrait::class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Makes Drupal's test API forward compatible with multiple versions of PHPUnit.
|
||||
*/
|
||||
trait PhpUnitCompatibilityTrait {
|
||||
|
||||
use PhpUnitVersionDependentTestCompatibilityTrait;
|
||||
|
||||
}
|
|
@ -2,12 +2,17 @@
|
|||
|
||||
namespace Drupal\Tests;
|
||||
|
||||
use Drupal\TestTools\PhpUnitCompatibility\RunnerVersion;
|
||||
use Symfony\Bridge\PhpUnit\ExpectDeprecationTrait;
|
||||
|
||||
/**
|
||||
* @coversDefaultClass \Drupal\Tests\Traits\PhpUnitWarnings
|
||||
* @group legacy
|
||||
*/
|
||||
class PhpUnitWarningsTest extends UnitTestCase {
|
||||
|
||||
use ExpectDeprecationTrait;
|
||||
|
||||
/**
|
||||
* @expectedDeprecation Test warning for \Drupal\Tests\PhpUnitWarningsTest::testAddWarning()
|
||||
*/
|
||||
|
@ -16,46 +21,66 @@ class PhpUnitWarningsTest extends UnitTestCase {
|
|||
}
|
||||
|
||||
/**
|
||||
* @expectedDeprecation Using assertContains() with string haystacks is deprecated and will not be supported in PHPUnit 9. Refactor your test to use assertStringContainsString() or assertStringContainsStringIgnoringCase() instead.
|
||||
* @expectedDeprecation The optional $ignoreCase parameter of assertContains() is deprecated and will be removed in PHPUnit 9.
|
||||
* Tests assertContains.
|
||||
*/
|
||||
public function testAssertContains() {
|
||||
if (RunnerVersion::getMajor() > 8) {
|
||||
$this->markTestSkipped("In PHPUnit 9+, argument 2 passed to PHPUnit\Framework\Assert::assertContains() must be iterable.");
|
||||
}
|
||||
$this->expectDeprecation('Using assertContains() with string haystacks is deprecated and will not be supported in PHPUnit 9. Refactor your test to use assertStringContainsString() or assertStringContainsStringIgnoringCase() instead.');
|
||||
$this->expectDeprecation('The optional $ignoreCase parameter of assertContains() is deprecated and will be removed in PHPUnit 9.');
|
||||
$this->assertContains('string', 'aaaa_string_aaa');
|
||||
$this->assertContains('STRING', 'aaaa_string_aaa', '', TRUE);
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedDeprecation Using assertNotContains() with string haystacks is deprecated and will not be supported in PHPUnit 9. Refactor your test to use assertStringNotContainsString() or assertStringNotContainsStringIgnoringCase() instead.
|
||||
* @expectedDeprecation The optional $ignoreCase parameter of assertNotContains() is deprecated and will be removed in PHPUnit 9.
|
||||
* Tests assertNotContains.
|
||||
*/
|
||||
public function testAssertNotContains() {
|
||||
if (RunnerVersion::getMajor() > 8) {
|
||||
$this->markTestSkipped("In PHPUnit 9+, argument 2 passed to PHPUnit\Framework\Assert::assertNotContains() must be iterable.");
|
||||
}
|
||||
$this->expectDeprecation('Using assertNotContains() with string haystacks is deprecated and will not be supported in PHPUnit 9. Refactor your test to use assertStringNotContainsString() or assertStringNotContainsStringIgnoringCase() instead.');
|
||||
$this->expectDeprecation('The optional $ignoreCase parameter of assertNotContains() is deprecated and will be removed in PHPUnit 9.');
|
||||
$this->assertNotContains('foo', 'bar');
|
||||
$this->assertNotContains('FOO', 'bar', '', TRUE);
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedDeprecation assertArraySubset() is deprecated and will be removed in PHPUnit 9.
|
||||
* Tests assertArraySubset.
|
||||
*/
|
||||
public function testAssertArraySubset() {
|
||||
if (RunnerVersion::getMajor() > 8) {
|
||||
$this->markTestSkipped("In PHPUnit 9+, assertArraySubset() is removed.");
|
||||
}
|
||||
$this->expectDeprecation('assertArraySubset() is deprecated and will be removed in PHPUnit 9.');
|
||||
$this->assertArraySubset(['a'], ['a', 'b']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedDeprecation assertInternalType() is deprecated and will be removed in PHPUnit 9. Refactor your test to use assertIsArray(), assertIsBool(), assertIsFloat(), assertIsInt(), assertIsNumeric(), assertIsObject(), assertIsResource(), assertIsString(), assertIsScalar(), assertIsCallable(), or assertIsIterable() instead.
|
||||
* Tests assertInternalType.
|
||||
*/
|
||||
public function testAssertInternalType() {
|
||||
if (RunnerVersion::getMajor() > 8) {
|
||||
$this->markTestSkipped("In PHPUnit 9+, assertInternalType() is removed.");
|
||||
}
|
||||
$this->expectDeprecation('assertInternalType() is deprecated and will be removed in PHPUnit 9. Refactor your test to use assertIsArray(), assertIsBool(), assertIsFloat(), assertIsInt(), assertIsNumeric(), assertIsObject(), assertIsResource(), assertIsString(), assertIsScalar(), assertIsCallable(), or assertIsIterable() instead.');
|
||||
$this->assertInternalType('string', 'string');
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedDeprecation assertAttributeEquals() is deprecated and will be removed in PHPUnit 9.
|
||||
* @expectedDeprecation readAttribute() is deprecated and will be removed in PHPUnit 9.
|
||||
* @expectedDeprecation getObjectAttribute() is deprecated and will be removed in PHPUnit 9.
|
||||
* @expectedDeprecation assertAttributeSame() is deprecated and will be removed in PHPUnit 9.
|
||||
* @expectedDeprecation assertAttributeInstanceOf() is deprecated and will be removed in PHPUnit 9.
|
||||
* @expectedDeprecation assertAttributeEmpty() is deprecated and will be removed in PHPUnit 9.
|
||||
* Tests assertion methods accessing class attributes.
|
||||
*/
|
||||
public function testAssertAttribute() {
|
||||
if (RunnerVersion::getMajor() > 8) {
|
||||
$this->markTestSkipped("In PHPUnit 9+, assertion methods accessing class attributes are removed.");
|
||||
}
|
||||
$this->expectDeprecation('assertAttributeEquals() is deprecated and will be removed in PHPUnit 9.');
|
||||
$this->expectDeprecation('readAttribute() is deprecated and will be removed in PHPUnit 9.');
|
||||
$this->expectDeprecation('getObjectAttribute() is deprecated and will be removed in PHPUnit 9.');
|
||||
$this->expectDeprecation('assertAttributeSame() is deprecated and will be removed in PHPUnit 9.');
|
||||
$this->expectDeprecation('assertAttributeInstanceOf() is deprecated and will be removed in PHPUnit 9.');
|
||||
$this->expectDeprecation('assertAttributeEmpty() is deprecated and will be removed in PHPUnit 9.');
|
||||
$obj = new class() {
|
||||
protected $attribute = 'value';
|
||||
protected $class;
|
||||
|
@ -73,16 +98,24 @@ class PhpUnitWarningsTest extends UnitTestCase {
|
|||
}
|
||||
|
||||
/**
|
||||
* @expectedDeprecation The optional $canonicalize parameter of assertEquals() is deprecated and will be removed in PHPUnit 9. Refactor your test to use assertEqualsCanonicalizing() instead.
|
||||
* Tests assertEquals.
|
||||
*/
|
||||
public function testAssertEquals() {
|
||||
if (RunnerVersion::getMajor() > 8) {
|
||||
$this->markTestSkipped("In PHPUnit 9+, the \$canonicalize parameter of assertEquals() is removed.");
|
||||
}
|
||||
$this->expectDeprecation('The optional $canonicalize parameter of assertEquals() is deprecated and will be removed in PHPUnit 9. Refactor your test to use assertEqualsCanonicalizing() instead.');
|
||||
$this->assertEquals(['a', 'b'], ['b', 'a'], '', 0.0, 10, TRUE);
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedDeprecation expectExceptionMessageRegExp() is deprecated in PHPUnit 8 and will be removed in PHPUnit 9.
|
||||
* Tests expectExceptionMessageRegExp.
|
||||
*/
|
||||
public function testExpectExceptionMessageRegExp() {
|
||||
if (RunnerVersion::getMajor() > 8) {
|
||||
$this->markTestSkipped("In PHPUnit 9+, expectExceptionMessageRegExp() is removed.");
|
||||
}
|
||||
$this->expectDeprecation('expectExceptionMessageRegExp() is deprecated in PHPUnit 8 and will be removed in PHPUnit 9.');
|
||||
$this->expectException(\Exception::class);
|
||||
$this->expectExceptionMessageRegExp('/An exception .*/');
|
||||
throw new \Exception('An exception has been triggered');
|
||||
|
|
|
@ -37,6 +37,16 @@ trait PhpUnitWarnings {
|
|||
'expectExceptionMessageRegExp() is deprecated in PHPUnit 8 and will be removed in PHPUnit 9.',
|
||||
// Warning for testing.
|
||||
'Test warning for \Drupal\Tests\PhpUnitWarningsTest::testAddWarning()',
|
||||
// PHPUnit 9.
|
||||
'assertFileNotExists() is deprecated and will be removed in PHPUnit 10. Refactor your code to use assertFileDoesNotExist() instead.',
|
||||
'assertRegExp() is deprecated and will be removed in PHPUnit 10. Refactor your code to use assertMatchesRegularExpression() instead.',
|
||||
'assertNotRegExp() is deprecated and will be removed in PHPUnit 10. Refactor your code to use assertDoesNotMatchRegularExpression() instead.',
|
||||
'assertDirectoryNotExists() is deprecated and will be removed in PHPUnit 10. Refactor your code to use assertDirectoryDoesNotExist() instead.',
|
||||
'Support for using expectException() with PHPUnit\\Framework\\Error\\Warning is deprecated and will be removed in PHPUnit 10. Use expectWarning() instead.',
|
||||
'Support for using expectException() with PHPUnit\\Framework\\Error\\Error is deprecated and will be removed in PHPUnit 10. Use expectError() instead.',
|
||||
'assertDirectoryNotIsWritable() is deprecated and will be removed in PHPUnit 10. Refactor your code to use assertDirectoryIsNotWritable() instead.',
|
||||
'assertFileNotIsWritable() is deprecated and will be removed in PHPUnit 10. Refactor your code to use assertFileIsNotWritable() instead.',
|
||||
'The at() matcher has been deprecated. It will be removed in PHPUnit 10. Please refactor your test to not rely on the order in which methods are invoked.',
|
||||
];
|
||||
|
||||
/**
|
||||
|
|
|
@ -20,6 +20,7 @@ use PHPUnit\Framework\TestCase;
|
|||
abstract class UnitTestCase extends TestCase {
|
||||
|
||||
use PhpUnitWarnings;
|
||||
use PhpUnitCompatibilityTrait;
|
||||
|
||||
/**
|
||||
* The random generator.
|
||||
|
|
Loading…
Reference in New Issue