summaryrefslogtreecommitdiff
path: root/std/node/_fs/_fs_open_test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'std/node/_fs/_fs_open_test.ts')
-rw-r--r--std/node/_fs/_fs_open_test.ts217
1 files changed, 217 insertions, 0 deletions
diff --git a/std/node/_fs/_fs_open_test.ts b/std/node/_fs/_fs_open_test.ts
new file mode 100644
index 000000000..d83ce772d
--- /dev/null
+++ b/std/node/_fs/_fs_open_test.ts
@@ -0,0 +1,217 @@
+import {
+ assert,
+ assertEquals,
+ assertThrows,
+ fail,
+} from "../../testing/asserts.ts";
+import { open, openSync } from "./_fs_open.ts";
+import { join, parse } from "../../path/mod.ts";
+import { existsSync } from "../../fs/mod.ts";
+import { closeSync } from "./_fs_close.ts";
+
+const temp_dir = parse(Deno.makeTempFileSync()).dir;
+
+Deno.test({
+ name: "ASYNC: open file",
+ async fn() {
+ const file = Deno.makeTempFileSync();
+ let fd1: number;
+ await new Promise<number>((resolve, reject) => {
+ open(file, (err, fd) => {
+ if (err) reject(err);
+ resolve(fd);
+ });
+ })
+ .then((fd) => {
+ fd1 = fd;
+ assert(Deno.resources()[fd], `${fd}`);
+ })
+ .catch(() => fail())
+ .finally(() => closeSync(fd1));
+ },
+});
+
+Deno.test({
+ name: "SYNC: open file",
+ fn() {
+ const file = Deno.makeTempFileSync();
+ const fd = openSync(file);
+ assert(Deno.resources()[fd]);
+ closeSync(fd);
+ },
+});
+
+Deno.test({
+ name: "open with flag 'a'",
+ fn() {
+ const file = join(temp_dir, "some_random_file");
+ const fd = openSync(file, "a");
+ assertEquals(typeof fd, "number");
+ assertEquals(existsSync(file), true);
+ assert(Deno.resources()[fd]);
+ closeSync(fd);
+ },
+});
+
+Deno.test({
+ name: "open with flag 'ax'",
+ fn() {
+ const file = Deno.makeTempFileSync();
+ assertThrows(
+ () => {
+ openSync(file, "ax");
+ },
+ Error,
+ `EEXIST: file already exists, open '${file}'`,
+ );
+ Deno.removeSync(file);
+ },
+});
+
+Deno.test({
+ name: "open with flag 'a+'",
+ fn() {
+ const file = join(temp_dir, "some_random_file2");
+ const fd = openSync(file, "a+");
+ assertEquals(typeof fd, "number");
+ assertEquals(existsSync(file), true);
+ closeSync(fd);
+ },
+});
+
+Deno.test({
+ name: "open with flag 'ax+'",
+ fn() {
+ const file = Deno.makeTempFileSync();
+ assertThrows(
+ () => {
+ openSync(file, "ax+");
+ },
+ Error,
+ `EEXIST: file already exists, open '${file}'`,
+ );
+ Deno.removeSync(file);
+ },
+});
+
+Deno.test({
+ name: "open with flag 'as'",
+ fn() {
+ const file = join(temp_dir, "some_random_file10");
+ const fd = openSync(file, "as");
+ assertEquals(existsSync(file), true);
+ assertEquals(typeof fd, "number");
+ closeSync(fd);
+ },
+});
+
+Deno.test({
+ name: "open with flag 'as+'",
+ fn() {
+ const file = join(temp_dir, "some_random_file10");
+ const fd = openSync(file, "as+");
+ assertEquals(existsSync(file), true);
+ assertEquals(typeof fd, "number");
+ closeSync(fd);
+ },
+});
+
+Deno.test({
+ name: "open with flag 'r'",
+ fn() {
+ const file = join(temp_dir, "some_random_file3");
+ assertThrows(
+ () => {
+ openSync(file, "r");
+ },
+ Error,
+ "No such file or directory (os error 2)",
+ );
+ },
+});
+
+Deno.test({
+ name: "open with flag 'r+'",
+ fn() {
+ const file = join(temp_dir, "some_random_file4");
+ assertThrows(
+ () => {
+ openSync(file, "r+");
+ },
+ Error,
+ "No such file or directory (os error 2)",
+ );
+ },
+});
+
+Deno.test({
+ name: "open with flag 'w'",
+ fn() {
+ const file = Deno.makeTempFileSync();
+ Deno.writeTextFileSync(file, "hi there");
+ const fd = openSync(file, "w");
+ assertEquals(typeof fd, "number");
+ assertEquals(Deno.readTextFileSync(file), "");
+ closeSync(fd);
+
+ const file2 = join(temp_dir, "some_random_file5");
+ const fd2 = openSync(file2, "w");
+ assertEquals(typeof fd2, "number");
+ assertEquals(existsSync(file2), true);
+ closeSync(fd2);
+ },
+});
+
+Deno.test({
+ name: "open with flag 'wx'",
+ fn() {
+ const file = Deno.makeTempFileSync();
+ Deno.writeTextFileSync(file, "hi there");
+ const fd = openSync(file, "w");
+ assertEquals(typeof fd, "number");
+ assertEquals(Deno.readTextFileSync(file), "");
+ closeSync(fd);
+
+ const file2 = Deno.makeTempFileSync();
+ assertThrows(
+ () => {
+ openSync(file2, "wx");
+ },
+ Error,
+ `EEXIST: file already exists, open '${file2}'`,
+ );
+ },
+});
+
+Deno.test({
+ name: "open with flag 'w+'",
+ fn() {
+ const file = Deno.makeTempFileSync();
+ Deno.writeTextFileSync(file, "hi there");
+ const fd = openSync(file, "w+");
+ assertEquals(typeof fd, "number");
+ assertEquals(Deno.readTextFileSync(file), "");
+ closeSync(fd);
+
+ const file2 = join(temp_dir, "some_random_file6");
+ const fd2 = openSync(file2, "w+");
+ assertEquals(typeof fd2, "number");
+ assertEquals(existsSync(file2), true);
+ closeSync(fd2);
+ },
+});
+
+Deno.test({
+ name: "open with flag 'wx+'",
+ fn() {
+ const file = Deno.makeTempFileSync();
+ assertThrows(
+ () => {
+ openSync(file, "wx+");
+ },
+ Error,
+ `EEXIST: file already exists, open '${file}'`,
+ );
+ Deno.removeSync(file);
+ },
+});