summaryrefslogtreecommitdiff
path: root/tests/unit_node
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit_node')
-rw-r--r--tests/unit_node/_fs/_fs_write_test.ts24
-rw-r--r--tests/unit_node/fs_test.ts38
2 files changed, 61 insertions, 1 deletions
diff --git a/tests/unit_node/_fs/_fs_write_test.ts b/tests/unit_node/_fs/_fs_write_test.ts
index 43bc7a10e..148bc40e7 100644
--- a/tests/unit_node/_fs/_fs_write_test.ts
+++ b/tests/unit_node/_fs/_fs_write_test.ts
@@ -49,3 +49,27 @@ Deno.test({
assertEquals(decoder.decode(data), "hello");
},
});
+
+Deno.test({
+ name: "Data is padded if position > length",
+ async fn() {
+ const tempFile: string = Deno.makeTempFileSync();
+
+ using file = await Deno.open(tempFile, {
+ create: true,
+ write: true,
+ read: true,
+ });
+
+ const str = "hello world";
+ const buffer = Buffer.from(str);
+ const bytesWritten = writeSync(file.rid, buffer, 0, str.length, 4);
+
+ const data = Deno.readFileSync(tempFile);
+ Deno.removeSync(tempFile);
+
+ assertEquals(bytesWritten, str.length);
+ // Check if result is padded
+ assertEquals(decoder.decode(data), "\x00\x00\x00\x00hello world");
+ },
+});
diff --git a/tests/unit_node/fs_test.ts b/tests/unit_node/fs_test.ts
index a241189a5..1b121c71f 100644
--- a/tests/unit_node/fs_test.ts
+++ b/tests/unit_node/fs_test.ts
@@ -15,7 +15,13 @@ import {
statSync,
writeFileSync,
} from "node:fs";
-import { constants as fsPromiseConstants, cp } from "node:fs/promises";
+import {
+ constants as fsPromiseConstants,
+ cp,
+ FileHandle,
+ open,
+ writeFile,
+} from "node:fs/promises";
import process from "node:process";
import { pathToAbsoluteFileUrl } from "../unit/test_util.ts";
@@ -165,3 +171,33 @@ Deno.test(
assertEquals(result, undefined);
},
);
+
+// Test for https://github.com/denoland/deno/issues/23707
+Deno.test(
+ "[node/fs/promises read] respect position argument",
+ async () => {
+ const file = mkdtempSync(join(tmpdir(), "foo-")) + "/test.bin";
+ await writeFile(file, "");
+
+ const res: number[] = [];
+ let fd: FileHandle | undefined;
+ try {
+ fd = await open(file, "r+");
+
+ for (let i = 0; i <= 5; i++) {
+ const buffer = new Uint8Array([i]);
+ await fd.write(buffer, 0, 1, i + 10);
+ }
+
+ for (let i = 10; i <= 15; i++) {
+ const buffer = new Uint8Array(1);
+ await fd.read(buffer, 0, 1, i);
+ res.push(Number(buffer.toString()));
+ }
+ } finally {
+ await fd?.close();
+ }
+
+ assertEquals(res, [0, 1, 2, 3, 4, 5]);
+ },
+);