From d6f808958f414315a09b3429cf0c4b5c258f1012 Mon Sep 17 00:00:00 2001 From: Axetroy Date: Sun, 7 Apr 2019 09:01:23 +0800 Subject: fix: ensure exists file/dir must be the same type or it will throw error (denoland/deno_std#294) Original: https://github.com/denoland/deno_std/commit/24f41f67bdbc9f426e3f9f03598a1010748d8200 --- fs/ensure_dir_test.ts | 40 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 4 deletions(-) (limited to 'fs/ensure_dir_test.ts') diff --git a/fs/ensure_dir_test.ts b/fs/ensure_dir_test.ts index 2e7936ae9..3426588b7 100644 --- a/fs/ensure_dir_test.ts +++ b/fs/ensure_dir_test.ts @@ -3,6 +3,7 @@ import { test } from "../testing/mod.ts"; import { assertThrows, assertThrowsAsync } from "../testing/asserts.ts"; import { ensureDir, ensureDirSync } from "./ensure_dir.ts"; import * as path from "./path/mod.ts"; +import { ensureFile, ensureFileSync } from "./ensure_file.ts"; const testdataDir = path.resolve("fs", "testdata"); @@ -27,10 +28,7 @@ test(function ensureDirSyncIfItNotExist() { ensureDirSync(testDir); - assertThrows(() => { - Deno.statSync(testDir); - throw new Error("test dir should exists."); - }); + Deno.statSync(testDir); Deno.removeSync(baseDir, { recursive: true }); }); @@ -69,3 +67,37 @@ test(function ensureDirSyncIfItExist() { Deno.removeSync(baseDir, { recursive: true }); }); + +test(async function ensureDirIfItAsFile() { + const baseDir = path.join(testdataDir, "ensure_dir_exist_file"); + const testFile = path.join(baseDir, "test"); + + await ensureFile(testFile); + + await assertThrowsAsync( + async () => { + await ensureDir(testFile); + }, + Error, + `Ensure path exists, expected 'dir', got 'file'` + ); + + await Deno.remove(baseDir, { recursive: true }); +}); + +test(function ensureDirSyncIfItAsFile() { + const baseDir = path.join(testdataDir, "ensure_dir_exist_file_async"); + const testFile = path.join(baseDir, "test"); + + ensureFileSync(testFile); + + assertThrows( + () => { + ensureDirSync(testFile); + }, + Error, + `Ensure path exists, expected 'dir', got 'file'` + ); + + Deno.removeSync(baseDir, { recursive: true }); +}); -- cgit v1.2.3