@manypkg/cli
Version:
Manypkg is a linter for `package.json` files in Yarn, npm, Lerna, pnpm or Rush monorepos.
56 lines (52 loc) • 1.71 kB
text/typescript
import { expect, test } from "vitest";
import { getFakeWS, getRootWS, getWS } from "./test-helpers.ts";
import makeCheck from "../WORKSPACE_REQUIRED.ts";
let rootWorkspace = getRootWS();
test("should not error if not using workspaceProtocol: require", () => {
let ws = getWS();
let dependsOnOne = getFakeWS("depends-on-one");
dependsOnOne.packageJson.dependencies = {
"pkg-1": "^1.0.0",
};
ws.set("depends-on-one", dependsOnOne);
let errors = makeCheck.validate(dependsOnOne, ws, rootWorkspace, {});
expect(errors.length).toEqual(0);
});
test("should error if using workspaceProtocol: require", () => {
let ws = getWS();
let dependsOnOne = getFakeWS("depends-on-one");
dependsOnOne.packageJson.dependencies = {
"pkg-1": "^1.0.0",
};
ws.set("depends-on-one", dependsOnOne);
let errors = makeCheck.validate(dependsOnOne, ws, rootWorkspace, {
workspaceProtocol: "require",
});
expect(errors).toEqual([
{
type: "WORKSPACE_REQUIRED",
workspace: dependsOnOne,
depName: "pkg-1",
depType: "dependencies",
},
]);
});
test("should fix if using workspaceProtocol: require", () => {
let ws = getWS();
let dependsOnOne = getFakeWS("depends-on-one");
dependsOnOne.packageJson.dependencies = {
"pkg-1": "^1.0.0",
};
ws.set("depends-on-one", dependsOnOne);
const errors = makeCheck.validate(dependsOnOne, ws, rootWorkspace, {
workspaceProtocol: "require",
});
expect(errors).toHaveLength(1);
const result = makeCheck.fix(errors[0], {
workspaceProtocol: "require",
});
expect(dependsOnOne.packageJson.dependencies).toEqual({
"pkg-1": "workspace:^",
});
expect(result).toEqual({ requiresInstall: true });
});