diff --git a/packages/opencode/src/util/glob.ts b/packages/opencode/src/util/glob.ts index febf062daa47..d3544be7eb44 100644 --- a/packages/opencode/src/util/glob.ts +++ b/packages/opencode/src/util/glob.ts @@ -21,11 +21,13 @@ export namespace Glob { } export async function scan(pattern: string, options: Options = {}): Promise { - return glob(pattern, toGlobOptions(options)) as Promise + const results = (await glob(pattern, toGlobOptions(options))) as string[] + return results.sort() } export function scanSync(pattern: string, options: Options = {}): string[] { - return globSync(pattern, toGlobOptions(options)) as string[] + const results = globSync(pattern, toGlobOptions(options)) as string[] + return results.sort() } export function match(pattern: string, filepath: string): boolean { diff --git a/packages/opencode/test/util/glob.test.ts b/packages/opencode/test/util/glob.test.ts index ae1bcdcf82e0..b422d23f4d8f 100644 --- a/packages/opencode/test/util/glob.test.ts +++ b/packages/opencode/test/util/glob.test.ts @@ -14,7 +14,7 @@ describe("Glob", () => { const results = await Glob.scan("*.txt", { cwd: tmp.path }) - expect(results.sort()).toEqual(["a.txt", "b.txt"]) + expect(results).toEqual(["a.txt", "b.txt"]) }) test("returns absolute paths when absolute option is true", async () => { @@ -53,7 +53,7 @@ describe("Glob", () => { const results = await Glob.scan("*", { cwd: tmp.path, include: "all" }) - expect(results.sort()).toEqual(["file.txt", "subdir"]) + expect(results).toEqual(["file.txt", "subdir"]) }) test("handles nested patterns", async () => { @@ -93,7 +93,7 @@ describe("Glob", () => { const results = await Glob.scan("**/*.txt", { cwd: tmp.path, symlink: true }) - expect(results.sort()).toEqual(["linkdir/file.txt", "realdir/file.txt"]) + expect(results).toEqual(["linkdir/file.txt", "realdir/file.txt"]) }) test("includes dotfiles when dot option is true", async () => { @@ -103,7 +103,7 @@ describe("Glob", () => { const results = await Glob.scan("*", { cwd: tmp.path, dot: true }) - expect(results.sort()).toEqual([".hidden", "visible"]) + expect(results).toEqual([".hidden", "visible"]) }) test("excludes dotfiles when dot option is false", async () => { @@ -125,7 +125,7 @@ describe("Glob", () => { const results = Glob.scanSync("*.txt", { cwd: tmp.path }) - expect(results.sort()).toEqual(["a.txt", "b.txt"]) + expect(results).toEqual(["a.txt", "b.txt"]) }) test("respects options", async () => { @@ -135,7 +135,7 @@ describe("Glob", () => { const results = Glob.scanSync("*", { cwd: tmp.path, include: "all" }) - expect(results.sort()).toEqual(["file.txt", "subdir"]) + expect(results).toEqual(["file.txt", "subdir"]) }) })