diff options
author | Marcos Casagrande <marcoscvp90@gmail.com> | 2020-07-08 15:38:22 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-08 09:38:22 -0400 |
commit | 231899695d410d8d8c14c0936682a90e98bc6fd3 (patch) | |
tree | 4703344ac42cfdee4344e55e71824fb1743b4ff1 /cli/tests/unit/write_text_file_test.ts | |
parent | 82aabb657a8fbaf107e58214490fdd129db3ae6b (diff) |
feat(cli): Add WriteFileOptions to writeTextFile & writeTextFileSync (#6280)
Diffstat (limited to 'cli/tests/unit/write_text_file_test.ts')
-rw-r--r-- | cli/tests/unit/write_text_file_test.ts | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/cli/tests/unit/write_text_file_test.ts b/cli/tests/unit/write_text_file_test.ts index fcc8ba728..57e78b860 100644 --- a/cli/tests/unit/write_text_file_test.ts +++ b/cli/tests/unit/write_text_file_test.ts @@ -1,5 +1,6 @@ import { unitTest, + assert, assertEquals, assertThrows, assertThrowsAsync, @@ -48,6 +49,59 @@ unitTest({ perms: { write: false } }, function writeTextFileSyncPerm(): void { unitTest( { perms: { read: true, write: true } }, + function writeTextFileSyncUpdateMode(): void { + if (Deno.build.os !== "windows") { + const data = "Hello"; + const filename = Deno.makeTempDirSync() + "/test.txt"; + Deno.writeTextFileSync(filename, data, { mode: 0o755 }); + assertEquals(Deno.statSync(filename).mode! & 0o777, 0o755); + Deno.writeTextFileSync(filename, data, { mode: 0o666 }); + assertEquals(Deno.statSync(filename).mode! & 0o777, 0o666); + } + } +); + +unitTest( + { perms: { read: true, write: true } }, + function writeTextFileSyncCreate(): void { + const data = "Hello"; + const filename = Deno.makeTempDirSync() + "/test.txt"; + let caughtError = false; + // if create turned off, the file won't be created + try { + Deno.writeTextFileSync(filename, data, { create: false }); + } catch (e) { + caughtError = true; + assert(e instanceof Deno.errors.NotFound); + } + assert(caughtError); + + // Turn on create, should have no error + Deno.writeTextFileSync(filename, data, { create: true }); + Deno.writeTextFileSync(filename, data, { create: false }); + assertEquals("Hello", Deno.readTextFileSync(filename)); + } +); + +unitTest( + { perms: { read: true, write: true } }, + function writeTextFileSyncAppend(): void { + const data = "Hello"; + const filename = Deno.makeTempDirSync() + "/test.txt"; + Deno.writeTextFileSync(filename, data); + Deno.writeTextFileSync(filename, data, { append: true }); + assertEquals("HelloHello", Deno.readTextFileSync(filename)); + // Now attempt overwrite + Deno.writeTextFileSync(filename, data, { append: false }); + assertEquals("Hello", Deno.readTextFileSync(filename)); + // append not set should also overwrite + Deno.writeTextFileSync(filename, data); + assertEquals("Hello", Deno.readTextFileSync(filename)); + } +); + +unitTest( + { perms: { read: true, write: true } }, async function writeTextFileSuccess(): Promise<void> { const filename = Deno.makeTempDirSync() + "/test.txt"; await Deno.writeTextFile(filename, "Hello"); @@ -92,3 +146,56 @@ unitTest( }, Deno.errors.PermissionDenied); } ); + +unitTest( + { perms: { read: true, write: true } }, + async function writeTextFileUpdateMode(): Promise<void> { + if (Deno.build.os !== "windows") { + const data = "Hello"; + const filename = Deno.makeTempDirSync() + "/test.txt"; + await Deno.writeTextFile(filename, data, { mode: 0o755 }); + assertEquals(Deno.statSync(filename).mode! & 0o777, 0o755); + await Deno.writeTextFile(filename, data, { mode: 0o666 }); + assertEquals(Deno.statSync(filename).mode! & 0o777, 0o666); + } + } +); + +unitTest( + { perms: { read: true, write: true } }, + async function writeTextFileCreate(): Promise<void> { + const data = "Hello"; + const filename = Deno.makeTempDirSync() + "/test.txt"; + let caughtError = false; + // if create turned off, the file won't be created + try { + await Deno.writeTextFile(filename, data, { create: false }); + } catch (e) { + caughtError = true; + assert(e instanceof Deno.errors.NotFound); + } + assert(caughtError); + + // Turn on create, should have no error + await Deno.writeTextFile(filename, data, { create: true }); + await Deno.writeTextFile(filename, data, { create: false }); + assertEquals("Hello", Deno.readTextFileSync(filename)); + } +); + +unitTest( + { perms: { read: true, write: true } }, + async function writeTextFileAppend(): Promise<void> { + const data = "Hello"; + const filename = Deno.makeTempDirSync() + "/test.txt"; + await Deno.writeTextFile(filename, data); + await Deno.writeTextFile(filename, data, { append: true }); + assertEquals("HelloHello", Deno.readTextFileSync(filename)); + // Now attempt overwrite + await Deno.writeTextFile(filename, data, { append: false }); + assertEquals("Hello", Deno.readTextFileSync(filename)); + // append not set should also overwrite + await Deno.writeTextFile(filename, data); + assertEquals("Hello", Deno.readTextFileSync(filename)); + } +); |