diff options
author | 2023-08-18 05:27:33 +0800 | |
---|---|---|
committer | 2023-08-17 14:27:33 -0700 | |
commit | b2f8ef4dff8c4fa0a12f3d11520bb0609bbaecde (patch) | |
tree | 740c9be7d79ee446598a2e4af184e44e8b5ef2b2 /test/js | |
parent | b0e76a965d6580e1c09a9effe6df7aabccb670ef (diff) | |
download | bun-b2f8ef4dff8c4fa0a12f3d11520bb0609bbaecde.tar.gz bun-b2f8ef4dff8c4fa0a12f3d11520bb0609bbaecde.tar.zst bun-b2f8ef4dff8c4fa0a12f3d11520bb0609bbaecde.zip |
Fix(node:fs): add buffer parameter in fs.read callback. (#4191)
Close: #4178
Diffstat (limited to 'test/js')
-rw-r--r-- | test/js/node/fs/fs.test.ts | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/test/js/node/fs/fs.test.ts b/test/js/node/fs/fs.test.ts index 5b25beded..8bbaea70d 100644 --- a/test/js/node/fs/fs.test.ts +++ b/test/js/node/fs/fs.test.ts @@ -1692,3 +1692,119 @@ it("createReadStream on a large file emits readable event correctly", () => { }); }); }); + +describe("fs.read", () => { + it("should work with (fd, callback)", done => { + const path = `${tmpdir()}/bun-fs-read-1-${Date.now()}.txt`; + fs.writeFileSync(path, "bun"); + + const fd = fs.openSync(path, "r"); + fs.read(fd, (err, bytesRead, buffer) => { + try { + expect(err).toBeNull(); + expect(bytesRead).toBe(3); + expect(buffer).toStrictEqual(Buffer.concat([Buffer.from("bun"), Buffer.alloc(16381)])); + } catch (e) { + return done(e); + } finally { + unlinkSync(path); + } + done(); + }); + }); + it("should work with (fd, options, callback)", done => { + const path = `${tmpdir()}/bun-fs-read-2-${Date.now()}.txt`; + fs.writeFileSync(path, "bun"); + + const fd = fs.openSync(path, "r"); + const buffer = Buffer.alloc(16); + fs.read(fd, { buffer: buffer }, (err, bytesRead, buffer) => { + try { + expect(err).toBeNull(); + expect(bytesRead).toBe(3); + expect(buffer.slice(0, bytesRead).toString()).toStrictEqual("bun"); + } catch (e) { + return done(e); + } finally { + unlinkSync(path); + } + done(); + }); + }); + it("should work with (fd, buffer, offset, length, position, callback)", done => { + const path = `${tmpdir()}/bun-fs-read-3-${Date.now()}.txt`; + fs.writeFileSync(path, "bun"); + + const fd = fs.openSync(path, "r"); + const buffer = Buffer.alloc(16); + fs.read(fd, buffer, 0, buffer.length, 0, (err, bytesRead, buffer) => { + try { + expect(err).toBeNull(); + expect(bytesRead).toBe(3); + expect(buffer.slice(0, bytesRead).toString()).toStrictEqual("bun"); + } catch (e) { + return done(e); + } finally { + unlinkSync(path); + } + done(); + }); + }); + it("should work with offset", done => { + const path = `${tmpdir()}/bun-fs-read-4-${Date.now()}.txt`; + fs.writeFileSync(path, "bun"); + + const fd = fs.openSync(path, "r"); + const buffer = Buffer.alloc(16); + fs.read(fd, buffer, 1, buffer.length - 1, 0, (err, bytesRead, buffer) => { + try { + expect(err).toBeNull(); + expect(bytesRead).toBe(3); + expect(buffer.slice(1, bytesRead + 1).toString()).toStrictEqual("bun"); + } catch (e) { + return done(e); + } finally { + unlinkSync(path); + } + done(); + }); + }); + it("should work with position", done => { + const path = `${tmpdir()}/bun-fs-read-5-${Date.now()}.txt`; + fs.writeFileSync(path, "bun"); + + const fd = fs.openSync(path, "r"); + const buffer = Buffer.alloc(16); + fs.read(fd, buffer, 0, buffer.length, 1, (err, bytesRead, buffer) => { + try { + expect(err).toBeNull(); + expect(bytesRead).toBe(2); + expect(buffer.slice(0, bytesRead).toString()).toStrictEqual("un"); + } catch (e) { + return done(e); + } finally { + unlinkSync(path); + } + done(); + }); + }); + it("should work with both position and offset", done => { + const path = `${tmpdir()}/bun-fs-read-6-${Date.now()}.txt`; + fs.writeFileSync(path, "bun"); + + const fd = fs.openSync(path, "r"); + const buffer = Buffer.alloc(16); + fs.read(fd, buffer, 1, buffer.length - 1, 1, (err, bytesRead, buffer) => { + try { + expect(err).toBeNull(); + expect(bytesRead).toBe(2); + expect(buffer.slice(1, bytesRead + 1).toString()).toStrictEqual("un"); + } catch (e) { + return done(e); + } finally { + unlinkSync(path); + } + done(); + }); + }); +}); |