From b84f6723273d1797dc39d4275c23a2dbe8c129a5 Mon Sep 17 00:00:00 2001 From: abhinav7x94 Date: Sun, 16 Aug 2026 05:30:00 +0530 Subject: [PATCH] fix(docs-test): fail on async entrypoint errors --- packages/docs-test/entrypoint-exit.test.ts | 53 +++++++++++++++++++ .../docs-test/tests/integrations/ai-sdk.ts | 5 +- .../tests/integrations/claude-memory.ts | 5 +- .../tests/integrations/openai-sdk.ts | 5 +- .../docs-test/tests/typescript/quickstart.ts | 5 +- packages/docs-test/tests/typescript/sdk.ts | 5 +- packages/docs-test/tests/typescript/search.ts | 5 +- .../tests/typescript/user-profiles.ts | 5 +- 8 files changed, 81 insertions(+), 7 deletions(-) create mode 100644 packages/docs-test/entrypoint-exit.test.ts diff --git a/packages/docs-test/entrypoint-exit.test.ts b/packages/docs-test/entrypoint-exit.test.ts new file mode 100644 index 00000000..f940e890 --- /dev/null +++ b/packages/docs-test/entrypoint-exit.test.ts @@ -0,0 +1,53 @@ +import { describe, expect, it } from "bun:test" +import path from "node:path" + +const asyncEntrypoints = [ + "tests/typescript/quickstart.ts", + "tests/typescript/sdk.ts", + "tests/typescript/search.ts", + "tests/typescript/user-profiles.ts", + "tests/integrations/ai-sdk.ts", + "tests/integrations/claude-memory.ts", + "tests/integrations/openai-sdk.ts", +] + +describe("TypeScript docs test entrypoints", () => { + it("exits unsuccessfully when an async test rejects", async () => { + const child = Bun.spawn( + [ + process.execPath, + "run", + path.join(import.meta.dir, "tests/typescript/quickstart.ts"), + ], + { + cwd: import.meta.dir, + env: { + ...Bun.env, + SUPERMEMORY_API_KEY: "offline-test-key", + SUPERMEMORY_BASE_URL: "http://127.0.0.1:65536", + }, + stdout: "ignore", + stderr: "pipe", + }, + ) + + const [exitCode, stderr] = await Promise.all([ + child.exited, + new Response(child.stderr).text(), + ]) + + expect(exitCode).toBe(1) + expect(stderr).toContain("ERR_INVALID_URL") + }) + + it("marks every registered async entrypoint failure as unsuccessful", async () => { + for (const relativePath of asyncEntrypoints) { + const source = await Bun.file( + path.join(import.meta.dir, relativePath), + ).text() + + expect(source).not.toContain("main().catch(console.error)") + expect(source).toContain("process.exitCode = 1") + } + }) +}) diff --git a/packages/docs-test/tests/integrations/ai-sdk.ts b/packages/docs-test/tests/integrations/ai-sdk.ts index c431a228..65a8f940 100644 --- a/packages/docs-test/tests/integrations/ai-sdk.ts +++ b/packages/docs-test/tests/integrations/ai-sdk.ts @@ -118,4 +118,7 @@ async function main() { console.log("✅ All AI SDK tests passed!") } -main().catch(console.error) +main().catch((error) => { + console.error(error) + process.exitCode = 1 +}) diff --git a/packages/docs-test/tests/integrations/claude-memory.ts b/packages/docs-test/tests/integrations/claude-memory.ts index 9256e872..18960553 100644 --- a/packages/docs-test/tests/integrations/claude-memory.ts +++ b/packages/docs-test/tests/integrations/claude-memory.ts @@ -102,4 +102,7 @@ async function main() { console.log("✅ All Claude Memory tests passed!") } -main().catch(console.error) +main().catch((error) => { + console.error(error) + process.exitCode = 1 +}) diff --git a/packages/docs-test/tests/integrations/openai-sdk.ts b/packages/docs-test/tests/integrations/openai-sdk.ts index c60c1fd0..eea9d141 100644 --- a/packages/docs-test/tests/integrations/openai-sdk.ts +++ b/packages/docs-test/tests/integrations/openai-sdk.ts @@ -83,4 +83,7 @@ async function main() { console.log("✅ All OpenAI SDK tests passed!") } -main().catch(console.error) +main().catch((error) => { + console.error(error) + process.exitCode = 1 +}) diff --git a/packages/docs-test/tests/typescript/quickstart.ts b/packages/docs-test/tests/typescript/quickstart.ts index 12da131b..089c4053 100644 --- a/packages/docs-test/tests/typescript/quickstart.ts +++ b/packages/docs-test/tests/typescript/quickstart.ts @@ -54,4 +54,7 @@ ${profile.searchResults?.results.map((r) => r.content).join("\n")}` console.log("\n✅ Quickstart TypeScript test passed!") } -main().catch(console.error) +main().catch((error) => { + console.error(error) + process.exitCode = 1 +}) diff --git a/packages/docs-test/tests/typescript/sdk.ts b/packages/docs-test/tests/typescript/sdk.ts index 065d3b34..dc778405 100644 --- a/packages/docs-test/tests/typescript/sdk.ts +++ b/packages/docs-test/tests/typescript/sdk.ts @@ -148,4 +148,7 @@ async function main() { console.log("✅ All TypeScript SDK tests passed!") } -main().catch(console.error) +main().catch((error) => { + console.error(error) + process.exitCode = 1 +}) diff --git a/packages/docs-test/tests/typescript/search.ts b/packages/docs-test/tests/typescript/search.ts index d879fa1c..a774ddec 100644 --- a/packages/docs-test/tests/typescript/search.ts +++ b/packages/docs-test/tests/typescript/search.ts @@ -115,4 +115,7 @@ async function main() { console.log("✅ All search tests passed!") } -main().catch(console.error) +main().catch((error) => { + console.error(error) + process.exitCode = 1 +}) diff --git a/packages/docs-test/tests/typescript/user-profiles.ts b/packages/docs-test/tests/typescript/user-profiles.ts index 1d66a384..302b5e2d 100644 --- a/packages/docs-test/tests/typescript/user-profiles.ts +++ b/packages/docs-test/tests/typescript/user-profiles.ts @@ -90,4 +90,7 @@ async function main() { console.log("✅ All user profile tests passed!") } -main().catch(console.error) +main().catch((error) => { + console.error(error) + process.exitCode = 1 +})