diff --git a/core/modules/update/tests/src/Functional/UpdateCoreTest.php b/core/modules/update/tests/src/Functional/UpdateCoreTest.php index 7ceaa0abae2582e5e2cf48c676175e5bd82d250c..dec4022615abc8718c4f582026588593be2e9cbc 100644 --- a/core/modules/update/tests/src/Functional/UpdateCoreTest.php +++ b/core/modules/update/tests/src/Functional/UpdateCoreTest.php @@ -385,6 +385,23 @@ public function testModulePageRunCron() { $this->assertNoText(t('No update information available.')); } + /** + * Checks that clearing the disk cache works. + */ + public function testClearDiskCache() { + $directories = [ + _update_manager_cache_directory(FALSE), + _update_manager_extract_directory(FALSE), + ]; + // Check that update directories does not exists. + foreach ($directories as $directory) { + $this->assertDirectoryNotExists($directory); + } + + // Method must not fail if update directories do not exists. + update_clear_update_disk_cache(); + } + /** * Checks the messages at admin/modules when the site is up to date. */ diff --git a/core/modules/update/update.module b/core/modules/update/update.module index 4b7613d49a22ba90492eab2015cf45b99dcf802a..ca05e95545e95374c133515a3de544175e9ed1a3 100644 --- a/core/modules/update/update.module +++ b/core/modules/update/update.module @@ -806,7 +806,9 @@ function update_clear_update_disk_cache() { // Search for files and directories in base folder only without recursion. foreach ($directories as $directory) { - \Drupal::service('file_system')->scanDirectory($directory, '/.*/', ['callback' => 'update_delete_file_if_stale', 'recurse' => FALSE]); + if (is_dir($directory)) { + \Drupal::service('file_system')->scanDirectory($directory, '/.*/', ['callback' => 'update_delete_file_if_stale', 'recurse' => FALSE]); + } } }