diff options
-rw-r--r-- | cli/js/web/fetch.ts | 13 | ||||
-rw-r--r-- | cli/tests/unit/fetch_test.ts | 5 | ||||
-rwxr-xr-x | tools/http_server.py | 2 |
3 files changed, 13 insertions, 7 deletions
diff --git a/cli/js/web/fetch.ts b/cli/js/web/fetch.ts index a56ebe772..2f01e7ad7 100644 --- a/cli/js/web/fetch.ts +++ b/cli/js/web/fetch.ts @@ -288,6 +288,7 @@ export async function fetch( } } + let responseInit: ResponseInit = {}; while (remRedirectCount) { const fetchResponse = await sendFetchReq(url, method, headers, body); @@ -314,7 +315,7 @@ export async function fetch( }, }); - let responseInit: ResponseInit = { + responseInit = { status: fetchResponse.status, statusText: fetchResponse.statusText, headers: fetchResponse.headers, @@ -374,6 +375,12 @@ export async function fetch( return response; } } - // Return a network error due to too many redirections - throw notImplemented(); + + responseData.set(responseInit, { + type: "error", + redirected: false, + url: "", + }); + + return new Response(null, responseInit); } diff --git a/cli/tests/unit/fetch_test.ts b/cli/tests/unit/fetch_test.ts index 6dfb23390..5fd1cc469 100644 --- a/cli/tests/unit/fetch_test.ts +++ b/cli/tests/unit/fetch_test.ts @@ -245,14 +245,13 @@ unitTest( unitTest( { - // FIXME(bartlomieju): - // The feature below is not implemented, but the test should work after implementation - ignore: true, perms: { net: true }, }, async function fetchWithInfRedirection(): Promise<void> { const response = await fetch("http://localhost:4549/cli/tests"); // will redirect to the same place assertEquals(response.status, 0); // network error + assertEquals(response.type, "error"); + assertEquals(response.ok, false); } ); diff --git a/tools/http_server.py b/tools/http_server.py index 346b319f8..0c4d152f2 100755 --- a/tools/http_server.py +++ b/tools/http_server.py @@ -363,7 +363,7 @@ def start(s): def spawn(): servers = (server(), redirect_server(), another_redirect_server(), double_redirects_server(), https_server(), - absolute_redirect_server()) + absolute_redirect_server(), inf_redirects_server()) # In order to wait for each of the servers to be ready, we try connecting to # them with a tcp socket. for running_server in servers: |