Commit 742f431a authored by Ken Mortimer's avatar Ken Mortimer Committed by Ken Mortimer
Browse files

Issue #3259249 by mortim07: Ensure output for re-indexing goes to stdout in the context of the CLI

parent d3277201
Loading
Loading
Loading
Loading
+25 −15
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@ declare(strict_types=1);

namespace Drupal\data_pipelines\Form;

use Drupal\Component\Render\MarkupInterface;
use Drupal\Core\Batch\BatchBuilder;
use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
use Drupal\Core\Queue\QueueFactory;
@@ -146,11 +147,11 @@ class DatasetBatchOperations implements ContainerInjectionInterface {
        $dataset->addLogMessage((string) $validation_error->getMessage(), FALSE);
      }
      $dataset->setPendingValidation();
      $context['message'] = new TranslatableMarkup('Validation complete, validation errors exist');
      $context['message'] = new TranslatableMarkup('Validation complete, validation errors exist for dataset (@dataset).', ['@dataset' => $dataset->label()]);
      return;
    }
    $dataset->setPendingIndex();
    $context['message'] = new TranslatableMarkup('Validation complete');
    $context['message'] = new TranslatableMarkup('Validation complete.');
  }

  /**
@@ -218,23 +219,32 @@ class DatasetBatchOperations implements ContainerInjectionInterface {
      $dataset = Dataset::load($results['dataset_id']);
      assert($dataset instanceof DatasetInterface);
      if ($dataset->isIndexed()) {
        \Drupal::messenger()
          ->addMessage(new TranslatableMarkup('Dataset %name was successfully indexed.', [
            '%name' => $dataset->label(),
          ]));
        $message = new TranslatableMarkup('Dataset %name was successfully indexed.', ['%name' => $dataset->label()]);
        static::log($message);
        return;
      }
      \Drupal::messenger()->addError(
        new TranslatableMarkup('Dataset %name was unable to be indexed. Please check <a href=":url">the logs</a>.', [
      $message = new TranslatableMarkup('Dataset %name was unable to be indexed. Please check <a href=":url">the logs</a>.', [
        '%name' => $dataset->label(),
        ':url' => $dataset->toUrl()->toString(),
        ])
      );
      ]);
      static::log($message, TRUE);
      return;
    }
    \Drupal::messenger()->addError(
      new TranslatableMarkup('The validation and indexing operation did not complete.')
    );
    $message = new TranslatableMarkup('The validation and indexing operation did not complete.');
    static::log($message, TRUE);
  }

  /**
   * A method to facilitate logging.
   *
   * @param \Drupal\Component\Render\MarkupInterface $message
   *   The message.
   * @param bool $error
   *   A boolean indicating whether the log is an error.
   */
  protected static function log(MarkupInterface $message, bool $error = FALSE): void {
    \Drupal::logger('data_pipelines')->{$error ? 'warning' : 'info'}($message);
    \Drupal::messenger()->{$error ? 'addError' : 'addMessage'}($message);
  }

}
+2 −2
Original line number Diff line number Diff line
@@ -41,7 +41,7 @@ class DatasetBatchOperationsTest extends DatasetKernelTestBase {
      'results' => [],
    ];
    DatasetBatchOperations::operationValidate((int) $dataset->id(), $context);
    $this->assertEquals('Validation complete', (string) $context['message']);
    $this->assertEquals('Validation complete.', (string) $context['message']);
    $csv = <<<CSV
should_we,firstname,lastname
Y,jo,bloggs
@@ -52,7 +52,7 @@ CSV;
    ]);
    DatasetBatchOperations::operationValidate((int) $dataset->id(), $context);
    $dataset = $this->reloadDataset($dataset);
    $this->assertEquals('Validation complete, validation errors exist', (string) $context['message']);
    $this->assertEquals('Validation complete, validation errors exist for dataset (' . $dataset->label() . ').', (string) $context['message']);
    $this->assertEquals([
      'Firstname should be at least 3 characters',
    ], $dataset->getLogs());