From 48bdcdce80145e28892fce81f8e95357dee7593d Mon Sep 17 00:00:00 2001
From: xjm <xjm@65776.no-reply.drupal.org>
Date: Thu, 23 Jun 2022 23:30:31 -0500
Subject: [PATCH] Issue #3285230 by xjm, benjifisher, phenaproxima, mikelutz,
 quietone: Migrate's DownloadFunctionalTest:: testExceptionThrow() is failing
 on guzzlehttp/psr7 2.3.0

(cherry picked from commit c668a90a3f9e9158ad5a31f4235fcec3635be8a9)
---
 .../Functional/process/DownloadFunctionalTest.php   |  5 ++++-
 core/tests/Drupal/Tests/BrowserHtmlDebugTrait.php   | 13 ++++++++-----
 2 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/core/modules/migrate/tests/src/Functional/process/DownloadFunctionalTest.php b/core/modules/migrate/tests/src/Functional/process/DownloadFunctionalTest.php
index 26f2f3527fcb..51371ff69c83 100644
--- a/core/modules/migrate/tests/src/Functional/process/DownloadFunctionalTest.php
+++ b/core/modules/migrate/tests/src/Functional/process/DownloadFunctionalTest.php
@@ -76,8 +76,11 @@ public function testExceptionThrow() {
     $this->assertCount(1, $messages);
     $message = reset($messages);
 
+    // Assert critical parts of the error message, but not the exact message,
+    // since it depends on Guzzle's internal implementation of PSR-7.
     $id = $migration->getPluginId();
-    $this->assertEquals("$id:uri:download: Client error: `GET $invalid_url` resulted in a `404 Not Found` response ($invalid_url)", $message->message);
+    $this->assertStringContainsString("$id:uri:download:", $message->message);
+    $this->assertStringContainsString($invalid_url, $message->message);
     $this->assertEquals(MigrationInterface::MESSAGE_ERROR, $message->level);
 
     // Check that the second row was migrated successfully.
diff --git a/core/tests/Drupal/Tests/BrowserHtmlDebugTrait.php b/core/tests/Drupal/Tests/BrowserHtmlDebugTrait.php
index 18deac7e359d..aa4a569e3cf0 100644
--- a/core/tests/Drupal/Tests/BrowserHtmlDebugTrait.php
+++ b/core/tests/Drupal/Tests/BrowserHtmlDebugTrait.php
@@ -179,11 +179,14 @@ protected function getResponseLogHandler() {
               $html_output = 'Called from ' . $caller['function'] . ' line ' . $caller['line'];
               $html_output .= '<hr />' . $request->getMethod() . ' request to: ' . $request->getUri();
 
-              // Get the response body as a string. Any errors are silenced as
-              // tests should not fail if there is a problem. On PHP 7.4
-              // \Drupal\Tests\migrate\Functional\process\DownloadFunctionalTest
-              // fails without the usage of a silence operator.
-              $body = @(string) $response->getBody();
+              /* $var \Psr\Http\Message\StreamInterface $stream */
+              $stream = $response->getBody();
+
+              // Get the response body as a string.
+              $body = $stream->isReadable()
+                ? (string) $stream
+                : 'Response is not readable.';
+
               // On redirect responses (status code starting with '3') we need
               // to remove the meta tag that would do a browser refresh. We
               // don't want to redirect developers away when they look at the
-- 
GitLab