From eb1e867c5bb78a24b88850e2167dba4cb7b9d8d7 Mon Sep 17 00:00:00 2001 From: Shanmughapriyan S Date: Fri, 21 Oct 2022 11:50:10 +0530 Subject: [PATCH 1/6] fix: `await` docMetaData and handle error --- packages/docusaurus-plugin-content-docs/src/docs.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/docusaurus-plugin-content-docs/src/docs.ts b/packages/docusaurus-plugin-content-docs/src/docs.ts index 7d13e40eb8cd..8193432a4794 100644 --- a/packages/docusaurus-plugin-content-docs/src/docs.ts +++ b/packages/docusaurus-plugin-content-docs/src/docs.ts @@ -316,7 +316,7 @@ async function doProcessDocMetadata({ }; } -export function processDocMetadata(args: { +export async function processDocMetadata(args: { docFile: DocFile; versionMetadata: VersionMetadata; context: LoadContext; @@ -324,10 +324,10 @@ export function processDocMetadata(args: { env: DocEnv; }): Promise { try { - return doProcessDocMetadata(args); + const docMetaData = await doProcessDocMetadata(args); + return docMetaData; } catch (err) { - logger.error`Can't process doc metadata for doc at path path=${args.docFile.filePath} in version name=${args.versionMetadata.versionName}`; - throw err; + throw new Error(`Can't process doc metadata for doc at path path=${args.docFile.filePath} in version name=${args.versionMetadata.versionName}`); } } From a66b9c4a8c4a49c93ffb092424929f739664c07e Mon Sep 17 00:00:00 2001 From: Shanmughapriyan S Date: Fri, 21 Oct 2022 13:40:12 +0530 Subject: [PATCH 2/6] chore: add error cause --- packages/docusaurus-plugin-content-docs/src/docs.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/docusaurus-plugin-content-docs/src/docs.ts b/packages/docusaurus-plugin-content-docs/src/docs.ts index 8193432a4794..7a2f437a7bf3 100644 --- a/packages/docusaurus-plugin-content-docs/src/docs.ts +++ b/packages/docusaurus-plugin-content-docs/src/docs.ts @@ -324,10 +324,9 @@ export async function processDocMetadata(args: { env: DocEnv; }): Promise { try { - const docMetaData = await doProcessDocMetadata(args); - return docMetaData; + return await doProcessDocMetadata(args); } catch (err) { - throw new Error(`Can't process doc metadata for doc at path path=${args.docFile.filePath} in version name=${args.versionMetadata.versionName}`); + throw new Error(`Can't process doc metadata for doc at path path=${args.docFile.filePath} in version name=${args.versionMetadata.versionName}`, {cause: err}); } } From 58f09321ccc6efd63b7a03e99cfc481cafaf8649 Mon Sep 17 00:00:00 2001 From: Shanmughapriyan S Date: Fri, 21 Oct 2022 23:33:09 +0530 Subject: [PATCH 3/6] add type --- packages/docusaurus-plugin-content-docs/src/docs.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/docusaurus-plugin-content-docs/src/docs.ts b/packages/docusaurus-plugin-content-docs/src/docs.ts index 7a2f437a7bf3..3a71ed17fccf 100644 --- a/packages/docusaurus-plugin-content-docs/src/docs.ts +++ b/packages/docusaurus-plugin-content-docs/src/docs.ts @@ -326,7 +326,7 @@ export async function processDocMetadata(args: { try { return await doProcessDocMetadata(args); } catch (err) { - throw new Error(`Can't process doc metadata for doc at path path=${args.docFile.filePath} in version name=${args.versionMetadata.versionName}`, {cause: err}); + throw new Error(`Can't process doc metadata for doc at path path=${args.docFile.filePath} in version name=${args.versionMetadata.versionName}`, {cause: err as Error}); } } From a532ed0576123a85b9fec6d354606009b5fa119d Mon Sep 17 00:00:00 2001 From: Shanmughapriyan S Date: Sat, 22 Oct 2022 13:53:44 +0530 Subject: [PATCH 4/6] fix failed test --- .../docusaurus-plugin-content-docs/src/__tests__/docs.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/docusaurus-plugin-content-docs/src/__tests__/docs.test.ts b/packages/docusaurus-plugin-content-docs/src/__tests__/docs.test.ts index 4ccff773817c..9248e66ab1c3 100644 --- a/packages/docusaurus-plugin-content-docs/src/__tests__/docs.test.ts +++ b/packages/docusaurus-plugin-content-docs/src/__tests__/docs.test.ts @@ -693,7 +693,7 @@ describe('simple site', () => { }), ), ).rejects.toThrowErrorMatchingInlineSnapshot( - `"Document id "Hello/world" cannot include slash."`, + `"Can't process doc metadata for doc at path path=some/fake/path in version name=current"`, ); }); From ff8fdfe02261c36d1f7edf73133c6fcf7b27debf Mon Sep 17 00:00:00 2001 From: sebastienlorber Date: Wed, 26 Oct 2022 14:18:16 +0200 Subject: [PATCH 5/6] Jest expect error cause too! --- .../src/__tests__/docs.test.ts | 45 ++++++++++++++----- 1 file changed, 34 insertions(+), 11 deletions(-) diff --git a/packages/docusaurus-plugin-content-docs/src/__tests__/docs.test.ts b/packages/docusaurus-plugin-content-docs/src/__tests__/docs.test.ts index 9248e66ab1c3..39a762f714ca 100644 --- a/packages/docusaurus-plugin-content-docs/src/__tests__/docs.test.ts +++ b/packages/docusaurus-plugin-content-docs/src/__tests__/docs.test.ts @@ -93,6 +93,18 @@ function createTestUtils({ }); } + // Makes it easier to assert failure cases + async function getProcessDocFileError( + docFileArg: DocFile | string, + ): Promise { + try { + await processDocFile(docFileArg); + return new Error("unexpected: getProcessDocFileError didn't crash"); + } catch (e) { + return e as Error; + } + } + async function testMeta( docFileSource: string, expectedMetadata: Optional< @@ -172,7 +184,13 @@ function createTestUtils({ }; } - return {processDocFile, testMeta, testSlug, generateNavigation}; + return { + processDocFile, + getProcessDocFileError, + testMeta, + testSlug, + generateNavigation, + }; } describe('simple site', () => { @@ -683,18 +701,23 @@ describe('simple site', () => { it('docs with invalid id', async () => { const {defaultTestUtils} = await loadSite(); - await expect(async () => - defaultTestUtils.processDocFile( - createFakeDocFile({ - source: 'some/fake/path', - frontMatter: { - id: 'Hello/world', - }, - }), - ), - ).rejects.toThrowErrorMatchingInlineSnapshot( + + const error = await defaultTestUtils.getProcessDocFileError( + createFakeDocFile({ + source: 'some/fake/path', + frontMatter: { + id: 'Hello/world', + }, + }), + ); + + expect(error.message).toMatchInlineSnapshot( `"Can't process doc metadata for doc at path path=some/fake/path in version name=current"`, ); + expect(error.cause).toBeDefined(); + expect(error.cause!.message).toMatchInlineSnapshot( + `"Document id "Hello/world" cannot include slash."`, + ); }); it('custom pagination', async () => { From 8c2eb58275dd4d72a6d185e06432be97315e3385 Mon Sep 17 00:00:00 2001 From: sebastienlorber Date: Wed, 26 Oct 2022 14:28:34 +0200 Subject: [PATCH 6/6] fix lint --- packages/docusaurus-plugin-content-docs/src/docs.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/docusaurus-plugin-content-docs/src/docs.ts b/packages/docusaurus-plugin-content-docs/src/docs.ts index 3a71ed17fccf..40fe33eb52da 100644 --- a/packages/docusaurus-plugin-content-docs/src/docs.ts +++ b/packages/docusaurus-plugin-content-docs/src/docs.ts @@ -326,7 +326,10 @@ export async function processDocMetadata(args: { try { return await doProcessDocMetadata(args); } catch (err) { - throw new Error(`Can't process doc metadata for doc at path path=${args.docFile.filePath} in version name=${args.versionMetadata.versionName}`, {cause: err as Error}); + throw new Error( + `Can't process doc metadata for doc at path path=${args.docFile.filePath} in version name=${args.versionMetadata.versionName}`, + {cause: err as Error}, + ); } }