summaryrefslogtreecommitdiff
path: root/cli/js/files_test.ts
diff options
context:
space:
mode:
authorMichał Sabiniarz <31597105+mhvsa@users.noreply.github.com>2020-01-21 10:49:42 +0100
committerBartek Iwańczuk <biwanczuk@gmail.com>2020-01-21 10:49:42 +0100
commit21cc9cb7a76d805fbb7b53583448aa101c294e71 (patch)
treebe8cb74bc49c06d299e8c79ec406c484a64bd88f /cli/js/files_test.ts
parent7966bf14c062a05b1606a62c996890571454ecc8 (diff)
Implemented alternative open mode in files (#3119)
Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
Diffstat (limited to 'cli/js/files_test.ts')
-rw-r--r--cli/js/files_test.ts62
1 files changed, 59 insertions, 3 deletions
diff --git a/cli/js/files_test.ts b/cli/js/files_test.ts
index a4881296a..fca9a3859 100644
--- a/cli/js/files_test.ts
+++ b/cli/js/files_test.ts
@@ -1,5 +1,11 @@
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
-import { test, testPerm, assert, assertEquals } from "./test_util.ts";
+import {
+ test,
+ testPerm,
+ assert,
+ assertEquals,
+ assertStrContains
+} from "./test_util.ts";
test(function filesStdioFileDescriptors(): void {
assertEquals(Deno.stdin.rid, 0);
@@ -78,9 +84,55 @@ testPerm({ write: false }, async function writePermFailure(): Promise<void> {
}
});
+test(async function openOptions(): Promise<void> {
+ const filename = "cli/tests/fixture.json";
+ let err;
+ try {
+ await Deno.open(filename, { write: false });
+ } catch (e) {
+ err = e;
+ }
+ assert(!!err);
+ assertStrContains(
+ err.message,
+ "OpenOptions requires at least one option to be true"
+ );
+
+ try {
+ await Deno.open(filename, { truncate: true, write: false });
+ } catch (e) {
+ err = e;
+ }
+ assert(!!err);
+ assertStrContains(err.message, "'truncate' option requires 'write' option");
+
+ try {
+ await Deno.open(filename, { create: true, write: false });
+ } catch (e) {
+ err = e;
+ }
+ assert(!!err);
+ assertStrContains(
+ err.message,
+ "'create' or 'createNew' options require 'write' or 'append' option"
+ );
+
+ try {
+ await Deno.open(filename, { createNew: true, append: false });
+ } catch (e) {
+ err = e;
+ }
+ assert(!!err);
+ assertStrContains(
+ err.message,
+ "'create' or 'createNew' options require 'write' or 'append' option"
+ );
+});
+
testPerm({ read: false }, async function readPermFailure(): Promise<void> {
let caughtError = false;
try {
+ await Deno.open("package.json", "r");
await Deno.open("cli/tests/fixture.json", "r");
} catch (e) {
caughtError = true;
@@ -95,7 +147,12 @@ testPerm({ write: true }, async function writeNullBufferFailure(): Promise<
> {
const tempDir = Deno.makeTempDirSync();
const filename = tempDir + "hello.txt";
- const file = await Deno.open(filename, "w");
+ const w = {
+ write: true,
+ truncate: true,
+ create: true
+ };
+ const file = await Deno.open(filename, w);
// writing null should throw an error
let err;
@@ -183,7 +240,6 @@ testPerm({ read: true, write: true }, async function openModeWrite(): Promise<
const encoder = new TextEncoder();
const filename = tempDir + "hello.txt";
const data = encoder.encode("Hello world!\n");
-
let file = await Deno.open(filename, "w");
// assert file was created
let fileInfo = Deno.statSync(filename);