diff --git a/src/js/internal/fs/glob.ts b/src/js/internal/fs/glob.ts index 294313fcbc..03d2601f94 100644 --- a/src/js/internal/fs/glob.ts +++ b/src/js/internal/fs/glob.ts @@ -17,9 +17,9 @@ interface ExtendedGlobOptions extends GlobScanOptions { exclude(ent: string): boolean; } -async function* glob(pattern: string | string[], options: GlobOptions): AsyncGenerator { +async function* glob(pattern: string | string[], options?: GlobOptions): AsyncGenerator { pattern = validatePattern(pattern); - const globOptions = mapOptions(options); + const globOptions = mapOptions(options || {}); let it = new Bun.Glob(pattern).scan(globOptions); const exclude = globOptions.exclude; @@ -29,9 +29,9 @@ async function* glob(pattern: string | string[], options: GlobOptions): AsyncGen } } -function* globSync(pattern: string | string[], options: GlobOptions): Generator { +function* globSync(pattern: string | string[], options?: GlobOptions): Generator { pattern = validatePattern(pattern); - const globOptions = mapOptions(options); + const globOptions = mapOptions(options || {}); const g = new Bun.Glob(pattern); const exclude = globOptions.exclude; for (const ent of g.scanSync(globOptions)) { diff --git a/test/js/node/fs/glob.test.ts b/test/js/node/fs/glob.test.ts index 180f79edb7..dc5d70a243 100644 --- a/test/js/node/fs/glob.test.ts +++ b/test/js/node/fs/glob.test.ts @@ -102,6 +102,18 @@ describe("fs.globSync", () => { expect(fs.globSync("a/*", { cwd: tmp, exclude })).toStrictEqual(expected); }); + it("works without providing options", () => { + const oldProcessCwd = process.cwd; + try { + process.cwd = () => tmp; + + const paths = fs.globSync("*.txt"); + expect(paths).toContain("foo.txt"); + } finally { + process.cwd = oldProcessCwd; + } + }); + describe("invalid arguments", () => { // TODO: GlobSet it("does not support arrays of patterns yet", () => { @@ -129,4 +141,23 @@ describe("fs.promises.glob", () => { expect(path).toMatch(/\.txt$/); } }); + + it("works without providing options", async () => { + const oldProcessCwd = process.cwd; + try { + process.cwd = () => tmp; + + const iter = fs.promises.glob("*.txt"); + expect(iter[Symbol.asyncIterator]).toBeDefined(); + + const paths = []; + for await (const path of iter) { + paths.push(path); + } + + expect(paths).toContain("foo.txt"); + } finally { + process.cwd = oldProcessCwd; + } + }); }); //