summaryrefslogtreecommitdiff
path: root/packages/integrations/deno/test/helpers.js
diff options
context:
space:
mode:
Diffstat (limited to 'packages/integrations/deno/test/helpers.js')
-rw-r--r--packages/integrations/deno/test/helpers.js50
1 files changed, 44 insertions, 6 deletions
diff --git a/packages/integrations/deno/test/helpers.js b/packages/integrations/deno/test/helpers.js
index 3a3fb0c17..74c7f9fca 100644
--- a/packages/integrations/deno/test/helpers.js
+++ b/packages/integrations/deno/test/helpers.js
@@ -1,4 +1,4 @@
-import { fromFileUrl } from './deps.js';
+import { readableStreamFromReader, fromFileUrl } from './deps.js';
const dir = new URL('./', import.meta.url);
export async function runBuild(fixturePath) {
@@ -10,14 +10,52 @@ export async function runBuild(fixturePath) {
return async () => await proc.close();
}
-export async function runBuildAndStartApp(fixturePath, cb) {
- const url = new URL(fixturePath, dir);
- const close = await runBuild(fixturePath);
- const mod = await import(new URL('./dist/server/entry.mjs', url));
+export async function startModFromImport(baseUrl) {
+ const entryUrl = new URL('./dist/server/entry.mjs', baseUrl);
+ const mod = await import(entryUrl);
+
if (!mod.running()) {
mod.start();
}
+
+ return () => mod.stop();
+}
+
+export async function startModFromSubprocess(baseUrl) {
+ const entryUrl = new URL('./dist/server/entry.mjs', baseUrl);
+ let proc = Deno.run({
+ cmd: ['deno', 'run', '--allow-env', '--allow-net', fromFileUrl(entryUrl)],
+ cwd: fromFileUrl(baseUrl),
+ stderr: 'piped'
+ });
+ const stderr = readableStreamFromReader(proc.stderr);
+ const dec = new TextDecoder();
+ for await(let bytes of stderr) {
+ let msg = dec.decode(bytes);
+ if(msg.includes(`Server running`)) {
+ break;
+ }
+ }
+ return () => proc.close();
+}
+
+export async function runBuildAndStartApp(fixturePath, cb) {
+ const url = new URL(fixturePath, dir);
+ const close = await runBuild(fixturePath);
+ const stop = await startModFromImport(url);
+
+ await cb();
+ await stop();
+ await close();
+}
+
+
+export async function runBuildAndStartAppFromSubprocess(fixturePath, cb) {
+ const url = new URL(fixturePath, dir);
+ const close = await runBuild(fixturePath);
+ const stop = await startModFromSubprocess(url);
+
await cb();
- await mod.stop();
+ await stop();
await close();
}