diff options
Diffstat (limited to 'js/dir_test.ts')
-rw-r--r-- | js/dir_test.ts | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/js/dir_test.ts b/js/dir_test.ts new file mode 100644 index 000000000..ff55a0e69 --- /dev/null +++ b/js/dir_test.ts @@ -0,0 +1,54 @@ +import { test, testPerm, assert, assertEqual } from "./test_util.ts"; +import * as deno from "deno"; + +test(function dirCwdNotNull() { + assert(deno.cwd() != null); +}); + +testPerm({ write: true }, function dirCwdChdirSuccess() { + const initialdir = deno.cwd(); + const path = deno.makeTempDirSync(); + deno.chdir(path); + const current = deno.cwd(); + if (deno.platform.os === "mac") { + assertEqual(current, "/private" + path); + } else { + assertEqual(current, path); + } + deno.chdir(initialdir); +}); + +testPerm({ write: true }, function dirCwdError() { + // excluding windows since it throws resource busy, while removeSync + if (["linux", "mac"].includes(deno.platform.os)) { + const initialdir = deno.cwd(); + const path = deno.makeTempDirSync(); + deno.chdir(path); + deno.removeSync(path); + try { + deno.cwd(); + throw Error("current directory removed, should throw error"); + } catch (err) { + if (err instanceof deno.DenoError) { + console.log(err.name === "NotFound"); + } else { + throw Error("raised different exception"); + } + } + deno.chdir(initialdir); + } +}); + +testPerm({ write: true }, function dirChdirError() { + const path = deno.makeTempDirSync() + "test"; + try { + deno.chdir(path); + throw Error("directory not available, should throw error"); + } catch (err) { + if (err instanceof deno.DenoError) { + console.log(err.name === "NotFound"); + } else { + throw Error("raised different exception"); + } + } +}); |