From 58e8216351402d2637847c0e778612ed7a39e403 Mon Sep 17 00:00:00 2001 From: HyunSangHan Date: Sat, 14 Mar 2020 20:51:47 +0900 Subject: [PATCH] Replace mkdirp to fs.mkdir with recursive option --- karma.conf.js | 4 ++-- lib/cli/init.js | 4 ++-- lib/utils.js | 17 +++++++++++++++++ test/integration/file-utils.spec.js | 3 +-- 4 files changed, 22 insertions(+), 6 deletions(-) diff --git a/karma.conf.js b/karma.conf.js index ae84d7d830..9f832300fa 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -2,8 +2,8 @@ const fs = require('fs'); const path = require('path'); -const mkdirp = require('mkdirp'); const os = require('os'); +const utils = require('./lib/utils'); const baseBundleDirpath = path.join(__dirname, '.karma'); const hostname = os.hostname(); @@ -111,7 +111,7 @@ module.exports = config => { console.error('No SauceLabs credentials present'); } } - mkdirp.sync(bundleDirpath); + utils.mkdir(bundleDirpath); } else { console.error('CI mode disabled'); } diff --git a/lib/cli/init.js b/lib/cli/init.js index ca847c6f1e..040b73221d 100644 --- a/lib/cli/init.js +++ b/lib/cli/init.js @@ -9,7 +9,7 @@ const fs = require('fs'); const path = require('path'); -const mkdirp = require('mkdirp'); +const utils = require('../utils'); exports.command = 'init '; @@ -24,7 +24,7 @@ exports.builder = yargs => exports.handler = argv => { const destdir = argv.path; const srcdir = path.join(__dirname, '..', '..'); - mkdirp.sync(destdir); + utils.mkdir(destdir); const css = fs.readFileSync(path.join(srcdir, 'mocha.css')); const js = fs.readFileSync(path.join(srcdir, 'mocha.js')); const tmpl = fs.readFileSync( diff --git a/lib/utils.js b/lib/utils.js index 59b250c20e..d07b256cf4 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -853,3 +853,20 @@ exports.supportsEsModules = function() { } } }; + +/** + * Recursively mkdir, like `mkdirp` + * + * @description + * This function is to create a new directory and any necessary subdirectories at the directory. + * `fs.mkdir` with {recursive: true} can be a replacement for vulnerable `mkdirp`. + * + * @private + * @param {string} pathname - Directory path to create. + * @returns {undefined} void + */ +exports.mkdir = function(pathname) { + if (!fs.existsSync(pathname)) { + fs.mkdirSync(pathname, {recursive: true}); + } +}; diff --git a/test/integration/file-utils.spec.js b/test/integration/file-utils.spec.js index 0b5b2e92fe..3f8a12c225 100644 --- a/test/integration/file-utils.spec.js +++ b/test/integration/file-utils.spec.js @@ -4,7 +4,6 @@ var utils = require('../../lib/utils'); var fs = require('fs'); var path = require('path'); var os = require('os'); -var mkdirp = require('mkdirp'); var rimraf = require('rimraf'); describe('file utils', function() { @@ -119,7 +118,7 @@ describe('file utils', function() { afterEach(removeTempDir); function makeTempDir() { - mkdirp.sync(tmpDir); + utils.mkdir(tmpDir); } function removeTempDir() {