diff options
author | Michał Sabiniarz <31597105+mhvsa@users.noreply.github.com> | 2020-01-21 10:49:42 +0100 |
---|---|---|
committer | Bartek Iwańczuk <biwanczuk@gmail.com> | 2020-01-21 10:49:42 +0100 |
commit | 21cc9cb7a76d805fbb7b53583448aa101c294e71 (patch) | |
tree | be8cb74bc49c06d299e8c79ec406c484a64bd88f /cli/js/files_test.ts | |
parent | 7966bf14c062a05b1606a62c996890571454ecc8 (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.ts | 62 |
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); |