Version 1
[yaffs-website] / vendor / drush / drush / tests / unit.drush.inc
diff --git a/vendor/drush/drush/tests/unit.drush.inc b/vendor/drush/drush/tests/unit.drush.inc
new file mode 100644 (file)
index 0000000..817f89f
--- /dev/null
@@ -0,0 +1,151 @@
+<?php
+
+/**
+ * @file
+ *   Commands which are useful for unit tests.
+ */
+
+/**
+ * Implementation of hook_drush_command().
+ */
+function unit_drush_command() {
+  $items['unit'] = array(
+    'description' => 'No-op command, used to test completion for commands that start the same as other commands.',
+    'bootstrap' => DRUSH_BOOTSTRAP_NONE,
+  );
+  $items['unit-eval'] = array(
+    'description' => 'Works like php-eval. Used for testing $command_specific context.',
+    'bootstrap' => DRUSH_BOOTSTRAP_MAX,
+    'callback' => 'drush_core_php_eval',
+  );
+  $items['unit-invoke'] = array(
+    'description' => 'Return an array indicating which invoke hooks got called.',
+    'bootstrap' => DRUSH_BOOTSTRAP_NONE,
+    'callback' => 'drush_unit_invoke_primary',
+  );
+  $items['unit-batch'] = array(
+    'description' => 'Run a batch process.',
+    'bootstrap' => DRUSH_BOOTSTRAP_MAX,
+  );
+  $items['unit-return-options'] = array(
+    'description' => 'Return options as function result.',
+    'bootstrap' => DRUSH_BOOTSTRAP_NONE,
+  );
+  $items['unit-return-argv'] = array(
+    'description' => 'Return original argv as function result.',
+    'bootstrap' => DRUSH_BOOTSTRAP_NONE,
+  );
+  $items['missing-callback'] = array(
+    'description' => 'Command with no callback function, to test error reporting.',
+    'bootstrap' => DRUSH_BOOTSTRAP_NONE,
+  );
+  $items['unit-drush-dependency'] = array(
+    'description' => 'Command depending on an unknown commandfile.',
+    'bootstrap' => DRUSH_BOOTSTRAP_NONE,
+    'drush dependencies' => array('unknown-commandfile'),
+  );
+  return $items;
+}
+
+// Implement each invoke hook with the same single line of code.
+// That line records that the hook was called.
+function drush_unit_invoke_init() {unit_invoke_log(__FUNCTION__);}
+function drush_unit_invoke_validate() {unit_invoke_log(__FUNCTION__);}
+function drush_unit_pre_unit_invoke() {unit_invoke_log(__FUNCTION__);}
+// Primary callback is not invoked when command specifies a 'callback'.
+// function drush_unit_invoke() {unit_invoke_log(__FUNCTION__);}
+function drush_unit_invoke_primary() {unit_invoke_log(__FUNCTION__);}
+function drush_unit_pre_unit_invoke_rollback() {unit_invoke_log(__FUNCTION__);}
+function drush_unit_post_unit_invoke_rollback() {unit_invoke_log(__FUNCTION__);}
+
+// Record that hook_drush_init() fired.
+function unit_drush_init() {
+  $command = drush_get_command();
+  if ($command['command'] == 'unit-invoke') {
+    unit_invoke_log(__FUNCTION__);
+  }
+}
+
+function drush_unit_post_unit_invoke() {
+  // Record that this hook was called.
+  unit_invoke_log(__FUNCTION__);
+
+  // Make sure we enter into rollback.
+  drush_set_error('');
+}
+
+/**
+ * The final invoke hook. Emit the call history.
+ * Cannot use 'exit' as it does not fire in rollback scenario.
+ */
+function drush_unit_invoke_validate_rollback() {
+  unit_invoke_log(__FUNCTION__);
+  print json_encode(unit_invoke_log());
+}
+
+function unit_invoke_log($function = NULL) {
+  static $called = array();
+  if ($function) {
+    $called[] = $function;
+  }
+  else {
+    return $called;
+  }
+}
+
+/**
+ * Command callback.
+ */
+function drush_unit_batch() {
+  // Reduce php memory/time limits to test backend respawn.
+  // TODO.
+
+  $batch = array(
+    'operations' => array(
+       array('_drush_unit_batch_operation', array()),
+    ),
+    'finished' => '_drush_unit_batch_finished',
+    // 'file' => Doesn't work for us. Drupal 7 enforces this path
+    // to be relative to DRUPAL_ROOT.
+    // @see _batch_process().
+  );
+  batch_set($batch);
+  drush_backend_batch_process();
+
+  // Print the batch output.
+  drush_backend_output();
+}
+
+function _drush_unit_batch_operation(&$context) {
+  $context['message'] = "!!! ArrayObject does its job.";
+
+  for ($i = 0; $i < 5; $i++) {
+    drush_print("Iteration $i");
+  }
+  $context['finished'] = 1;
+}
+
+function _drush_unit_batch_finished() {
+  // Restore php limits.
+  // TODO.
+}
+
+// Return all of the option values passed in to this routine, minus the
+// global options.
+function drush_unit_return_options() {
+  $all_option_values = array_merge(drush_get_context('cli'), drush_get_context('stdin'));
+  foreach (drush_get_global_options() as $key => $info) {
+    unset($all_option_values[$key]);
+  }
+  if (isset($all_option_values['log-message'])) {
+    drush_log($all_option_values['log-message'], 'warning');
+    drush_log("done", 'warning');
+    unset($all_option_values['log-message']);
+  }
+  return $all_option_values;
+}
+
+// Return all of the original arguments passed to this script
+function drush_unit_return_argv() {
+  return drush_get_context('argv');
+}