Version 1
[yaffs-website] / web / core / modules / update / tests / modules / update_test / update_test.module
diff --git a/web/core/modules/update/tests/modules/update_test/update_test.module b/web/core/modules/update/tests/modules/update_test/update_test.module
new file mode 100644 (file)
index 0000000..5dd2070
--- /dev/null
@@ -0,0 +1,72 @@
+<?php
+
+/**
+ * @file
+ * Module for testing Update Manager functionality.
+ */
+
+use Drupal\Core\Extension\Extension;
+
+/**
+ * Implements hook_system_info_alter().
+ *
+ * Checks the 'update_test.settings:system_info' configuration and sees if we
+ * need to alter the system info for the given $file based on the setting. The
+ * setting is expected to be a nested associative array. If the key '#all' is
+ * defined, its subarray will include .info.yml keys and values for all modules
+ * and themes on the system. Otherwise, the settings array is keyed by the
+ * module or theme short name ($file->name) and the subarrays contain settings
+ * just for that module or theme.
+ */
+function update_test_system_info_alter(&$info, Extension $file) {
+  $setting = \Drupal::config('update_test.settings')->get('system_info');
+  foreach (['#all', $file->getName()] as $id) {
+    if (!empty($setting[$id])) {
+      foreach ($setting[$id] as $key => $value) {
+        $info[$key] = $value;
+      }
+    }
+  }
+}
+
+/**
+ * Implements hook_update_status_alter().
+ *
+ * Checks the 'update_test.settings:update_status' configuration and sees if we
+ * need to alter the update status for the given project based on the setting.
+ * The setting is expected to be a nested associative array. If the key '#all'
+ * is defined, its subarray will include .info.yml keys and values for all modules
+ * and themes on the system. Otherwise, the settings array is keyed by the
+ * module or theme short name and the subarrays contain settings just for that
+ * module or theme.
+ */
+function update_test_update_status_alter(&$projects) {
+  $setting = \Drupal::config('update_test.settings')->get('update_status');
+  if (!empty($setting)) {
+    foreach ($projects as $project_name => &$project) {
+      foreach (['#all', $project_name] as $id) {
+        if (!empty($setting[$id])) {
+          foreach ($setting[$id] as $key => $value) {
+            $project[$key] = $value;
+          }
+        }
+      }
+    }
+  }
+}
+
+/**
+ * Implements hook_filetransfer_info().
+ */
+function update_test_filetransfer_info() {
+  // Define a test file transfer method, to ensure that there will always be at
+  // least one method available in the user interface (regardless of the
+  // environment in which the update manager tests are run).
+  return [
+    'system_test' => [
+      'title' => t('Update Test FileTransfer'),
+      'class' => 'Drupal\update_test\TestFileTransferWithSettingsForm',
+      'weight' => -20,
+    ],
+  ];
+}