Verified Commit 978e4b52 authored by Lee Rowlands's avatar Lee Rowlands
Browse files

Issue #3028621 by jungle, John Cook: BatchBuilder included files fails

(cherry picked from commit ad50981a)
parent af6fc3f5
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -205,12 +205,18 @@ public function setErrorMessage($message) {
   * The path should be relative to base_path(), and thus should be built using
   * drupal_get_path(). Defaults to {module_name}.module.
   *
   * The file needs to be set before using ::addOperation(),
   * ::setFinishCallback(), or any other function that uses callbacks from the
   * file. This is so that PHP knows about the included functions.
   *
   * @param string $filename
   *   The path to the file.
   *
   * @return $this
   */
  public function setFile($filename) {
    include_once $filename;

    $this->file = $filename;
    return $this;
  }
+12 −3
Original line number Diff line number Diff line
@@ -113,11 +113,20 @@ public function testSetErrorMessage() {
   * @covers ::setFile
   */
  public function testSetFile() {
    $filename = dirname(__DIR__, 6) . '/core/modules/system/tests/modules/batch_test/batch_test.callbacks.inc';
    $this->assertIsNotCallable('_batch_test_callback_1');
    $this->assertIsNotCallable('_batch_test_finished_1');

    $batch = (new BatchBuilder())
      ->setFile('filename.php')
      ->setFile($filename)
      ->setFinishCallback('_batch_test_finished_1')
      ->addOperation('_batch_test_callback_1', [])
      ->toArray();

    $this->assertEquals('filename.php', $batch['file']);
    $this->assertEquals($filename, $batch['file']);
    $this->assertEquals([['_batch_test_callback_1', []]], $batch['operations']);
    $this->assertEquals('_batch_test_finished_1', $batch['finished']);
    $this->assertIsCallable('_batch_test_callback_1');
    $this->assertIsCallable('_batch_test_finished_1');
  }

  /**