From 151ce0266eb4de2c8fc600c81c192a5f791b6169 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Wed, 9 Oct 2019 17:10:09 -0400 Subject: Move everything into std subdir --- std/fs/ensure_link_test.ts | 174 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 174 insertions(+) create mode 100644 std/fs/ensure_link_test.ts (limited to 'std/fs/ensure_link_test.ts') diff --git a/std/fs/ensure_link_test.ts b/std/fs/ensure_link_test.ts new file mode 100644 index 000000000..6d5758268 --- /dev/null +++ b/std/fs/ensure_link_test.ts @@ -0,0 +1,174 @@ +// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license. +// TODO(axetroy): Add test for Windows once symlink is implemented for Windows. +import { test } from "../testing/mod.ts"; +import { + assertEquals, + assertThrows, + assertThrowsAsync +} from "../testing/asserts.ts"; +import { ensureLink, ensureLinkSync } from "./ensure_link.ts"; +import * as path from "./path/mod.ts"; + +const testdataDir = path.resolve("fs", "testdata"); + +test(async function ensureLinkIfItNotExist(): Promise { + const srcDir = path.join(testdataDir, "ensure_link_1"); + const destDir = path.join(testdataDir, "ensure_link_1_2"); + const testFile = path.join(srcDir, "test.txt"); + const linkFile = path.join(destDir, "link.txt"); + + await assertThrowsAsync( + async (): Promise => { + await ensureLink(testFile, linkFile); + } + ); + + await Deno.remove(destDir, { recursive: true }); +}); + +test(function ensureLinkSyncIfItNotExist(): void { + const testDir = path.join(testdataDir, "ensure_link_2"); + const testFile = path.join(testDir, "test.txt"); + const linkFile = path.join(testDir, "link.txt"); + + assertThrows((): void => { + ensureLinkSync(testFile, linkFile); + }); + + Deno.removeSync(testDir, { recursive: true }); +}); + +test(async function ensureLinkIfItExist(): Promise { + const testDir = path.join(testdataDir, "ensure_link_3"); + const testFile = path.join(testDir, "test.txt"); + const linkFile = path.join(testDir, "link.txt"); + + await Deno.mkdir(testDir, true); + await Deno.writeFile(testFile, new Uint8Array()); + + await ensureLink(testFile, linkFile); + + const srcStat = await Deno.lstat(testFile); + const linkStat = await Deno.lstat(linkFile); + + assertEquals(srcStat.isFile(), true); + assertEquals(linkStat.isFile(), true); + + // har link success. try to change one of them. they should be change both. + + // let's change origin file. + await Deno.writeFile(testFile, new TextEncoder().encode("123")); + + const testFileContent1 = new TextDecoder().decode( + await Deno.readFile(testFile) + ); + const linkFileContent1 = new TextDecoder().decode( + await Deno.readFile(testFile) + ); + + assertEquals(testFileContent1, "123"); + assertEquals(testFileContent1, linkFileContent1); + + // let's change link file. + await Deno.writeFile(testFile, new TextEncoder().encode("abc")); + + const testFileContent2 = new TextDecoder().decode( + await Deno.readFile(testFile) + ); + const linkFileContent2 = new TextDecoder().decode( + await Deno.readFile(testFile) + ); + + assertEquals(testFileContent2, "abc"); + assertEquals(testFileContent2, linkFileContent2); + + await Deno.remove(testDir, { recursive: true }); +}); + +test(function ensureLinkSyncIfItExist(): void { + const testDir = path.join(testdataDir, "ensure_link_4"); + const testFile = path.join(testDir, "test.txt"); + const linkFile = path.join(testDir, "link.txt"); + + Deno.mkdirSync(testDir, true); + Deno.writeFileSync(testFile, new Uint8Array()); + + ensureLinkSync(testFile, linkFile); + + const srcStat = Deno.lstatSync(testFile); + + const linkStat = Deno.lstatSync(linkFile); + + assertEquals(srcStat.isFile(), true); + assertEquals(linkStat.isFile(), true); + + // har link success. try to change one of them. they should be change both. + + // let's change origin file. + Deno.writeFileSync(testFile, new TextEncoder().encode("123")); + + const testFileContent1 = new TextDecoder().decode( + Deno.readFileSync(testFile) + ); + const linkFileContent1 = new TextDecoder().decode( + Deno.readFileSync(testFile) + ); + + assertEquals(testFileContent1, "123"); + assertEquals(testFileContent1, linkFileContent1); + + // let's change link file. + Deno.writeFileSync(testFile, new TextEncoder().encode("abc")); + + const testFileContent2 = new TextDecoder().decode( + Deno.readFileSync(testFile) + ); + const linkFileContent2 = new TextDecoder().decode( + Deno.readFileSync(testFile) + ); + + assertEquals(testFileContent2, "abc"); + assertEquals(testFileContent2, linkFileContent2); + + Deno.removeSync(testDir, { recursive: true }); +}); + +test(async function ensureLinkDirectoryIfItExist(): Promise { + const testDir = path.join(testdataDir, "ensure_link_origin_3"); + const linkDir = path.join(testdataDir, "ensure_link_link_3"); + const testFile = path.join(testDir, "test.txt"); + + await Deno.mkdir(testDir, true); + await Deno.writeFile(testFile, new Uint8Array()); + + await assertThrowsAsync( + async (): Promise => { + await ensureLink(testDir, linkDir); + }, + Deno.DenoError + // "Operation not permitted (os error 1)" // throw an local matching test + // "Access is denied. (os error 5)" // throw in CI + ); + + Deno.removeSync(testDir, { recursive: true }); +}); + +test(function ensureLinkSyncDirectoryIfItExist(): void { + const testDir = path.join(testdataDir, "ensure_link_origin_3"); + const linkDir = path.join(testdataDir, "ensure_link_link_3"); + const testFile = path.join(testDir, "test.txt"); + + Deno.mkdirSync(testDir, true); + Deno.writeFileSync(testFile, new Uint8Array()); + + assertThrows( + (): void => { + ensureLinkSync(testDir, linkDir); + }, + Deno.DenoError + // "Operation not permitted (os error 1)" // throw an local matching test + // "Access is denied. (os error 5)" // throw in CI + ); + + Deno.removeSync(testDir, { recursive: true }); +}); -- cgit v1.2.3 From 93f7f00c956c14620ef031626f124b57397ca867 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Wed, 9 Oct 2019 17:22:22 -0400 Subject: Run deno_std tests in github actions --- std/fs/ensure_link_test.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'std/fs/ensure_link_test.ts') diff --git a/std/fs/ensure_link_test.ts b/std/fs/ensure_link_test.ts index 6d5758268..593df5702 100644 --- a/std/fs/ensure_link_test.ts +++ b/std/fs/ensure_link_test.ts @@ -31,9 +31,11 @@ test(function ensureLinkSyncIfItNotExist(): void { const testFile = path.join(testDir, "test.txt"); const linkFile = path.join(testDir, "link.txt"); - assertThrows((): void => { - ensureLinkSync(testFile, linkFile); - }); + assertThrows( + (): void => { + ensureLinkSync(testFile, linkFile); + } + ); Deno.removeSync(testDir, { recursive: true }); }); -- cgit v1.2.3