CompatibilityFixTest.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <?php
  2. namespace Drupal\KernelTests\Core\Update;
  3. use Drupal\KernelTests\KernelTestBase;
  4. /**
  5. * Tests that extensions that are incompatible with the current core version are disabled.
  6. *
  7. * @group Update
  8. * @group legacy
  9. */
  10. class CompatibilityFixTest extends KernelTestBase {
  11. /**
  12. * {@inheritdoc}
  13. */
  14. public static $modules = ['system'];
  15. protected function setUp() {
  16. parent::setUp();
  17. require_once $this->root . '/core/includes/update.inc';
  18. }
  19. /**
  20. * @expectedDeprecation update_fix_compatibility() is deprecated in Drupal 8.8.5 and will be removed before Drupal 9.0.0. There is no replacement. See https://www.drupal.org/node/3026100
  21. */
  22. public function testFixCompatibility() {
  23. $extension_config = \Drupal::configFactory()->getEditable('core.extension');
  24. // Add an incompatible/non-existent module to the config.
  25. $modules = $extension_config->get('module');
  26. $modules['incompatible_module'] = 0;
  27. $extension_config->set('module', $modules);
  28. $modules = $extension_config->get('module');
  29. $this->assertTrue(in_array('incompatible_module', array_keys($modules)), 'Added incompatible/non-existent module to the config.');
  30. // Add an incompatible/non-existent theme to the config.
  31. $themes = $extension_config->get('theme');
  32. $themes['incompatible_theme'] = 0;
  33. $extension_config->set('theme', $themes);
  34. $themes = $extension_config->get('theme');
  35. $this->assertTrue(in_array('incompatible_theme', array_keys($themes)), 'Added incompatible/non-existent theme to the config.');
  36. // Fix compatibility.
  37. update_fix_compatibility();
  38. $modules = $extension_config->get('module');
  39. $this->assertFalse(in_array('incompatible_module', array_keys($modules)), 'Fixed modules compatibility.');
  40. $themes = $extension_config->get('theme');
  41. $this->assertFalse(in_array('incompatible_theme', array_keys($themes)), 'Fixed themes compatibility.');
  42. }
  43. }