From ec4ea5856dd60e27c84124a82439c693ad214a51 Mon Sep 17 00:00:00 2001 From: Dan Bjorge Date: Thu, 27 Apr 2023 17:37:28 -0400 Subject: [PATCH] fix: avoid error when outputDir is contained in a non-existent directory (#1647) #### Details This PR adds a `{ recursive: true }` option to the point where we create the `outputDir`, such that it will no longer be an error to specify an outputDir with an ancestor that doesn't exist yet. ##### Motivation Addresses #1609 ##### Context n/a #### Pull request checklist - [x] Addresses an existing issue: Fixes #1609 - [x] Added relevant unit test for your changes. (`yarn test`) - [x] Verified code coverage for the changes made. Check coverage report at: `/test-results/unit/coverage` - [x] Ran precheckin (`yarn precheckin`) --- packages/shared/src/scanner/scanner.spec.ts | 2 +- packages/shared/src/scanner/scanner.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/shared/src/scanner/scanner.spec.ts b/packages/shared/src/scanner/scanner.spec.ts index c38ea0b10..d85fa48e1 100644 --- a/packages/shared/src/scanner/scanner.spec.ts +++ b/packages/shared/src/scanner/scanner.spec.ts @@ -405,7 +405,7 @@ describe(Scanner, () => { .returns(() => false) .verifiable(); // eslint-disable-next-line security/detect-non-literal-fs-filename - fsMock.setup((fsm) => fsm.mkdirSync(reportOutDir)).verifiable(); + fsMock.setup((fsm) => fsm.mkdirSync(reportOutDir, { recursive: true })).verifiable(); const crawlerParams: CrawlerRunOptions = { baseUrl: scanArguments.url, diff --git a/packages/shared/src/scanner/scanner.ts b/packages/shared/src/scanner/scanner.ts index 6ab00dd9a..64ddb8212 100644 --- a/packages/shared/src/scanner/scanner.ts +++ b/packages/shared/src/scanner/scanner.ts @@ -194,7 +194,7 @@ export class Scanner { if (!this.fileSystemObj.existsSync(outDirectory)) { this.logger.logInfo(`Report output directory does not exist. Creating directory ${outDirectory}`); // eslint-disable-next-line security/detect-non-literal-fs-filename - this.fileSystemObj.mkdirSync(outDirectory); + this.fileSystemObj.mkdirSync(outDirectory, { recursive: true }); } }