summaryrefslogtreecommitdiff
path: root/js/truncate_test.ts
diff options
context:
space:
mode:
authorztplz <mysticzt@gmail.com>2018-10-01 03:06:20 +0800
committerRyan Dahl <ry@tinyclouds.org>2018-09-30 15:06:20 -0400
commit062b22fe569fffc0f52ec36de99e5048e4d42703 (patch)
treefb436c7163b414ea08a2050f4284fe87362f484c /js/truncate_test.ts
parentf51903f7736e3969ba0003c074d80950aca74f70 (diff)
Add deno.truncate (#805)
Diffstat (limited to 'js/truncate_test.ts')
-rw-r--r--js/truncate_test.ts73
1 files changed, 73 insertions, 0 deletions
diff --git a/js/truncate_test.ts b/js/truncate_test.ts
new file mode 100644
index 000000000..4b9cae445
--- /dev/null
+++ b/js/truncate_test.ts
@@ -0,0 +1,73 @@
+// Copyright 2018 the Deno authors. All rights reserved. MIT license.
+import { testPerm, assertEqual } from "./test_util.ts";
+import * as deno from "deno";
+
+function readDataSync(name: string): string {
+ const data = deno.readFileSync(name);
+ const decoder = new TextDecoder("utf-8");
+ const text = decoder.decode(data);
+ return text;
+}
+
+async function readData(name: string): Promise<string> {
+ const data = await deno.readFile(name);
+ const decoder = new TextDecoder("utf-8");
+ const text = decoder.decode(data);
+ return text;
+}
+
+testPerm({ write: true }, function truncateSyncSuccess() {
+ const enc = new TextEncoder();
+ const d = enc.encode("Hello");
+ const filename = deno.makeTempDirSync() + "/test_truncateSync.txt";
+ deno.writeFileSync(filename, d);
+ deno.truncateSync(filename, 20);
+ let data = readDataSync(filename);
+ assertEqual(data.length, 20);
+ deno.truncateSync(filename, 5);
+ data = readDataSync(filename);
+ assertEqual(data.length, 5);
+ deno.truncateSync(filename, -5);
+ data = readDataSync(filename);
+ assertEqual(data.length, 0);
+ deno.removeSync(filename);
+});
+
+testPerm({ write: true }, async function truncateSuccess() {
+ const enc = new TextEncoder();
+ const d = enc.encode("Hello");
+ const filename = deno.makeTempDirSync() + "/test_truncate.txt";
+ await deno.writeFile(filename, d);
+ await deno.truncate(filename, 20);
+ let data = await readData(filename);
+ assertEqual(data.length, 20);
+ await deno.truncate(filename, 5);
+ data = await readData(filename);
+ assertEqual(data.length, 5);
+ await deno.truncate(filename, -5);
+ data = await readData(filename);
+ assertEqual(data.length, 0);
+ await deno.remove(filename);
+});
+
+testPerm({ write: false }, function truncateSyncPerm() {
+ let err;
+ try {
+ deno.mkdirSync("/test_truncateSyncPermission.txt");
+ } catch (e) {
+ err = e;
+ }
+ assertEqual(err.kind, deno.ErrorKind.PermissionDenied);
+ assertEqual(err.name, "PermissionDenied");
+});
+
+testPerm({ write: false }, async function truncatePerm() {
+ let err;
+ try {
+ await deno.mkdir("/test_truncatePermission.txt");
+ } catch (e) {
+ err = e;
+ }
+ assertEqual(err.kind, deno.ErrorKind.PermissionDenied);
+ assertEqual(err.name, "PermissionDenied");
+});