Skip to content

Commit

Permalink
Fix caching nested dirs
Browse files Browse the repository at this point in the history
  • Loading branch information
joshuajaco committed Nov 19, 2023
1 parent d8808d8 commit 9be5cb0
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 15 deletions.
2 changes: 1 addition & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ export function findWorkspacesRoot(dirname?: string, options: Options = {}) {

if (cache) {
for (const [key, value] of cache.root.entries()) {
if (dir.startsWith(key + sep)) return value;
if ((dir + sep).startsWith(key + sep)) return value;
}
}

Expand Down
21 changes: 21 additions & 0 deletions tests/findRoot.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -129,4 +129,25 @@ describe("findWorkspacesRoot", () => {
assert.deepStrictEqual(cache.root, new Map());
assert.deepStrictEqual(cache.workspaces, new Map());
});

it("returns root from cache", () => {
const cache = createWorkspacesCache();
const options = { cache, stopDir: "." };

const root = {
location: posixResolve("fixtures", "bolt"),
globs: ["packages/**/*"],
};

cache.root.set(resolve("fixtures", "bolt"), root);

assert.strictEqual(
findWorkspacesRoot(join("fixtures", "bolt", "foo"), options),
root,
);
assert.strictEqual(
findWorkspacesRoot(join("fixtures", "bolt"), options),
root,
);
});
});
28 changes: 14 additions & 14 deletions tests/findWorkspaces.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,20 @@ describe("findWorkspaces", () => {
it("fills cache", () => {
const cache = createWorkspacesCache();

assert.deepStrictEqual(
findWorkspaces(posixResolve("fixtures", "lerna"), { cache }),
[
{
location: posixResolve("fixtures", "lerna", "packages", "a"),
package: { name: "@lerna/a", private: true },
},
{
location: posixResolve("fixtures", "lerna", "packages", "b"),
package: { name: "@lerna/b", private: true },
},
],
);

assert.deepStrictEqual(
findWorkspaces(posixResolve("fixtures", "lerna-with-packages", "foo"), {
cache,
Expand Down Expand Up @@ -268,20 +282,6 @@ describe("findWorkspaces", () => {
],
);

assert.deepStrictEqual(
findWorkspaces(posixResolve("fixtures", "lerna"), { cache }),
[
{
location: posixResolve("fixtures", "lerna", "packages", "a"),
package: { name: "@lerna/a", private: true },
},
{
location: posixResolve("fixtures", "lerna", "packages", "b"),
package: { name: "@lerna/b", private: true },
},
],
);

assert.deepStrictEqual(
cache.root,
new Map([
Expand Down

0 comments on commit 9be5cb0

Please sign in to comment.