mirror of https://github.com/actions/toolkit
mkdirP: don't throw errors if windows drive exists
parent
457303960f
commit
ca990561d4
|
@ -864,6 +864,25 @@ describe('mkdirP', () => {
|
||||||
(await fs.lstat(path.join(realDirPath, 'sub_dir'))).isDirectory()
|
(await fs.lstat(path.join(realDirPath, 'sub_dir'))).isDirectory()
|
||||||
).toBe(true)
|
).toBe(true)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
if (ioUtil.IS_WINDOWS) {
|
||||||
|
it('show error only if Windows drive does not exist', async () => {
|
||||||
|
let errMsg: string
|
||||||
|
const driveRoot = path.parse(getTestTemp()).root
|
||||||
|
// Assuming 'A:\' is not a common Windows drive lets us test for a non-existing drive
|
||||||
|
for (const testPath of [driveRoot, 'A:\\']) {
|
||||||
|
if (await ioUtil.exists(testPath)) {
|
||||||
|
await io.mkdirP(testPath)
|
||||||
|
} else {
|
||||||
|
errMsg = `Drive '${testPath}' does not exist.`
|
||||||
|
await expect(io.mkdirP(testPath)).rejects.toHaveProperty(
|
||||||
|
'message',
|
||||||
|
errMsg
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
describe('which', () => {
|
describe('which', () => {
|
||||||
|
|
|
@ -141,7 +141,17 @@ export async function rmRF(inputPath: string): Promise<void> {
|
||||||
*/
|
*/
|
||||||
export async function mkdirP(fsPath: string): Promise<void> {
|
export async function mkdirP(fsPath: string): Promise<void> {
|
||||||
ok(fsPath, 'a path argument must be provided')
|
ok(fsPath, 'a path argument must be provided')
|
||||||
await ioUtil.mkdir(fsPath, {recursive: true})
|
// mkdirP would throw EPERM error if `fsPath` is a Windows drive root dir, e.g. 'C:\'
|
||||||
|
// even when it exists. This aligns with node's fs.mkdir impl. However, mkdirP shouldn't
|
||||||
|
// throw errors if `fsPath` exists regardless of the underlying platform.
|
||||||
|
// In this case, we will only check if drive exists and throw an error if it doesn't.
|
||||||
|
if (ioUtil.IS_WINDOWS && path.parse(fsPath).root === fsPath) {
|
||||||
|
if (!(await ioUtil.exists(fsPath))) {
|
||||||
|
throw new Error(`Drive '${fsPath}' does not exist.`)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
await ioUtil.mkdir(fsPath, {recursive: true})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue