diff --git a/lib/tasks/jsdoc/generateJsdoc.js b/lib/tasks/jsdoc/generateJsdoc.js index 5780d73aa..bd344983d 100644 --- a/lib/tasks/jsdoc/generateJsdoc.js +++ b/lib/tasks/jsdoc/generateJsdoc.js @@ -3,10 +3,9 @@ const log = getLogger("builder:tasks:jsdoc:generateJsdoc"); import path from "node:path"; import os from "node:os"; import fs from "graceful-fs"; -import {rimraf} from "rimraf"; +import {mkdirp, rmrf} from "../../utils/fs.js"; import {promisify} from "node:util"; const mkdtemp = promisify(fs.mkdtemp); -const mkdir = promisify(fs.mkdir); import jsdocGenerator from "../../processors/jsdoc/jsdocGenerator.js"; import {createAdapter} from "@ui5/fs/resourceFactory"; @@ -104,19 +103,19 @@ const utils = { const tmpDirPath = await utils.createTmpDir(projectName); const sourcePath = path.join(tmpDirPath, "src"); // dir will be created by writing project resources below - await mkdir(sourcePath, {recursive: true}); + await mkdirp(sourcePath); const targetPath = path.join(tmpDirPath, "target"); // dir will be created by jsdoc itself - await mkdir(targetPath, {recursive: true}); + await mkdirp(targetPath); const tmpPath = path.join(tmpDirPath, "tmp"); // dir needs to be created by us - await mkdir(tmpPath, {recursive: true}); + await mkdirp(tmpPath); return { sourcePath, targetPath, tmpPath, cleanup: async () => { - return rimraf(tmpDirPath); + return rmrf(tmpDirPath); } }; }, @@ -132,7 +131,7 @@ const utils = { const sanitizedProjectName = projectName.replace(/[^A-Za-z0-9]/g, ""); const tmpRootPath = path.join(os.tmpdir(), "ui5-tooling"); - await mkdir(tmpRootPath, {recursive: true}); + await mkdirp(tmpRootPath); // Appending minus sign also because node docs advise to "avoid trailing X characters in prefix" return mkdtemp(path.join(tmpRootPath, `jsdoc-${sanitizedProjectName}-`)); diff --git a/lib/utils/fs.js b/lib/utils/fs.js new file mode 100644 index 000000000..a8852509b --- /dev/null +++ b/lib/utils/fs.js @@ -0,0 +1,12 @@ +import fs from "graceful-fs"; +import {promisify} from "node:util"; +const mkdir = promisify(fs.mkdir); +const rm = promisify(fs.rm); + +export async function mkdirp(dirPath) { + return mkdir(dirPath, {recursive: true}); +} + +export async function rmrf(dirPath) { + return rm(dirPath, {recursive: true, force: true}); +} diff --git a/package-lock.json b/package-lock.json index b662ad409..e7741a746 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,7 +20,6 @@ "jsdoc": "^4.0.4", "less-openui5": "^0.11.6", "pretty-data": "^0.40.0", - "rimraf": "^6.0.1", "semver": "^7.6.3", "terser": "^5.36.0", "workerpool": "^9.2.0", @@ -45,6 +44,7 @@ "line-column": "^1.0.2", "nyc": "^17.1.0", "open-cli": "^8.0.0", + "rimraf": "^6.0.1", "sinon": "^19.0.2", "tap-xunit": "^2.4.1" }, @@ -586,6 +586,7 @@ "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -601,12 +602,14 @@ "node_modules/@isaacs/cliui/node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true }, "node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -1678,6 +1681,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, "engines": { "node": ">=12" }, @@ -1689,6 +1693,7 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, "engines": { "node": ">=12" }, @@ -2772,6 +2777,7 @@ "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -2784,12 +2790,14 @@ "node_modules/cross-spawn/node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true }, "node_modules/cross-spawn/node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, "dependencies": { "isexe": "^2.0.0" }, @@ -3245,7 +3253,8 @@ "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true }, "node_modules/electron-to-chromium": { "version": "1.5.64", @@ -4099,6 +4108,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "dev": true, "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" @@ -5715,6 +5725,7 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, "engines": { "node": ">=16 || 14 >=14.17" } @@ -6650,7 +6661,8 @@ "node_modules/package-json-from-dist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==" + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true }, "node_modules/pacote": { "version": "18.0.6", @@ -6818,6 +6830,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, "engines": { "node": ">=8" } @@ -7415,6 +7428,8 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz", "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==", + "dev": true, + "license": "ISC", "dependencies": { "glob": "^11.0.0", "package-json-from-dist": "^1.0.0" @@ -7433,6 +7448,7 @@ "version": "11.0.0", "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.0.tgz", "integrity": "sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==", + "dev": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^4.0.1", @@ -7455,6 +7471,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.2.tgz", "integrity": "sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==", + "dev": true, "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -7469,6 +7486,7 @@ "version": "11.0.2", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz", "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==", + "dev": true, "engines": { "node": "20 || >=22" } @@ -7477,6 +7495,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", + "dev": true, "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" @@ -7606,6 +7625,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, "dependencies": { "shebang-regex": "^3.0.0" }, @@ -7617,6 +7637,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, "engines": { "node": ">=8" } @@ -7625,6 +7646,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, "engines": { "node": ">=14" }, @@ -8000,6 +8022,7 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -8013,6 +8036,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, "engines": { "node": ">=8" } @@ -8021,6 +8045,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, "engines": { "node": ">=8" } @@ -8029,6 +8054,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -8067,6 +8093,7 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, "dependencies": { "ansi-regex": "^6.0.1" }, @@ -8082,6 +8109,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -8093,6 +8121,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, "engines": { "node": ">=8" } @@ -8829,6 +8858,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -8846,6 +8876,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -8862,6 +8893,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, "engines": { "node": ">=8" } @@ -8870,6 +8902,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -8884,6 +8917,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -8894,12 +8928,14 @@ "node_modules/wrap-ansi-cjs/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -8910,12 +8946,14 @@ "node_modules/wrap-ansi/node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true }, "node_modules/wrap-ansi/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", diff --git a/package.json b/package.json index 4fc8c2c0a..f796e2dba 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "version": "git-chglog --sort semver --next-tag v$npm_package_version -o CHANGELOG.md v4.0.0.. && git add CHANGELOG.md", "prepublishOnly": "git push --follow-tags", "release-note": "git-chglog --sort semver -c .chglog/release-config.yml v$npm_package_version", - "depcheck": "depcheck --ignores @ui5/builder,docdash,@istanbuljs/esm-loader-hook,catharsis --parsers='**/*.js:es6,**/*.cjs:es6'" + "depcheck": "depcheck --ignores @ui5/builder,docdash,@istanbuljs/esm-loader-hook,catharsis,rimraf --parsers='**/*.js:es6,**/*.cjs:es6'" }, "files": [ "CHANGELOG.md", @@ -132,7 +132,6 @@ "jsdoc": "^4.0.4", "less-openui5": "^0.11.6", "pretty-data": "^0.40.0", - "rimraf": "^6.0.1", "semver": "^7.6.3", "terser": "^5.36.0", "workerpool": "^9.2.0", @@ -157,6 +156,7 @@ "line-column": "^1.0.2", "nyc": "^17.1.0", "open-cli": "^8.0.0", + "rimraf": "^6.0.1", "sinon": "^19.0.2", "tap-xunit": "^2.4.1" } diff --git a/test/lib/tasks/jsdoc/generateJsdoc.js b/test/lib/tasks/jsdoc/generateJsdoc.js index e23925e37..69add92a5 100644 --- a/test/lib/tasks/jsdoc/generateJsdoc.js +++ b/test/lib/tasks/jsdoc/generateJsdoc.js @@ -8,8 +8,8 @@ test.beforeEach(async (t) => { const sinon = t.context.sinon = sinonGlobal.createSandbox(); t.context.mkdtempStub = sinon.stub(); - t.context.mkdirStub = sinon.stub().yieldsAsync(); - t.context.rimrafStub = sinon.stub().resolves(); + t.context.mkdirpStub = sinon.stub().resolves(); + t.context.rmrfStub = sinon.stub().resolves(); t.context.jsdocGeneratorStub = sinon.stub(); t.context.writeStub = sinon.stub().resolves(); @@ -24,10 +24,10 @@ test.beforeEach(async (t) => { t.context.generateJsdoc = await esmock("../../../../lib/tasks/jsdoc/generateJsdoc.js", { "graceful-fs": { mkdtemp: t.context.mkdtempStub, - mkdir: t.context.mkdirStub }, - "rimraf": { - rimraf: t.context.rimrafStub + "../../../../lib/utils/fs.js": { + mkdirp: t.context.mkdirpStub, + rmrf: t.context.rmrfStub }, "@ui5/fs/resourceFactory": { createAdapter: t.context.createAdapterStub @@ -44,7 +44,7 @@ test.afterEach.always((t) => { }); test.serial("createTmpDir successful", async (t) => { - const {generateJsdoc, mkdirStub, mkdtempStub} = t.context; + const {generateJsdoc, mkdirpStub, mkdtempStub} = t.context; const generateJsdocUtils = generateJsdoc._utils; mkdtempStub.callsArgWithAsync(1, undefined, "some/path"); @@ -53,9 +53,8 @@ test.serial("createTmpDir successful", async (t) => { const tmpRootPath = path.join(os.tmpdir(), "ui5-tooling"); - t.is(mkdirStub.callCount, 1, "One directory got created"); - t.is(mkdirStub.getCall(0).args[0], tmpRootPath, "Correct tmp root dir got created"); - t.deepEqual(mkdirStub.getCall(0).args[1], {recursive: true}); + t.is(mkdirpStub.callCount, 1, "One directory got created"); + t.deepEqual(mkdirpStub.getCall(0).args, [tmpRootPath], "Correct tmp root dir got created"); t.is(mkdtempStub.callCount, 1, "mkdtemp is called once"); t.deepEqual(mkdtempStub.getCall(0).args[0], path.join(tmpRootPath, "jsdoc-somenam3space-")); @@ -63,7 +62,7 @@ test.serial("createTmpDir successful", async (t) => { }); test.serial("createTmpDir error", async (t) => { - const {generateJsdoc, mkdirStub, mkdtempStub} = t.context; + const {generateJsdoc, mkdirpStub, mkdtempStub} = t.context; const generateJsdocUtils = generateJsdoc._utils; mkdtempStub.callsArgWithAsync(1, new Error("Dir creation failed"), "some/path"); @@ -72,9 +71,8 @@ test.serial("createTmpDir error", async (t) => { const tmpRootPath = path.join(os.tmpdir(), "ui5-tooling"); - t.is(mkdirStub.callCount, 1, "One directory got created"); - t.deepEqual(mkdirStub.getCall(0).args[0], tmpRootPath, "Correct tmp root dir got created"); - t.deepEqual(mkdirStub.getCall(0).args[1], {recursive: true}); + t.is(mkdirpStub.callCount, 1, "One directory got created"); + t.deepEqual(mkdirpStub.getCall(0).args, [tmpRootPath], "Correct tmp root dir got created"); t.is(mkdtempStub.callCount, 1, "mkdtemp is called once"); t.deepEqual(mkdtempStub.getCall(0).args[0], path.join(tmpRootPath, "jsdoc-somenamespace-")); @@ -82,7 +80,7 @@ test.serial("createTmpDir error", async (t) => { }); test.serial("createTmpDirs", async (t) => { - const {sinon, generateJsdoc, mkdirStub, rimrafStub} = t.context; + const {sinon, generateJsdoc, mkdirpStub, rmrfStub} = t.context; const generateJsdocUtils = generateJsdoc._utils; const createTmpDirStub = sinon.stub(generateJsdocUtils, "createTmpDir") @@ -93,25 +91,22 @@ test.serial("createTmpDirs", async (t) => { t.is(createTmpDirStub.callCount, 1, "creteTmpDir called once"); t.is(createTmpDirStub.getCall(0).args[0], "some.namespace", "creteTmpDir called with correct argument"); - t.is(mkdirStub.callCount, 3, "Three directory got created"); - t.deepEqual(mkdirStub.getCall(0).args[0], path.join("/", "some", "path", "src"), + t.is(mkdirpStub.callCount, 3, "Three directory got created"); + t.deepEqual(mkdirpStub.getCall(0).args, [path.join("/", "some", "path", "src")], "Correct srcdir path got created"); - t.deepEqual(mkdirStub.getCall(0).args[1], {recursive: true}); - t.deepEqual(mkdirStub.getCall(1).args[0], path.join("/", "some", "path", "target"), + t.deepEqual(mkdirpStub.getCall(1).args, [path.join("/", "some", "path", "target")], "Correct target dir path got created"); - t.deepEqual(mkdirStub.getCall(1).args[1], {recursive: true}); - t.deepEqual(mkdirStub.getCall(2).args[0], path.join("/", "some", "path", "tmp"), + t.deepEqual(mkdirpStub.getCall(2).args, [path.join("/", "some", "path", "tmp")], "Correct tmp dir path got created"); - t.deepEqual(mkdirStub.getCall(2).args[1], {recursive: true}); t.deepEqual(res.sourcePath, path.join("/", "some", "path", "src"), "Correct temporary src dir path returned"); t.deepEqual(res.targetPath, path.join("/", "some", "path", "target"), "Correct temporary target dir path returned"); t.deepEqual(res.tmpPath, path.join("/", "some", "path", "tmp"), "Correct temporary tmp dir path returned"); res.cleanup(); - t.is(rimrafStub.callCount, 1, "Cleanup callback: rimraf called once"); - t.deepEqual(rimrafStub.getCall(0).args[0], path.join("/", "some", "path"), - "Cleanup callback: rimraf called with correct path"); + t.is(rmrfStub.callCount, 1, "Cleanup callback: rmrf called once"); + t.deepEqual(rmrfStub.getCall(0).args[0], path.join("/", "some", "path"), + "Cleanup callback: rmrf called with correct path"); }); test.serial("writeResourcesToDir with byGlob even if byGlobSource is available", async (t) => {