From 3cd84c3f1790b48315168f73db0789a004173a69 Mon Sep 17 00:00:00 2001 From: Lee Rowlands Date: Fri, 4 Sep 2020 15:06:07 +1000 Subject: [PATCH] Issue #2969551 by quietone, mikelutz, joachim, benjifisher, catch: Migrate messages from caught exceptions need file and line details (cherry picked from commit c915bfe0bd62ed4efce2e02af63e3220b1b19e16) --- core/modules/migrate/src/MigrateExecutable.php | 13 ++++++++++--- .../tests/src/Unit/MigrateExecutableTest.php | 4 ++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/core/modules/migrate/src/MigrateExecutable.php b/core/modules/migrate/src/MigrateExecutable.php index c3a0506419..f15cdf69d9 100644 --- a/core/modules/migrate/src/MigrateExecutable.php +++ b/core/modules/migrate/src/MigrateExecutable.php @@ -189,7 +189,11 @@ public function import() { } catch (\Exception $e) { $this->message->display( - $this->t('Migration failed with source plugin exception: @e', ['@e' => $e->getMessage()]), 'error'); + $this->t('Migration failed with source plugin exception: @e in @file line @line', [ + '@e' => $e->getMessage(), + '@file' => $e->getFile(), + '@line' => $e->getLine(), + ]), 'error'); $this->migration->setStatus(MigrationInterface::STATUS_IDLE); return MigrationInterface::RESULT_FAILED; } @@ -269,8 +273,11 @@ public function import() { } catch (\Exception $e) { $this->message->display( - $this->t('Migration failed with source plugin exception: @e', - ['@e' => $e->getMessage()]), 'error'); + $this->t('Migration failed with source plugin exception: @e in @file line @line', [ + '@e' => $e->getMessage(), + '@file' => $e->getFile(), + '@line' => $e->getLine(), + ]), 'error'); $this->migration->setStatus(MigrationInterface::STATUS_IDLE); return MigrationInterface::RESULT_FAILED; } diff --git a/core/modules/migrate/tests/src/Unit/MigrateExecutableTest.php b/core/modules/migrate/tests/src/Unit/MigrateExecutableTest.php index 5acc995666..2bcb0a6e32 100644 --- a/core/modules/migrate/tests/src/Unit/MigrateExecutableTest.php +++ b/core/modules/migrate/tests/src/Unit/MigrateExecutableTest.php @@ -66,12 +66,16 @@ public function testImportWithFailingRewind() { $source->expects($this->once()) ->method('rewind') ->will($this->throwException(new \Exception($exception_message))); + // The exception message contains the line number where it is thrown. Save + // it for the testing the exception message. + $line = (__LINE__) - 3; $this->migration->expects($this->any()) ->method('getSourcePlugin') ->will($this->returnValue($source)); // Ensure that a message with the proper message was added. + $exception_message .= " in " . __FILE__ . " line $line"; $this->message->expects($this->once()) ->method('display') ->with("Migration failed with source plugin exception: " . Html::escape($exception_message)); -- GitLab