diff --git a/src/drivers/utils/node-fs.ts b/src/drivers/utils/node-fs.ts index 89f3035b5..0103aecc1 100644 --- a/src/drivers/utils/node-fs.ts +++ b/src/drivers/utils/node-fs.ts @@ -69,7 +69,7 @@ export async function readdirRecursive( files.push(...dirFiles.map((f) => entry.name + "/" + f)); } } else { - if (!(ignore && ignore(entry.name))) { + if (!(ignore && ignore(entryPath))) { files.push(entry.name); } } diff --git a/test/drivers/fs.test.ts b/test/drivers/fs.test.ts index 43131a471..a829b49d9 100644 --- a/test/drivers/fs.test.ts +++ b/test/drivers/fs.test.ts @@ -1,8 +1,9 @@ -import { describe, it, expect, vi } from "vitest"; +import { describe, it, expect, vi, afterEach } from "vitest"; import { resolve } from "node:path"; import { readFile, writeFile } from "../../src/drivers/utils/node-fs"; -import { testDriver } from "./utils"; +import { testDriver, type TestContext } from "./utils"; import driver from "../../src/drivers/fs"; +import { createStorage } from "../../src"; describe("drivers: fs", () => { const dir = resolve(__dirname, "tmp/fs"); @@ -65,4 +66,36 @@ describe("drivers: fs", () => { }); }, }); + + const ctx = {} as TestContext; + + it("excludes ignored folder in key listing", async () => { + ctx.driver = driver({ + base: dir, + ignore: [resolve(dir, "folder1")] + }) + ctx.storage = createStorage({ + driver: ctx.driver, + }) + await ctx.storage.setItem("folder1/file1", "boop"); + expect(await ctx.storage.getKeys()).toHaveLength(0) + }) + + it("excludes ignored file in key listing", async () => { + ctx.driver = driver({ + base: dir, + ignore: [resolve(dir, "folder1/file1")] + }) + ctx.storage = createStorage({ + driver: ctx.driver, + }) + await ctx.storage.setItem("folder1/file1", "boop"); + expect(await ctx.storage.getKeys()).toHaveLength(0) + }) + + afterEach(async () => { + await ctx.storage?.clear(); + await ctx.storage?.dispose(); + await ctx.driver?.dispose?.(); + }); });