deno/js/rename_test.ts

60 lines
1.6 KiB
TypeScript
Raw Normal View History

2019-01-21 19:03:30 +00:00
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
2019-01-12 14:16:18 +00:00
import { testPerm, assert, assertEqual } from "./test_util.ts";
2018-09-12 15:44:58 +00:00
testPerm({ read: true, write: true }, function renameSyncSuccess() {
const testDir = Deno.makeTempDirSync();
2018-09-12 15:44:58 +00:00
const oldpath = testDir + "/oldpath";
const newpath = testDir + "/newpath";
Deno.mkdirSync(oldpath);
Deno.renameSync(oldpath, newpath);
const newPathInfo = Deno.statSync(newpath);
2018-09-12 15:44:58 +00:00
assert(newPathInfo.isDirectory());
let caughtErr = false;
let oldPathInfo;
try {
oldPathInfo = Deno.statSync(oldpath);
2018-09-12 15:44:58 +00:00
} catch (e) {
caughtErr = true;
assertEqual(e.kind, Deno.ErrorKind.NotFound);
2018-09-12 15:44:58 +00:00
}
assert(caughtErr);
assertEqual(oldPathInfo, undefined);
});
testPerm({ read: true, write: false }, function renameSyncPerm() {
2018-09-12 15:44:58 +00:00
let err;
try {
const oldpath = "/oldbaddir";
const newpath = "/newbaddir";
Deno.renameSync(oldpath, newpath);
2018-09-12 15:44:58 +00:00
} catch (e) {
err = e;
}
assertEqual(err.kind, Deno.ErrorKind.PermissionDenied);
2018-09-12 15:44:58 +00:00
assertEqual(err.name, "PermissionDenied");
});
testPerm({ read: true, write: true }, async function renameSuccess() {
const testDir = Deno.makeTempDirSync();
2018-09-12 15:44:58 +00:00
const oldpath = testDir + "/oldpath";
const newpath = testDir + "/newpath";
Deno.mkdirSync(oldpath);
await Deno.rename(oldpath, newpath);
const newPathInfo = Deno.statSync(newpath);
2018-09-12 15:44:58 +00:00
assert(newPathInfo.isDirectory());
let caughtErr = false;
let oldPathInfo;
try {
oldPathInfo = Deno.statSync(oldpath);
2018-09-12 15:44:58 +00:00
} catch (e) {
caughtErr = true;
assertEqual(e.kind, Deno.ErrorKind.NotFound);
2018-09-12 15:44:58 +00:00
}
assert(caughtErr);
assertEqual(oldPathInfo, undefined);
});