diff options
author | Casper Beyer <caspervonb@pm.me> | 2021-02-02 19:05:46 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-02 12:05:46 +0100 |
commit | 6abf126c2a7a451cded8c6b5e6ddf1b69c84055d (patch) | |
tree | fd94c013a19fcb38954844085821ec1601c20e18 /std/fs/copy_test.ts | |
parent | a2b5d44f1aa9d64f448a2a3cc2001272e2f60b98 (diff) |
chore: remove std directory (#9361)
This removes the std folder from the tree.
Various parts of the tests are pretty tightly dependent
on std (47 direct imports and 75 indirect imports, not
counting the cli tests that use them as fixtures) so I've
added std as a submodule for now.
Diffstat (limited to 'std/fs/copy_test.ts')
-rw-r--r-- | std/fs/copy_test.ts | 520 |
1 files changed, 0 insertions, 520 deletions
diff --git a/std/fs/copy_test.ts b/std/fs/copy_test.ts deleted file mode 100644 index 40d7cb19a..000000000 --- a/std/fs/copy_test.ts +++ /dev/null @@ -1,520 +0,0 @@ -// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. -import { - assert, - assertEquals, - assertThrows, - assertThrowsAsync, -} from "../testing/asserts.ts"; -import * as path from "../path/mod.ts"; -import { copy, copySync } from "./copy.ts"; -import { exists, existsSync } from "./exists.ts"; -import { ensureDir, ensureDirSync } from "./ensure_dir.ts"; -import { ensureFile, ensureFileSync } from "./ensure_file.ts"; -import { ensureSymlink, ensureSymlinkSync } from "./ensure_symlink.ts"; - -const moduleDir = path.dirname(path.fromFileUrl(import.meta.url)); -const testdataDir = path.resolve(moduleDir, "testdata"); - -function testCopy( - name: string, - cb: (tempDir: string) => Promise<void>, - ignore = false, -): void { - Deno.test({ - name, - async fn(): Promise<void> { - const tempDir = await Deno.makeTempDir({ - prefix: "deno_std_copy_async_test_", - }); - await cb(tempDir); - await Deno.remove(tempDir, { recursive: true }); - }, - ignore, - }); -} - -function testCopySync(name: string, cb: (tempDir: string) => void): void { - Deno.test({ - name, - fn: (): void => { - const tempDir = Deno.makeTempDirSync({ - prefix: "deno_std_copy_sync_test_", - }); - cb(tempDir); - Deno.removeSync(tempDir, { recursive: true }); - }, - }); -} - -testCopy( - "[fs] copy file if it does no exist", - async (tempDir: string): Promise<void> => { - const srcFile = path.join(testdataDir, "copy_file_not_exists.txt"); - const destFile = path.join(tempDir, "copy_file_not_exists_1.txt"); - await assertThrowsAsync( - async (): Promise<void> => { - await copy(srcFile, destFile); - }, - ); - }, -); - -testCopy( - "[fs] copy if src and dest are the same paths", - async (tempDir: string): Promise<void> => { - const srcFile = path.join(tempDir, "copy_file_same.txt"); - const destFile = path.join(tempDir, "copy_file_same.txt"); - await assertThrowsAsync( - async (): Promise<void> => { - await copy(srcFile, destFile); - }, - Error, - "Source and destination cannot be the same.", - ); - }, -); - -testCopy( - "[fs] copy file", - async (tempDir: string): Promise<void> => { - const srcFile = path.join(testdataDir, "copy_file.txt"); - const destFile = path.join(tempDir, "copy_file_copy.txt"); - - const srcContent = new TextDecoder().decode(await Deno.readFile(srcFile)); - - assertEquals( - await exists(srcFile), - true, - `source should exist before copy`, - ); - assertEquals( - await exists(destFile), - false, - "destination should not exist before copy", - ); - - await copy(srcFile, destFile); - - assertEquals(await exists(srcFile), true, "source should exist after copy"); - assertEquals( - await exists(destFile), - true, - "destination should exist before copy", - ); - - const destContent = new TextDecoder().decode(await Deno.readFile(destFile)); - - assertEquals( - srcContent, - destContent, - "source and destination should have the same content", - ); - - // Copy again and it should throw an error. - await assertThrowsAsync( - async (): Promise<void> => { - await copy(srcFile, destFile); - }, - Error, - `'${destFile}' already exists.`, - ); - - // Modify destination file. - await Deno.writeFile(destFile, new TextEncoder().encode("txt copy")); - - assertEquals( - new TextDecoder().decode(await Deno.readFile(destFile)), - "txt copy", - ); - - // Copy again with overwrite option. - await copy(srcFile, destFile, { overwrite: true }); - - // Make sure the file has been overwritten. - assertEquals( - new TextDecoder().decode(await Deno.readFile(destFile)), - "txt", - ); - }, -); - -testCopy( - "[fs] copy with preserve timestamps", - async (tempDir: string): Promise<void> => { - const srcFile = path.join(testdataDir, "copy_file.txt"); - const destFile = path.join(tempDir, "copy_file_copy.txt"); - - const srcStatInfo = await Deno.stat(srcFile); - - assert(srcStatInfo.atime instanceof Date); - assert(srcStatInfo.mtime instanceof Date); - - // Copy with overwrite and preserve timestamps options. - await copy(srcFile, destFile, { - overwrite: true, - preserveTimestamps: true, - }); - - const destStatInfo = await Deno.stat(destFile); - - assert(destStatInfo.atime instanceof Date); - assert(destStatInfo.mtime instanceof Date); - assertEquals(destStatInfo.atime, srcStatInfo.atime); - assertEquals(destStatInfo.mtime, srcStatInfo.mtime); - }, -); - -testCopy( - "[fs] copy directory to its subdirectory", - async (tempDir: string): Promise<void> => { - const srcDir = path.join(tempDir, "parent"); - const destDir = path.join(srcDir, "child"); - - await ensureDir(srcDir); - - await assertThrowsAsync( - async (): Promise<void> => { - await copy(srcDir, destDir); - }, - Error, - `Cannot copy '${srcDir}' to a subdirectory of itself, '${destDir}'.`, - ); - }, -); - -testCopy( - "[fs] copy directory and destination exist and not a directory", - async (tempDir: string): Promise<void> => { - const srcDir = path.join(tempDir, "parent"); - const destDir = path.join(tempDir, "child.txt"); - - await ensureDir(srcDir); - await ensureFile(destDir); - - await assertThrowsAsync( - async (): Promise<void> => { - await copy(srcDir, destDir); - }, - Error, - `Cannot overwrite non-directory '${destDir}' with directory '${srcDir}'.`, - ); - }, -); - -testCopy( - "[fs] copy directory", - async (tempDir: string): Promise<void> => { - const srcDir = path.join(testdataDir, "copy_dir"); - const destDir = path.join(tempDir, "copy_dir"); - const srcFile = path.join(srcDir, "0.txt"); - const destFile = path.join(destDir, "0.txt"); - const srcNestFile = path.join(srcDir, "nest", "0.txt"); - const destNestFile = path.join(destDir, "nest", "0.txt"); - - await copy(srcDir, destDir); - - assertEquals(await exists(destFile), true); - assertEquals(await exists(destNestFile), true); - - // After copy. The source and destination should have the same content. - assertEquals( - new TextDecoder().decode(await Deno.readFile(srcFile)), - new TextDecoder().decode(await Deno.readFile(destFile)), - ); - assertEquals( - new TextDecoder().decode(await Deno.readFile(srcNestFile)), - new TextDecoder().decode(await Deno.readFile(destNestFile)), - ); - - // Copy again without overwrite option and it should throw an error. - await assertThrowsAsync( - async (): Promise<void> => { - await copy(srcDir, destDir); - }, - Error, - `'${destDir}' already exists.`, - ); - - // Modify the file in the destination directory. - await Deno.writeFile(destNestFile, new TextEncoder().encode("nest copy")); - assertEquals( - new TextDecoder().decode(await Deno.readFile(destNestFile)), - "nest copy", - ); - - // Copy again with overwrite option. - await copy(srcDir, destDir, { overwrite: true }); - - // Make sure the file has been overwritten. - assertEquals( - new TextDecoder().decode(await Deno.readFile(destNestFile)), - "nest", - ); - }, -); - -testCopy( - "[fs] copy symlink file", - async (tempDir: string): Promise<void> => { - const dir = path.join(testdataDir, "copy_dir_link_file"); - const srcLink = path.join(dir, "0.txt"); - const destLink = path.join(tempDir, "0_copy.txt"); - - assert( - (await Deno.lstat(srcLink)).isSymlink, - `'${srcLink}' should be symlink type`, - ); - - await copy(srcLink, destLink); - - const statInfo = await Deno.lstat(destLink); - - assert(statInfo.isSymlink, `'${destLink}' should be symlink type`); - }, -); - -testCopy( - "[fs] copy symlink directory", - async (tempDir: string): Promise<void> => { - const srcDir = path.join(testdataDir, "copy_dir"); - const srcLink = path.join(tempDir, "copy_dir_link"); - const destLink = path.join(tempDir, "copy_dir_link_copy"); - - await ensureSymlink(srcDir, srcLink); - - assert( - (await Deno.lstat(srcLink)).isSymlink, - `'${srcLink}' should be symlink type`, - ); - - await copy(srcLink, destLink); - - const statInfo = await Deno.lstat(destLink); - - assert(statInfo.isSymlink); - }, -); - -testCopySync( - "[fs] copy file synchronously if it does not exist", - (tempDir: string): void => { - const srcFile = path.join(testdataDir, "copy_file_not_exists_sync.txt"); - const destFile = path.join(tempDir, "copy_file_not_exists_1_sync.txt"); - assertThrows((): void => { - copySync(srcFile, destFile); - }); - }, -); - -testCopySync( - "[fs] copy synchronously with preserve timestamps", - (tempDir: string): void => { - const srcFile = path.join(testdataDir, "copy_file.txt"); - const destFile = path.join(tempDir, "copy_file_copy.txt"); - - const srcStatInfo = Deno.statSync(srcFile); - - assert(srcStatInfo.atime instanceof Date); - assert(srcStatInfo.mtime instanceof Date); - - // Copy with overwrite and preserve timestamps options. - copySync(srcFile, destFile, { - overwrite: true, - preserveTimestamps: true, - }); - - const destStatInfo = Deno.statSync(destFile); - - assert(destStatInfo.atime instanceof Date); - assert(destStatInfo.mtime instanceof Date); - // TODO(bartlomieju): Activate test when https://github.com/denoland/deno/issues/2411 - // is fixed - // assertEquals(destStatInfo.atime, srcStatInfo.atime); - // assertEquals(destStatInfo.mtime, srcStatInfo.mtime); - }, -); - -testCopySync( - "[fs] copy synchronously if src and dest are the same paths", - (): void => { - const srcFile = path.join(testdataDir, "copy_file_same_sync.txt"); - assertThrows( - (): void => { - copySync(srcFile, srcFile); - }, - Error, - "Source and destination cannot be the same.", - ); - }, -); - -testCopySync("[fs] copy file synchronously", (tempDir: string): void => { - const srcFile = path.join(testdataDir, "copy_file.txt"); - const destFile = path.join(tempDir, "copy_file_copy_sync.txt"); - - const srcContent = new TextDecoder().decode(Deno.readFileSync(srcFile)); - - assertEquals(existsSync(srcFile), true); - assertEquals(existsSync(destFile), false); - - copySync(srcFile, destFile); - - assertEquals(existsSync(srcFile), true); - assertEquals(existsSync(destFile), true); - - const destContent = new TextDecoder().decode(Deno.readFileSync(destFile)); - - assertEquals(srcContent, destContent); - - // Copy again without overwrite option and it should throw an error. - assertThrows( - (): void => { - copySync(srcFile, destFile); - }, - Error, - `'${destFile}' already exists.`, - ); - - // Modify destination file. - Deno.writeFileSync(destFile, new TextEncoder().encode("txt copy")); - - assertEquals( - new TextDecoder().decode(Deno.readFileSync(destFile)), - "txt copy", - ); - - // Copy again with overwrite option. - copySync(srcFile, destFile, { overwrite: true }); - - // Make sure the file has been overwritten. - assertEquals(new TextDecoder().decode(Deno.readFileSync(destFile)), "txt"); -}); - -testCopySync( - "[fs] copy directory synchronously to its subdirectory", - (tempDir: string): void => { - const srcDir = path.join(tempDir, "parent"); - const destDir = path.join(srcDir, "child"); - - ensureDirSync(srcDir); - - assertThrows( - (): void => { - copySync(srcDir, destDir); - }, - Error, - `Cannot copy '${srcDir}' to a subdirectory of itself, '${destDir}'.`, - ); - }, -); - -testCopySync( - "[fs] copy directory synchronously, and destination exist and not a " + - "directory", - (tempDir: string): void => { - const srcDir = path.join(tempDir, "parent_sync"); - const destDir = path.join(tempDir, "child.txt"); - - ensureDirSync(srcDir); - ensureFileSync(destDir); - - assertThrows( - (): void => { - copySync(srcDir, destDir); - }, - Error, - `Cannot overwrite non-directory '${destDir}' with directory '${srcDir}'.`, - ); - }, -); - -testCopySync("[fs] copy directory synchronously", (tempDir: string): void => { - const srcDir = path.join(testdataDir, "copy_dir"); - const destDir = path.join(tempDir, "copy_dir_copy_sync"); - const srcFile = path.join(srcDir, "0.txt"); - const destFile = path.join(destDir, "0.txt"); - const srcNestFile = path.join(srcDir, "nest", "0.txt"); - const destNestFile = path.join(destDir, "nest", "0.txt"); - - copySync(srcDir, destDir); - - assertEquals(existsSync(destFile), true); - assertEquals(existsSync(destNestFile), true); - - // After copy. The source and destination should have the same content. - assertEquals( - new TextDecoder().decode(Deno.readFileSync(srcFile)), - new TextDecoder().decode(Deno.readFileSync(destFile)), - ); - assertEquals( - new TextDecoder().decode(Deno.readFileSync(srcNestFile)), - new TextDecoder().decode(Deno.readFileSync(destNestFile)), - ); - - // Copy again without overwrite option and it should throw an error. - assertThrows( - (): void => { - copySync(srcDir, destDir); - }, - Error, - `'${destDir}' already exists.`, - ); - - // Modify the file in the destination directory. - Deno.writeFileSync(destNestFile, new TextEncoder().encode("nest copy")); - assertEquals( - new TextDecoder().decode(Deno.readFileSync(destNestFile)), - "nest copy", - ); - - // Copy again with overwrite option. - copySync(srcDir, destDir, { overwrite: true }); - - // Make sure the file has been overwritten. - assertEquals( - new TextDecoder().decode(Deno.readFileSync(destNestFile)), - "nest", - ); -}); - -testCopySync( - "[fs] copy symlink file synchronously", - (tempDir: string): void => { - const dir = path.join(testdataDir, "copy_dir_link_file"); - const srcLink = path.join(dir, "0.txt"); - const destLink = path.join(tempDir, "0_copy.txt"); - - assert( - Deno.lstatSync(srcLink).isSymlink, - `'${srcLink}' should be symlink type`, - ); - - copySync(srcLink, destLink); - - const statInfo = Deno.lstatSync(destLink); - - assert(statInfo.isSymlink, `'${destLink}' should be symlink type`); - }, -); - -testCopySync( - "[fs] copy symlink directory synchronously", - (tempDir: string): void => { - const originDir = path.join(testdataDir, "copy_dir"); - const srcLink = path.join(tempDir, "copy_dir_link"); - const destLink = path.join(tempDir, "copy_dir_link_copy"); - - ensureSymlinkSync(originDir, srcLink); - - assert( - Deno.lstatSync(srcLink).isSymlink, - `'${srcLink}' should be symlink type`, - ); - - copySync(srcLink, destLink); - - const statInfo = Deno.lstatSync(destLink); - - assert(statInfo.isSymlink); - }, -); |