From d18c3b1437efec600d20fe1b7b08373f98bb7e18 Mon Sep 17 00:00:00 2001 From: HemangChothani Date: Fri, 7 Aug 2020 13:12:53 +0530 Subject: [PATCH 1/3] feat(storage): error message retyrn from api --- google/cloud/storage/blob.py | 5 ++++- tests/unit/test_blob.py | 14 ++++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/google/cloud/storage/blob.py b/google/cloud/storage/blob.py index 07a17867c..a1df372f5 100644 --- a/google/cloud/storage/blob.py +++ b/google/cloud/storage/blob.py @@ -3253,7 +3253,10 @@ def _raise_from_invalid_response(error): to the failed status code """ response = error.response - error_message = str(error) + if response.text: + error_message = response.text + ": " + str(error) + else: + error_message = "unknown error: " + str(error) message = u"{method} {url}: {error}".format( method=response.request.method, url=response.request.url, error=error_message diff --git a/tests/unit/test_blob.py b/tests/unit/test_blob.py index cd4a129d1..8a3fdfce9 100644 --- a/tests/unit/test_blob.py +++ b/tests/unit/test_blob.py @@ -4254,7 +4254,7 @@ def _call_fut(error): return _raise_from_invalid_response(error) - def _helper(self, message, code=http_client.BAD_REQUEST, args=()): + def _helper(self, message, code=http_client.BAD_REQUEST, reason=None, args=()): import requests from google.resumable_media import InvalidResponse @@ -4262,6 +4262,7 @@ def _helper(self, message, code=http_client.BAD_REQUEST, args=()): response = requests.Response() response.request = requests.Request("GET", "http://example.com").prepare() + response._content = reason response.status_code = code error = InvalidResponse(response, message, *args) @@ -4273,15 +4274,20 @@ def _helper(self, message, code=http_client.BAD_REQUEST, args=()): def test_default(self): message = "Failure" exc_info = self._helper(message) - expected = "GET http://example.com/: {}".format(message) + expected = "GET http://example.com/: unknown error: {}".format(message) self.assertEqual(exc_info.exception.message, expected) self.assertEqual(exc_info.exception.errors, []) def test_w_206_and_args(self): message = "Failure" + reason = b"Not available" args = ("one", "two") - exc_info = self._helper(message, code=http_client.PARTIAL_CONTENT, args=args) - expected = "GET http://example.com/: {}".format((message,) + args) + exc_info = self._helper( + message, code=http_client.PARTIAL_CONTENT, reason=reason, args=args + ) + expected = "GET http://example.com/: {}: {}".format( + reason.decode("utf-8"), (message,) + args + ) self.assertEqual(exc_info.exception.message, expected) self.assertEqual(exc_info.exception.errors, []) From 57a1358d3c20e8b311db3cc460968c61beea5d4e Mon Sep 17 00:00:00 2001 From: HemangChothani Date: Fri, 14 Aug 2020 17:57:14 +0530 Subject: [PATCH 2/3] feat: add comment for clarification --- google/cloud/storage/blob.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/google/cloud/storage/blob.py b/google/cloud/storage/blob.py index 4998ebbd8..7222a4b0a 100644 --- a/google/cloud/storage/blob.py +++ b/google/cloud/storage/blob.py @@ -3427,6 +3427,9 @@ def _raise_from_invalid_response(error): to the failed status code """ response = error.response + + # The 'response.text' gives the actual reason of error, where 'error' gives + # the message of expected status code. if response.text: error_message = response.text + ": " + str(error) else: From 562abfd04a5a229b81f63bc689163eb06d654d41 Mon Sep 17 00:00:00 2001 From: HemangChothani Date: Wed, 26 Aug 2020 15:59:53 +0530 Subject: [PATCH 3/3] fix: remove unknown error --- google/cloud/storage/blob.py | 2 +- tests/unit/test_blob.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/google/cloud/storage/blob.py b/google/cloud/storage/blob.py index a5d8c9846..08a86a52d 100644 --- a/google/cloud/storage/blob.py +++ b/google/cloud/storage/blob.py @@ -3433,7 +3433,7 @@ def _raise_from_invalid_response(error): if response.text: error_message = response.text + ": " + str(error) else: - error_message = "unknown error: " + str(error) + error_message = str(error) message = u"{method} {url}: {error}".format( method=response.request.method, url=response.request.url, error=error_message diff --git a/tests/unit/test_blob.py b/tests/unit/test_blob.py index 7fbcb7d4f..b2589499d 100644 --- a/tests/unit/test_blob.py +++ b/tests/unit/test_blob.py @@ -4376,7 +4376,7 @@ def _helper(self, message, code=http_client.BAD_REQUEST, reason=None, args=()): def test_default(self): message = "Failure" exc_info = self._helper(message) - expected = "GET http://example.com/: unknown error: {}".format(message) + expected = "GET http://example.com/: {}".format(message) self.assertEqual(exc_info.exception.message, expected) self.assertEqual(exc_info.exception.errors, [])