Skip to content

Commit 25be724

Browse files
committed
script to serve and test
1 parent e336f84 commit 25be724

3 files changed

Lines changed: 54 additions & 3 deletions

File tree

.github/workflows/test-database.yaml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,4 @@ jobs:
3030
run: pnpm run setup
3131
- name: Serve and run tests
3232
working-directory: ./packages/database
33-
run: |
34-
pnpm run serve &
35-
wait 2 ; pnpm run test
33+
run: pnpm run test:withserve

packages/database/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
"lint:fix": "eslint --fix . && tsx scripts/lintSchemas.ts -f && tsx scripts/lintFunctions.ts",
3434
"migrate": "tsx scripts/migrate.ts",
3535
"test": "pnpm run build && cucumber-js",
36+
"test:withserve": "pnpm run build && tsx/serve_and_test.ts",
3637
"genenv": "tsx scripts/createEnv.mts",
3738
"gentypes": "tsx scripts/genTypes.ts",
3839
"dbdiff": "supabase stop && supabase db diff --use-pg-schema",
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import { spawn, execSync } from "node:child_process";
2+
import { join, dirname } from "path";
3+
4+
const __dirname = dirname(__filename);
5+
const projectRoot = join(__dirname, "..");
6+
7+
if (process.env.GITHUB_TEST !== "test") {
8+
}
9+
10+
const serve = spawn("supabase", ["functions", "serve"], {
11+
cwd: projectRoot,
12+
detached: true,
13+
});
14+
15+
let resolveCallback: ((v: unknown) => void) | undefined = undefined;
16+
let rejectCallback: ((v: unknown) => void) | undefined = undefined;
17+
18+
const servingReady = new Promise((rsc, rjc) => {
19+
resolveCallback = rsc;
20+
rejectCallback = rjc;
21+
});
22+
23+
serve.stdout.on("data", (data: string) => {
24+
console.log(`stdout: ${data}`);
25+
if (data.includes("Serving functions ")) {
26+
console.log("Found serving functions");
27+
if (resolveCallback === undefined) throw new Error("did not get callback");
28+
resolveCallback(null);
29+
}
30+
});
31+
32+
const doTest = async () => {
33+
await servingReady;
34+
try {
35+
execSync("cucumber-js", {
36+
cwd: projectRoot,
37+
stdio: "inherit",
38+
});
39+
// will throw on failure
40+
} finally {
41+
if (serve.pid) process.kill(-serve.pid);
42+
}
43+
};
44+
45+
doTest()
46+
.then(() => {
47+
console.log("success");
48+
})
49+
.catch((err) => {
50+
console.error(err);
51+
process.exit(-1);
52+
});

0 commit comments

Comments
 (0)