aboutsummaryrefslogtreecommitdiff
path: root/test/js
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2023-07-07 00:33:43 -0700
committerGravatar GitHub <noreply@github.com> 2023-07-07 00:33:43 -0700
commit0ecdbf4793f19b3244a3e099bd47e3e81e993811 (patch)
treee495d272a780906f637ea3492a53194a221718b5 /test/js
parent284aaec3cd41b527428c475c345d79fd67b6dce2 (diff)
downloadbun-0ecdbf4793f19b3244a3e099bd47e3e81e993811.tar.gz
bun-0ecdbf4793f19b3244a3e099bd47e3e81e993811.tar.zst
bun-0ecdbf4793f19b3244a3e099bd47e3e81e993811.zip
[node:fs] `read`, `write` - support large numbers and BigInt (#3556)
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
Diffstat (limited to 'test/js')
-rw-r--r--test/js/node/fs/fs.test.ts52
1 files changed, 52 insertions, 0 deletions
diff --git a/test/js/node/fs/fs.test.ts b/test/js/node/fs/fs.test.ts
index 272522fc0..3b1688c15 100644
--- a/test/js/node/fs/fs.test.ts
+++ b/test/js/node/fs/fs.test.ts
@@ -278,6 +278,41 @@ it("readdirSync throws when given a file path with trailing slash", () => {
describe("readSync", () => {
const firstFourBytes = new Uint32Array(new TextEncoder().encode("File").buffer)[0];
+
+ it("works on large files", () => {
+ const dest = join(tmpdir(), "readSync-large-file.txt");
+ rmSync(dest, { force: true });
+
+ const writefd = openSync(dest, "w");
+ writeSync(writefd, Buffer.from([0x10]), 0, 1, 4_900_000_000);
+ closeSync(writefd);
+
+ const fd = openSync(dest, "r");
+ const out = Buffer.alloc(1);
+ const bytes = readSync(fd, out, 0, 1, 4_900_000_000);
+ expect(bytes).toBe(1);
+ expect(out[0]).toBe(0x10);
+ closeSync(fd);
+ rmSync(dest, { force: true });
+ });
+
+ it("works with bigint on read", () => {
+ const dest = join(tmpdir(), "readSync-large-file-bigint.txt");
+ rmSync(dest, { force: true });
+
+ const writefd = openSync(dest, "w");
+ writeSync(writefd, Buffer.from([0x10]), 0, 1, 400);
+ closeSync(writefd);
+
+ const fd = openSync(dest, "r");
+ const out = Buffer.alloc(1);
+ const bytes = readSync(fd, out, 0, 1, 400n as any);
+ expect(bytes).toBe(1);
+ expect(out[0]).toBe(0x10);
+ closeSync(fd);
+ rmSync(dest, { force: true });
+ });
+
it("works with a position set to 0", () => {
const fd = openSync(import.meta.dir + "/readFileSync.txt", "r");
const four = new Uint8Array(4);
@@ -367,6 +402,23 @@ it("preadv", () => {
});
describe("writeSync", () => {
+ it("works with bigint", () => {
+ const dest = join(tmpdir(), "writeSync-large-file-bigint.txt");
+ rmSync(dest, { force: true });
+
+ const writefd = openSync(dest, "w");
+ writeSync(writefd, Buffer.from([0x10]), 0, 1, 400n as any);
+ closeSync(writefd);
+
+ const fd = openSync(dest, "r");
+ const out = Buffer.alloc(1);
+ const bytes = readSync(fd, out, 0, 1, 400 as any);
+ expect(bytes).toBe(1);
+ expect(out[0]).toBe(0x10);
+ closeSync(fd);
+ rmSync(dest, { force: true });
+ });
+
it("works with a position set to 0", () => {
const fd = openSync(import.meta.dir + "/writeFileSync.txt", "w+");
const four = new Uint8Array(4);