diff --git a/src/PromisifiedFS.js b/src/PromisifiedFS.js index e825908..86ad0ff 100644 --- a/src/PromisifiedFS.js +++ b/src/PromisifiedFS.js @@ -172,9 +172,11 @@ module.exports = class PromisifiedFS { } async unlink(filepath, opts) { ;[filepath, opts] = cleanParams(filepath, opts); - const stat = this._cache.stat(filepath); + const stat = this._cache.lstat(filepath); this._cache.unlink(filepath); - await this._idb.unlink(stat.ino) + if (stat.type !== 'symlink') { + await this._idb.unlink(stat.ino) + } return null } async readdir(filepath, opts) { diff --git a/src/__tests__/fs.promises.spec.js b/src/__tests__/fs.promises.spec.js index ea56457..378509a 100755 --- a/src/__tests__/fs.promises.spec.js +++ b/src/__tests__/fs.promises.spec.js @@ -346,7 +346,10 @@ describe("fs.promises module", () => { fs.readdir("/symlink/del").then(data => { expect(data.includes("file.txt")).toBe(true) expect(data.includes("file2.txt")).toBe(false) - done(); + fs.readFile("/symlink/del/file.txt", "utf8").then(data => { + expect(data).toBe("data") + done(); + }) }); }); }); diff --git a/src/__tests__/fs.spec.js b/src/__tests__/fs.spec.js index 3a400ec..c2fc076 100755 --- a/src/__tests__/fs.spec.js +++ b/src/__tests__/fs.spec.js @@ -377,7 +377,11 @@ describe("fs module", () => { expect(err).toBe(null) expect(data.includes("file.txt")).toBe(true) expect(data.includes("file2.txt")).toBe(false) - done(); + fs.readFile("/symlink/del/file.txt", "utf8", (err, data) => { + expect(err).toBe(null) + expect(data).toBe("data") + done(); + }) }); }); });