Skip to content
Snippets Groups Projects
Commit fb93414a authored by catch's avatar catch
Browse files

Issue #3265546 by Spokje, quietone:...

Issue #3265546 by Spokje, quietone: Drupal\KernelTests\Config\DefaultConfigTest throws deprecation notice for deprecated Core modules/themes which have config

(cherry picked from commit 408f6296)
parent f200a37d
Branches
Tags
54 merge requests!10107Issue #2797141 by Driskell, daffie, andypost, Charlie ChX Negyesi,...,!10082Issue #3267754 by lauriii: AjaxTest is failing,!9277Issue #3262500 by catch, andypost: Mark drupal_find_theme_functions() @internal in Drupal 9,!85673265330-fix-missing-hyphens: Create patch to MR and fix remaining words,!8394[warning] array_flip(): Can only flip STRING and INTEGER values, when saving a non-revisionable custom content entity,!8357Issue #2994000 by Lendude, Pasqualle, quietone, pameeela: Notice in logs when...,!7780issue 3443822: fix for 'No route found for the specified format html. Supported formats: json, xml.',!7416Simplify the HTML of field.html.twig,!7150Revert "Issue #3137119 by munish.kumar, johnwebdev, Jaypan, jungle, xjm,...,!6445Issue #3034692: Renamed the getHandler function which return the configuration of a handler instance on given display,!5013Issue #3071143: Table Render Array Example Is Incorrect,!4848Issue #1566662: Update module should send notifications on Thursdays,!4792Issue #2230689: Remove redundant "Italic" style,!4782Issue #2662898: "Links" field not displaying on custom view modes,!4488Issue #3376281: Random machine names no longer need to be wrapped in strtolower(),!4220Issue #3368223: Link field > Access to internal links is not checked on display.,!4173Issue #2123543: Add string context and location filters to the translate interface,!3884Issue #3356842,!3870Issue #3087868,!3812Draft: Issue #3339373 by alexpott, andypost, mondrake:...,!3736Issue #3294005: Refactor Claro's form--password-confirm stylesheet,!3686Issue #3219967 against 9.5.x,!3683Issue #2939397: Clearing AliasManager cache with root path raises warning,!3543Issue #3344259: Allow ajax dialog to have focus configurable,!3437Issue #3106205: Length of menu_tree.url and menu_tree.route_param_key are too short (255 characters),!3356Issue #3209129: Scrolling problems when adding a block via layout builder,!3000Issue #793660: Check for failure of hook_install,!2982Issue #3301562: Translate the default settings for this plugin (TimestampAgoFormatter),!2940Issue #3320240: Entity count query returns a string instead of int,!2921Issue #1383696: Allow a custom HTML element to be selected for a grouping field,!2920Issue #3260175: Saving media entity without an owner crashes,!2857Issue #3314541: Remove unnecessary fill from SVG icon for the "Media Library" CKEditor 5 button — enabling dark mode support in contrib,!2841Resolve #3296811 "Resourceresponsetrait needs a",!2733Issue #3293855: Update the outdated user_help text for user.admin_permissions and the description of the select box on the role settings page,!2447Issue #3293135: shouldUpdateThumbnail does not update thumbnail is source field changed,!2280Issue #3280415: Metapackage Generator Breaks Under Composer --no-dev,!2205Quote all names in the regions section.,!2050Issue #3272969: Remove UnqiueField constraint.,!1956Issue #3268872: hook_views_invalidate_cache not called when a view is deleted,!1935Issue #3114887: Error responses are stored when using the Download migration process,!1896Issue #2940605: Can only intentionally re-render an entity with references 20 times,!1627Issue #3082958: Add gitignore(s) to composer-ready project templates,!1459Issue #3087632: menu_name max length is too long,!1428Issue #2576927: Grouped exposed filters fails validation for autocomplete widget,!1283Issue #2922435: "Add new comment" and "@count comments" links are not following accessibility good practices,!1213Issue #3236497: Allow other modules to opt out of security release message from update_page_top,!1014Issue #3226806: Move filter implementations from filter.module to plugin classes,!939Issue #2971209: Allow the MediaLibraryUiBuilder service to use an alternative view display,!878Issue #3221534: throw an exception when IDs passed to loadMultiple() are badly formed,!866Issue #2845319: The highlighting of the 'Home' menu-link does not respect query strings and fragment identifiers,!8293023322 - Contextual Links Style Update,!695Issue #2817657: Add methods to assert that a sequence of strings appears on the page in a given order,!204Issue #3040556: It is not possible to react to an entity being duplicated,!88Issue #3163299: Ajax exposed filters not working for multiple instances of the same Views block placed on one page
deprecated_module.settings:
type: config_object
label: 'deprecated_module settings'
mapping:
foo:
type: string
label: 'Wait until you meet baz!'
favicon:
use_default: true
test_deprecated_theme.settings:
type: theme_settings
label: 'test_deprecated_theme settings'
...@@ -49,7 +49,7 @@ class DefaultConfigTest extends KernelTestBase { ...@@ -49,7 +49,7 @@ class DefaultConfigTest extends KernelTestBase {
/** /**
* Tests if installed config is equal to the exported config. * Tests if installed config is equal to the exported config.
* *
* @dataProvider coreModuleListDataProvider * @dataProvider moduleListDataProvider
*/ */
public function testModuleConfig($module) { public function testModuleConfig($module) {
$this->assertExtensionConfig($module, 'module'); $this->assertExtensionConfig($module, 'module');
...@@ -75,6 +75,31 @@ public function testThemeConfig($theme) { ...@@ -75,6 +75,31 @@ public function testThemeConfig($theme) {
* @internal * @internal
*/ */
protected function assertExtensionConfig(string $name, string $type): void { protected function assertExtensionConfig(string $name, string $type): void {
// Parse .info.yml file for module/theme $name. Since it's not installed at
// this point we can't retrieve it from the 'module_handler' service.
switch ($name) {
case 'test_deprecated_theme':
$file_name = DRUPAL_ROOT . '/core/modules/system/tests/themes/' . $name . '/' . $name . '.info.yml';
break;
case 'deprecated_module':
$file_name = DRUPAL_ROOT . '/core/modules/system/tests/modules/' . $name . '/' . $name . '.info.yml';
break;
default;
$file_name = DRUPAL_ROOT . '/core/' . $type . 's/' . $name . '/' . $name . '.info.yml';
}
$info = \Drupal::service('info_parser')->parse($file_name);
// Test we have a parsed info.yml file.
$this->assertNotEmpty($info);
// Skip deprecated extensions.
if (isset($info[ExtensionLifecycle::LIFECYCLE_IDENTIFIER])
&& $info[ExtensionLifecycle::LIFECYCLE_IDENTIFIER] === ExtensionLifecycle::DEPRECATED) {
$this->markTestSkipped("The $type '$name' is deprecated.");
}
// System and user are required in order to be able to install some of the // System and user are required in order to be able to install some of the
// other modules. Therefore they are put into static::$modules, which though // other modules. Therefore they are put into static::$modules, which though
// doesn't install config files, so import those config files explicitly. Do // doesn't install config files, so import those config files explicitly. Do
...@@ -114,8 +139,11 @@ protected function assertExtensionConfig(string $name, string $type): void { ...@@ -114,8 +139,11 @@ protected function assertExtensionConfig(string $name, string $type): void {
/** /**
* A data provider that lists every theme in core. * A data provider that lists every theme in core.
* *
* @return array * Also adds a deprecated theme with config.
* An array of theme names to test. *
* @return string[][]
* An array of theme names to test, with both key and value being the name
* of the theme.
*/ */
public function themeListDataProvider() { public function themeListDataProvider() {
$prefix = dirname(__DIR__, 4) . DIRECTORY_SEPARATOR . 'themes'; $prefix = dirname(__DIR__, 4) . DIRECTORY_SEPARATOR . 'themes';
...@@ -128,11 +156,32 @@ public function themeListDataProvider() { ...@@ -128,11 +156,32 @@ public function themeListDataProvider() {
// Engines is not a theme. // Engines is not a theme.
unset($themes_keyed['engines']); unset($themes_keyed['engines']);
// Add a deprecated theme with config.
$themes_keyed['test_deprecated_theme'] = 'test_deprecated_theme';
return array_map(function ($theme) { return array_map(function ($theme) {
return [$theme]; return [$theme];
}, $themes_keyed); }, $themes_keyed);
} }
/**
* A data provider that lists every module in core.
*
* Also adds a deprecated module with config.
*
* @return string[][]
* An array of module names to test, with both key and value being the name
* of the module.
*/
public function moduleListDataProvider() {
$modules_keyed = $this->coreModuleListDataProvider();
// Add a deprecated module with config.
$modules_keyed['deprecated_module'] = ['deprecated_module'];
return $modules_keyed;
}
/** /**
* Tests that default config matches the installed config. * Tests that default config matches the installed config.
* *
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment