Skip to content

Commit f1b26a5

Browse files
committed
Add worker start test
1 parent 345b36e commit f1b26a5

File tree

2 files changed

+71
-10
lines changed

2 files changed

+71
-10
lines changed

packages/cli-v3/e2e/compile.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#!/usr/bin/env node
2-
31
import { esbuildDecorators } from "@anatine/esbuild-decorators";
42
import { build } from "esbuild";
53
import { readFileSync } from "node:fs";
@@ -91,8 +89,11 @@ export async function compile(options: CompileOptions) {
9189
target: ["node18", "es2020"],
9290
// outdir: "out",
9391
outdir: resolve(config.projectDir, "out"),
94-
banner: {
95-
js: `process.on("uncaughtException", function(error, origin) { if (error instanceof Error) { process.send && process.send({ type: "EVENT", message: { type: "UNCAUGHT_EXCEPTION", payload: { error: { name: error.name, message: error.message, stack: error.stack }, origin }, version: "v1" } }); } else { process.send && process.send({ type: "EVENT", message: { type: "UNCAUGHT_EXCEPTION", payload: { error: { name: "Error", message: typeof error === "string" ? error : JSON.stringify(error) }, origin }, version: "v1" } }); } });`,
92+
// banner: {
93+
// js: `process.on("uncaughtException", function(error, origin) { if (error instanceof Error) { process.send && process.send({ type: "EVENT", message: { type: "UNCAUGHT_EXCEPTION", payload: { error: { name: error.name, message: error.message, stack: error.stack }, origin }, version: "v1" } }); } else { process.send && process.send({ type: "EVENT", message: { type: "UNCAUGHT_EXCEPTION", payload: { error: { name: "Error", message: typeof error === "string" ? error : JSON.stringify(error) }, origin }, version: "v1" } }); } });`,
94+
// },
95+
footer: {
96+
js: "process.exit();",
9697
},
9798
define: {
9899
TRIGGER_API_URL: `"${config.triggerUrl}"`,

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

Lines changed: 66 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
import { execa } from "execa";
2-
import { readFileSync } from "node:fs";
1+
import { execa, execaNode } from "execa";
32
import { mkdir, rename, rm } from "node:fs/promises";
43
import { join, resolve } from "node:path";
54

@@ -12,14 +11,17 @@ import { compile } from "./compile";
1211
import { handleDependencies } from "./handleDependencies";
1312
import { createContainerFile } from "./createContainerFile";
1413
import { createDeployHash } from "./createDeployHash";
14+
import { readFileSync } from "node:fs";
1515

1616
type TestCase = {
1717
name: string;
1818
skipTypecheck?: boolean;
1919
wantConfigNotFoundError?: boolean;
2020
wantBadConfigError?: boolean;
2121
wantCompilationError?: boolean;
22+
wantWorkerError?: boolean;
2223
wantDependenciesError?: boolean;
24+
wantInstallationError?: boolean;
2325
};
2426

2527
const allTestCases: TestCase[] = [
@@ -71,7 +73,9 @@ if (testCases.length > 0) {
7173
wantConfigNotFoundError,
7274
wantBadConfigError,
7375
wantCompilationError,
76+
wantWorkerError,
7477
wantDependenciesError,
78+
wantInstallationError,
7579
}: TestCase) => {
7680
const fixtureDir = resolve(join(process.cwd(), "e2e/fixtures", name));
7781

@@ -108,19 +112,25 @@ if (testCases.length > 0) {
108112
console.log(
109113
`Detected ${packageManager}@${version} from package.json 'engines' field`
110114
);
111-
const { stdout } = await execa(
115+
const { stdout, stderr } = await execa(
112116
"corepack",
113117
["use", `${packageManager}@${version}`],
114118
{
115119
cwd: fixtureDir,
116120
}
117121
);
118122
console.log(stdout);
123+
if (stderr) console.error(stderr);
119124
} else {
120-
const { stdout } = await execa(packageManager, installArgs(packageManager), {
121-
cwd: fixtureDir,
122-
});
125+
const { stdout, stderr } = await execa(
126+
packageManager,
127+
installArgs(packageManager),
128+
{
129+
cwd: fixtureDir,
130+
}
131+
);
123132
console.log(stdout);
133+
if (stderr) console.error(stderr);
124134
}
125135
})()
126136
).resolves.not.toThrowError();
@@ -262,6 +272,56 @@ if (testCases.length > 0) {
262272
})()
263273
).resolves.not.toThrowError();
264274
});
275+
276+
describe("with Containerfile ready", () => {
277+
test(
278+
"installs dependencies",
279+
async () => {
280+
const expectation = expect(
281+
(async () => {
282+
const { stdout, stderr } = await execa(
283+
"npm",
284+
["ci", "--no-audit", "--no-fund"],
285+
{
286+
cwd: resolve(join(fixtureDir, ".trigger")),
287+
}
288+
);
289+
console.log(stdout);
290+
if (stderr) console.error(stderr);
291+
})()
292+
);
293+
294+
if (wantInstallationError) {
295+
await expectation.rejects.toThrowError();
296+
} else {
297+
await expectation.resolves.not.toThrowError();
298+
}
299+
},
300+
{ timeout: 60_000 }
301+
);
302+
303+
test(
304+
wantWorkerError ? "'node worker.js' fails" : "'node worker.js' succeeds",
305+
async () => {
306+
const expectation = expect(
307+
(async () => {
308+
const { stdout, stderr } = await execaNode("worker.js", {
309+
cwd: resolve(join(fixtureDir, ".trigger")),
310+
});
311+
console.log(stdout);
312+
if (stderr) console.error(stderr);
313+
})()
314+
);
315+
316+
if (wantWorkerError) {
317+
await expectation.rejects.toThrowError();
318+
} else {
319+
await expectation.resolves.not.toThrowError();
320+
}
321+
},
322+
{ timeout: 60_000 }
323+
);
324+
});
265325
});
266326
});
267327
});

0 commit comments

Comments
 (0)