summaryrefslogtreecommitdiff
path: root/tests/unit_node/_fs
diff options
context:
space:
mode:
authorMarvin Hagemeister <marvin@deno.com>2024-05-28 14:30:31 +0200
committerGitHub <noreply@github.com>2024-05-28 14:30:31 +0200
commit8c9d1ba1d719c97daabe1adf77e30f746b4edf44 (patch)
tree9c2229a6ca91751eaf63f9d64da5dbfbc8d0883e /tests/unit_node/_fs
parentadbd564758d0f596cee5f23054b24571328bb5d6 (diff)
fix(ext/node/fs): `position` argument not applied (#24009)
We didn't honour the `position` options of `fd.read` and `fd.write` because we checked if the buffer is of type `Buffer` instead of just `Uint8Array`. Node does the latter. In doing so I noticed that the file handle id was written to a public property which it definitely shouldn't be. This was probably a typo. Fixes https://github.com/denoland/deno/issues/23707
Diffstat (limited to 'tests/unit_node/_fs')
-rw-r--r--tests/unit_node/_fs/_fs_write_test.ts24
1 files changed, 24 insertions, 0 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");
+ },
+});