11import childProcess from "node:child_process" ;
2- import { existsSync } from "node:fs" ;
2+ import { existsSync , mkdtempSync } from "node:fs" ;
33import fs from "node:fs/promises" ;
44import os from "node:os" ;
55import path from "node:path" ;
66import { removeDir } from "@fixture/shared/src/fs-helpers" ;
77import { afterAll , assert , beforeAll , describe , test , vi } from "vitest" ;
8- import { unstable_startWorker } from "wrangler" ;
8+ import { createServer , type WorkerServer } from "wrangler" ;
99import { wranglerEntryPath } from "../../shared/src/run-wrangler-long-lived" ;
1010
11- async function getTmpDir ( ) {
12- return fs . mkdtemp ( path . join ( os . tmpdir ( ) , "wrangler-modules-" ) ) ;
13- }
14-
15- type WranglerDev = Awaited < ReturnType < typeof unstable_startWorker > > ;
16- function get ( worker : WranglerDev , pathname : string ) {
17- const url = `http://example.com${ pathname } ` ;
18- // Disable Miniflare's pretty error page, so we can parse errors as JSON
19- return worker . fetch ( url , { headers : { "MF-Disable-Pretty-Error" : "true" } } ) ;
20- }
21-
2211describe ( "find_additional_modules dev" , ( ) => {
23- let tmpDir : string ;
24- let worker : WranglerDev ;
12+ const tmpDir = mkdtempSync ( path . join ( os . tmpdir ( ) , "wrangler-modules-" ) ) ;
13+ const server = createServer ( {
14+ root : tmpDir ,
15+ workers : [ { configPath : "wrangler.jsonc" } ] ,
16+ watch : true ,
17+ } ) ;
18+
19+ function get ( server : WorkerServer , pathname : string ) {
20+ const url = `http://example.com${ pathname } ` ;
21+ // Disable Miniflare's pretty error page, so we can parse errors as JSON
22+ return server . fetch ( url , {
23+ headers : { "MF-Disable-Pretty-Error" : "true" } ,
24+ } ) ;
25+ }
2526
2627 beforeAll ( async ( ) => {
2728 // Copy over files to a temporary directory as we'll be modifying them
28- tmpDir = await getTmpDir ( ) ;
2929 await fs . cp (
3030 path . resolve ( __dirname , ".." , "src" ) ,
3131 path . join ( tmpDir , "src" ) ,
@@ -36,37 +36,35 @@ describe("find_additional_modules dev", () => {
3636 path . join ( tmpDir , "wrangler.jsonc" )
3737 ) ;
3838
39- worker = await unstable_startWorker ( {
40- config : path . join ( tmpDir , "wrangler.jsonc" ) ,
41- } ) ;
39+ await server . listen ( ) ;
4240 } ) ;
4341 afterAll ( async ( ) => {
44- await worker . dispose ( ) ;
42+ await server . close ( ) ;
4543 removeDir ( tmpDir , { fireAndForget : true } ) ;
4644 } ) ;
4745
4846 test ( "supports bundled modules" , async ( { expect } ) => {
49- const res = await get ( worker , "/dep" ) ;
47+ const res = await get ( server , "/dep" ) ;
5048 expect ( await res . text ( ) ) . toBe ( "bundled" ) ;
5149 } ) ;
5250 test ( "supports text modules" , async ( { expect } ) => {
53- const res = await get ( worker , "/text" ) ;
51+ const res = await get ( server , "/text" ) ;
5452 expect ( await res . text ( ) ) . toBe ( "test\n" ) ;
5553 } ) ;
5654 test ( "supports SQL modules" , async ( { expect } ) => {
57- const res = await get ( worker , "/sql" ) ;
55+ const res = await get ( server , "/sql" ) ;
5856 expect ( await res . text ( ) ) . toBe ( "SELECT * FROM users;\n" ) ;
5957 } ) ;
6058 test ( "supports dynamic imports" , async ( { expect } ) => {
61- const res = await get ( worker , "/dynamic" ) ;
59+ const res = await get ( server , "/dynamic" ) ;
6260 expect ( await res . text ( ) ) . toBe ( "dynamic" ) ;
6361 } ) ;
6462 test ( "supports commonjs lazy imports" , async ( { expect } ) => {
65- const res = await get ( worker , "/common" ) ;
63+ const res = await get ( server , "/common" ) ;
6664 expect ( await res . text ( ) ) . toBe ( "common" ) ;
6765 } ) ;
6866 test ( "supports variable dynamic imports" , async ( { expect } ) => {
69- const res = await get ( worker , "/lang/en" ) ;
67+ const res = await get ( server , "/lang/en" ) ;
7068 expect ( await res . text ( ) ) . toBe ( "hello" ) ;
7169 } ) ;
7270
@@ -79,15 +77,15 @@ describe("find_additional_modules dev", () => {
7977 'export default "new dynamic";'
8078 ) ;
8179 await vi . waitFor ( async ( ) => {
82- const res = await get ( worker , "/dynamic" ) ;
80+ const res = await get ( server , "/dynamic" ) ;
8381 assert . strictEqual ( await res . text ( ) , "new dynamic" ) ;
8482 } ) ;
8583
8684 // Delete dynamically imported file
8785 await fs . rm ( path . join ( srcDir , "lang" , "en.js" ) ) ;
8886
8987 await vi . waitFor ( async ( ) => {
90- await expect ( get ( worker , "/lang/en" ) ) . rejects . toThrowError (
88+ await expect ( get ( server , "/lang/en" ) ) . rejects . toThrowError (
9189 'No such module "lang/en.js".'
9290 ) ;
9391 } ) ;
@@ -99,7 +97,7 @@ describe("find_additional_modules dev", () => {
9997 'export default { hello: "hey" };'
10098 ) ;
10199 await vi . waitFor ( async ( ) => {
102- const res = await get ( worker , "/lang/en/us" ) ;
100+ const res = await get ( server , "/lang/en/us" ) ;
103101 assert . strictEqual ( await res . text ( ) , "hey" ) ;
104102 } ) ;
105103
@@ -109,7 +107,7 @@ describe("find_additional_modules dev", () => {
109107 'export default { hello: "bye" };'
110108 ) ;
111109 await vi . waitFor ( async ( ) => {
112- const res = await get ( worker , "/lang/en/us" ) ;
110+ const res = await get ( server , "/lang/en/us" ) ;
113111 assert . strictEqual ( await res . text ( ) , "bye" ) ;
114112 } ) ;
115113 } ) ;
@@ -126,7 +124,7 @@ function build(cwd: string, outDir: string) {
126124describe ( "find_additional_modules deploy" , ( ) => {
127125 let tmpDir : string ;
128126 beforeAll ( async ( ) => {
129- tmpDir = await getTmpDir ( ) ;
127+ tmpDir = mkdtempSync ( path . join ( os . tmpdir ( ) , "wrangler-modules-" ) ) ;
130128 } ) ;
131129 afterAll ( async ( ) => await removeDir ( tmpDir , { fireAndForget : true } ) ) ;
132130
0 commit comments