From c91d7281888a796eb477b392410a580ea8f82137 Mon Sep 17 00:00:00 2001 From: mcdruid Date: Fri, 27 May 2022 10:12:10 +0100 Subject: [PATCH] Issue #3182785 by mcdruid, mar4ehk0, elsteff1385, John Franklin: PHP 7.4 notice in /modules/system/system.admin.inc when a module has an invalid configure path --- modules/simpletest/tests/module.test | 13 +++++++++++++ modules/simpletest/tests/system_admin_test.info | 7 +++++++ modules/simpletest/tests/system_admin_test.module | 6 ++++++ modules/system/system.admin.inc | 8 +++++++- 4 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 modules/simpletest/tests/system_admin_test.info create mode 100644 modules/simpletest/tests/system_admin_test.module diff --git a/modules/simpletest/tests/module.test b/modules/simpletest/tests/module.test index 25dbb67bf7e..cca971c50b3 100644 --- a/modules/simpletest/tests/module.test +++ b/modules/simpletest/tests/module.test @@ -122,6 +122,19 @@ class ModuleUnitTest extends DrupalWebTestCase { $this->assertText('System null version test', 'Module admin UI listed dependency with null version successfully.'); } + /** + * Test system_modules() with a module with a broken configure path. + */ + function testSystemModulesBrokenConfigure() { + module_enable(array('system_admin_test')); + $this->resetAll(); + $admin = $this->drupalCreateUser(array('administer modules')); + $this->drupalLogin($admin); + $this->drupalGet('admin/modules'); + $module_log = db_query_range('SELECT message FROM {watchdog} WHERE type = :type ORDER BY wid DESC', 0, 1, array(':type' => 'system'))->fetchField(); + $this->assertEqual('Module %module specifies an invalid path for configuration: %configure', $module_log, 'An error was logged for the module\'s broken configure path.'); + } + /** * Test that module_invoke() can load a hook defined in hook_hook_info(). */ diff --git a/modules/simpletest/tests/system_admin_test.info b/modules/simpletest/tests/system_admin_test.info new file mode 100644 index 00000000000..5310174ed7a --- /dev/null +++ b/modules/simpletest/tests/system_admin_test.info @@ -0,0 +1,7 @@ +name = System Admin Test +description = 'Support module for testing system.admin.inc.' +package = Only For Testing +version = VERSION +core = 7.x +hidden = FALSE +configure = config/broken diff --git a/modules/simpletest/tests/system_admin_test.module b/modules/simpletest/tests/system_admin_test.module new file mode 100644 index 00000000000..ae61e749513 --- /dev/null +++ b/modules/simpletest/tests/system_admin_test.module @@ -0,0 +1,6 @@ +status && isset($module->info['configure'])) { $configure_link = menu_get_item($module->info['configure']); - if ($configure_link['access']) { + if ($configure_link === FALSE) { + watchdog('system', 'Module %module specifies an invalid path for configuration: %configure', array( + '%module' => $module->info['name'], + '%configure' => $module->info['configure'], + )); + } + else if ($configure_link['access']) { $extra['links']['configure'] = array( '#type' => 'link', '#title' => t('Configure'),