Skip to content

Commit

Permalink
Don't log thrown response stubs
Browse files Browse the repository at this point in the history
  • Loading branch information
brophdawg11 committed May 3, 2024
1 parent b6ff71f commit d516612
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 5 deletions.
2 changes: 1 addition & 1 deletion .changeset/rare-dodos-push.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
"@remix-run/server-runtime": patch
---

Don't log throw redirect response stubs via handleError in Single Fetch
Don't log thrown response stubs via `handleError` in Single Fetch
39 changes: 38 additions & 1 deletion integration/single-fetch-test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1687,7 +1687,7 @@ test.describe("single-fetch", () => {
response.headers.set("Location", "/data");
throw response;
}
export default function Component() {
export default function Component() {
return <h1>Should not see me</h1>;
}
`,
Expand All @@ -1705,6 +1705,43 @@ test.describe("single-fetch", () => {
expect(errorLogs.length).toBe(0);
});

test("does not log thrown non-redirect response stubs via handleError", async () => {
let fixture = await createFixture({
config: {
future: {
unstable_singleFetch: true,
},
},
files: {
...files,
"app/routes/redirect.tsx": js`
export function action({ response }) {
response.status = 400;
throw response;
}
export function loader({ response }) {
response.status = 400;
throw response;
}
export default function Component() {
return <h1>Should not see me</h1>;
}
`,
},
});

let errorLogs = [];
console.error = (e) => errorLogs.push(e);
await fixture.requestDocument("/redirect");
expect(errorLogs.length).toBe(1); // ErrorBoundary render logs this
await fixture.requestSingleFetchData("/redirect.data");
await fixture.requestSingleFetchData("/redirect.data", {
method: "post",
body: null,
});
expect(errorLogs.length).toBe(1);
});

test.describe("client loaders", () => {
test("when no routes have client loaders", async ({ page }) => {
let fixture = await createFixture(
Expand Down
3 changes: 2 additions & 1 deletion packages/remix-server-runtime/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ import {
getSingleFetchDataStrategy,
getSingleFetchRedirect,
getSingleFetchResourceRouteDataStrategy,
isResponseStub,
mergeResponseStubs,
singleFetchAction,
singleFetchLoaders,
Expand Down Expand Up @@ -430,7 +431,7 @@ async function handleDocumentRequest(
if (context.errors) {
Object.values(context.errors).forEach((err) => {
// @ts-expect-error `err.error` is "private" from users but intended for internal use
if (!isRouteErrorResponse(err) || err.error) {
if ((!isRouteErrorResponse(err) || err.error) && !isResponseStub(err)) {
handleError(err);
}
});
Expand Down
4 changes: 2 additions & 2 deletions packages/remix-server-runtime/single-fetch.ts
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ export async function singleFetchAction(
if (context.errors) {
Object.values(context.errors).forEach((err) => {
// @ts-expect-error This is "private" from users but intended for internal use
if (!isRouteErrorResponse(err) || err.error) {
if ((!isRouteErrorResponse(err) || err.error) && !isResponseStub(err)) {
handleError(err);
}
});
Expand Down Expand Up @@ -273,7 +273,7 @@ export async function singleFetchLoaders(
if (context.errors) {
Object.values(context.errors).forEach((err) => {
// @ts-expect-error This is "private" from users but intended for internal use
if (!isRouteErrorResponse(err) || err.error) {
if ((!isRouteErrorResponse(err) || err.error) && !isResponseStub(err)) {
handleError(err);
}
});
Expand Down

0 comments on commit d516612

Please # to comment.