Skip to content

Commit df72a2c

Browse files
committed
Fix issue with corepack, store version in engines field
1 parent 5657dc9 commit df72a2c

File tree

9 files changed

+3378
-2462
lines changed

9 files changed

+3378
-2462
lines changed

packages/cli-v3/e2e/compile.test.ts

Lines changed: 44 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import { execaNode } from "execa";
2-
import { renameSync } from "node:fs";
1+
import { execa, execaNode } from "execa";
32
import { join, resolve } from "node:path";
43
import { typecheckProject } from "../src/commands/deploy";
54
import { readConfig } from "../src/utilities/configFiles";
65
import { rm } from "node:fs/promises";
6+
import { readFileSync } from "node:fs";
77

88
type TestCase = {
99
name: string;
@@ -22,21 +22,50 @@ const allTestCases: TestCase[] = [
2222
];
2323

2424
const testCases = process.env.MOD
25-
? [allTestCases.find(({ name }) => process.env.MOD === name)]
25+
? allTestCases.filter(({ name }) => process.env.MOD === name)
2626
: allTestCases;
2727

28+
const commandPath = resolve(join(process.cwd(), "dist/e2e.js"));
29+
const logLevel = process.env.LOG || "log";
30+
2831
if (testCases.length > 0) {
29-
describe.each(testCases as TestCase[])("fixture $name", ({ name, skipTypecheck }) => {
32+
describe.each(testCases)("fixture $name", ({ name, skipTypecheck }) => {
33+
const packageManager = process.env.PM || "npm";
3034
const fixtureDir = resolve(join(process.cwd(), "e2e/fixtures", name));
31-
const commandPath = resolve(join(process.cwd(), "dist/e2e.js"));
32-
const logLevel = process.env.LOG || "log";
3335

3436
beforeAll(async () => {
35-
await rm(resolve(join(fixtureDir, ".trigger")), { recursive: true });
36-
// await rm(resolve(join(fixtureDir, "node_modules")), { recursive: true });
37-
// await rm(resolve(join(fixtureDir, ".pnpm_store")), { recursive: true });
37+
await rm(resolve(join(fixtureDir, ".trigger")), { force: true, recursive: true });
38+
await rm(resolve(join(fixtureDir, "node_modules")), { force: true, recursive: true });
3839
});
3940

41+
test(
42+
"installs",
43+
async () => {
44+
await expect(
45+
(async () => {
46+
if (["pnpm", "yarn"].includes(packageManager)) {
47+
const buffer = readFileSync(resolve(join(fixtureDir, "package.json")), "utf8");
48+
const pkgJSON = JSON.parse(buffer.toString());
49+
const version = pkgJSON.engines[packageManager];
50+
console.log(
51+
`Detected ${packageManager}@${version} from package.json 'engines' field`
52+
);
53+
const { stdout } = await execa("corepack", ["use", `${packageManager}@${version}`], {
54+
cwd: fixtureDir,
55+
});
56+
console.log(stdout);
57+
} else {
58+
const { stdout } = await execa(packageManager, installArgs(packageManager), {
59+
cwd: fixtureDir,
60+
});
61+
console.log(stdout);
62+
}
63+
})()
64+
).resolves.not.toThrowError();
65+
},
66+
{ timeout: 60_000 }
67+
);
68+
4069
test(
4170
"compiles",
4271
async () => {
@@ -68,70 +97,21 @@ if (testCases.length > 0) {
6897
);
6998
});
7099
} else if (process.env.MOD) {
71-
throw new Error(`Unknown fixture ${process.env.MOD}`);
100+
throw new Error(`Unknown fixture '${process.env.MOD}'`);
72101
} else {
73102
throw new Error("Nothing to test");
74103
}
75104

76-
// For now to avoid changes in codebase.
77-
function togglePackageManager(toggle: boolean, dir: string, packageManager?: string) {
105+
function installArgs(packageManager: string) {
78106
switch (packageManager) {
79107
case "bun":
80-
renameSync(
81-
join(dir, `pnpm-lock${toggle ? "" : ".muted"}.yaml`),
82-
join(dir, `pnpm-lock${toggle ? ".muted" : ""}.yaml`)
83-
);
84-
renameSync(
85-
join(dir, `yarn${toggle ? "" : ".muted"}.lock`),
86-
join(dir, `yarn${toggle ? ".muted" : ""}.lock`)
87-
);
88-
renameSync(
89-
join(dir, `package-lock${toggle ? "" : ".muted"}.json`),
90-
join(dir, `package-lock${toggle ? ".muted" : ""}.json`)
91-
);
92-
break;
108+
return ["install", "--frozen-lockfile"];
93109
case "pnpm":
94-
renameSync(
95-
join(dir, `bun${toggle ? "" : ".muted"}.lockb`),
96-
join(dir, `bun${toggle ? ".muted" : ""}.lockb`)
97-
);
98-
renameSync(
99-
join(dir, `yarn${toggle ? "" : ".muted"}.lock`),
100-
join(dir, `yarn${toggle ? ".muted" : ""}.lock`)
101-
);
102-
renameSync(
103-
join(dir, `package-lock${toggle ? "" : ".muted"}.json`),
104-
join(dir, `package-lock${toggle ? ".muted" : ""}.json`)
105-
);
106-
break;
107110
case "yarn":
108-
renameSync(
109-
join(dir, `bun${toggle ? "" : ".muted"}.lockb`),
110-
join(dir, `bun${toggle ? ".muted" : ""}.lockb`)
111-
);
112-
renameSync(
113-
join(dir, `pnpm-lock${toggle ? "" : ".muted"}.yaml`),
114-
join(dir, `pnpm-lock${toggle ? ".muted" : ""}.yaml`)
115-
);
116-
renameSync(
117-
join(dir, `package-lock${toggle ? "" : ".muted"}.json`),
118-
join(dir, `package-lock${toggle ? ".muted" : ""}.json`)
119-
);
120-
break;
111+
throw new Error("pnpm and yarn version must be read from 'package.json' 'engines' field");
121112
case "npm":
113+
return ["ci", "--no-audit"];
122114
default:
123-
renameSync(
124-
join(dir, `pnpm-lock${toggle ? "" : ".muted"}.yaml`),
125-
join(dir, `pnpm-lock${toggle ? ".muted" : ""}.yaml`)
126-
);
127-
renameSync(
128-
join(dir, `bun${toggle ? "" : ".muted"}.lockb`),
129-
join(dir, `bun${toggle ? ".muted" : ""}.lockb`)
130-
);
131-
renameSync(
132-
join(dir, `yarn${toggle ? "" : ".muted"}.lock`),
133-
join(dir, `yarn${toggle ? ".muted" : ""}.lock`)
134-
);
135-
break;
115+
throw new Error(`Unknown package manager '${packageManager}'`);
136116
}
137117
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
nodeLinker: node-modules

packages/cli-v3/e2e/fixtures/infisical-sdk/package.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,10 @@
44
"dependencies": {
55
"@infisical/sdk": "^2.2.3",
66
"@trigger.dev/sdk": "3.0.0-beta.33"
7+
},
8+
"packageManager": "[email protected]+sha256.4b4efa12490e5055d59b9b9fc9438b7d581a6b7af3b5675eb5c5f447cee1a589",
9+
"engines": {
10+
"pnpm": "8.15.5",
11+
"yarn": "4.2.2"
712
}
813
}

packages/cli-v3/e2e/fixtures/infisical-sdk/pnpm-lock.yaml

Lines changed: 31 additions & 31 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)