Skip to content

Commit fa21312

Browse files
authored
Fix relative project root (#7285)
1 parent 1b80dec commit fa21312

File tree

20 files changed

+214
-62
lines changed

20 files changed

+214
-62
lines changed

.changeset/sixty-news-relax.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"wrangler": patch
3+
---
4+
5+
Rename `directory` to `projectRoot` and ensure it's relative to the `wrangler.toml`. This fixes a regression which meant that `.wrangler` temporary folders were inadvertently generated relative to `process.cwd()` rather than the location of the `wrangler.toml` file. It also renames `directory` to `projectRoot`, which affects the `unstable_startWorker() interface.

packages/create-cloudflare/e2e-tests/cli.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ describe.skipIf(experimental || frameworkToTest || isQuarantineMode())(
199199
const { output } = await runC3(
200200
[
201201
project.path,
202-
"--template=https://github.com/cloudflare/templates/worker-router",
202+
"--template=https://github.com/cloudflare/workers-graphql-server",
203203
"--no-deploy",
204204
"--git=false",
205205
],
@@ -208,10 +208,10 @@ describe.skipIf(experimental || frameworkToTest || isQuarantineMode())(
208208
);
209209

210210
expect(output).toContain(
211-
`repository https://github.com/cloudflare/templates/worker-router`,
211+
`repository https://github.com/cloudflare/workers-graphql-server`,
212212
);
213213
expect(output).toContain(
214-
`Cloning template from: https://github.com/cloudflare/templates/worker-router`,
214+
`Cloning template from: https://github.com/cloudflare/workers-graphql-server`,
215215
);
216216
expect(output).toContain(`template cloned and validated`);
217217
},

packages/wrangler/src/__tests__/api/startDevWorker/BundleController.test.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ function configDefaults(
4040
const persist = path.join(process.cwd(), ".wrangler/persist");
4141
return {
4242
entrypoint: "NOT_REAL",
43-
directory: "NOT_REAL",
43+
projectRoot: "NOT_REAL",
4444
build: unusable<StartDevWorkerOptions["build"]>(),
4545
legacy: {},
4646
dev: { persist },
@@ -68,7 +68,7 @@ describe("BundleController", () => {
6868
legacy: {},
6969
name: "worker",
7070
entrypoint: path.resolve("src/index.ts"),
71-
directory: path.resolve("src"),
71+
projectRoot: path.resolve("src"),
7272
build: {
7373
additionalModules: [],
7474
processEntrypoint: false,
@@ -141,7 +141,7 @@ describe("BundleController", () => {
141141
legacy: {},
142142
name: "worker",
143143
entrypoint: path.resolve("src/index.ts"),
144-
directory: path.resolve("src"),
144+
projectRoot: path.resolve("src"),
145145
build: {
146146
additionalModules: [],
147147
processEntrypoint: false,
@@ -207,7 +207,7 @@ describe("BundleController", () => {
207207
legacy: {},
208208
name: "worker",
209209
entrypoint: path.resolve("out.ts"),
210-
directory: path.resolve("."),
210+
projectRoot: path.resolve("."),
211211
build: {
212212
additionalModules: [],
213213
processEntrypoint: false,
@@ -287,7 +287,7 @@ describe("BundleController", () => {
287287
legacy: {},
288288
name: "worker",
289289
entrypoint: path.resolve("src/index.ts"),
290-
directory: path.resolve("src"),
290+
projectRoot: path.resolve("src"),
291291
build: {
292292
additionalModules: [],
293293
processEntrypoint: false,
@@ -345,7 +345,7 @@ describe("BundleController", () => {
345345
legacy: {},
346346
name: "worker",
347347
entrypoint: path.resolve("src/index.ts"),
348-
directory: path.resolve("src"),
348+
projectRoot: path.resolve("src"),
349349

350350
build: {
351351
additionalModules: [],
@@ -391,7 +391,7 @@ describe("BundleController", () => {
391391
const configCustom: Partial<StartDevWorkerOptions> = {
392392
name: "worker",
393393
entrypoint: path.resolve("out.ts"),
394-
directory: process.cwd(),
394+
projectRoot: process.cwd(),
395395
build: {
396396
additionalModules: [],
397397
processEntrypoint: false,
@@ -464,7 +464,7 @@ describe("BundleController", () => {
464464
const configCustom: Partial<StartDevWorkerOptions> = {
465465
name: "worker",
466466
entrypoint: path.resolve("out.ts"),
467-
directory: process.cwd(),
467+
projectRoot: process.cwd(),
468468

469469
build: {
470470
additionalModules: [],
@@ -513,7 +513,7 @@ describe("BundleController", () => {
513513
legacy: {},
514514
name: "worker",
515515
entrypoint: path.resolve("src/index.ts"),
516-
directory: path.resolve("src"),
516+
projectRoot: path.resolve("src"),
517517

518518
build: {
519519
additionalModules: [],

packages/wrangler/src/__tests__/api/startDevWorker/ConfigController.test.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ describe("ConfigController", () => {
5151
moduleRoot: path.join(process.cwd(), "src"),
5252
moduleRules: [],
5353
},
54-
directory: process.cwd(),
54+
projectRoot: process.cwd(),
5555
entrypoint: path.join(process.cwd(), "src/index.ts"),
5656
},
5757
});
@@ -87,7 +87,7 @@ base_dir = \"./some/base_dir\"`,
8787
moduleRoot: path.join(process.cwd(), "./some/base_dir"),
8888
moduleRules: [],
8989
},
90-
directory: process.cwd(),
90+
projectRoot: process.cwd(),
9191
entrypoint: path.join(process.cwd(), "./some/base_dir/nested/index.js"),
9292
},
9393
});
@@ -114,7 +114,7 @@ base_dir = \"./some/base_dir\"`,
114114
type: "configUpdate",
115115
config: {
116116
entrypoint: path.join(process.cwd(), "src/index.ts"),
117-
directory: process.cwd(),
117+
projectRoot: process.cwd(),
118118
build: {
119119
additionalModules: [],
120120
define: {},
@@ -138,7 +138,7 @@ base_dir = \"./some/base_dir\"`,
138138
type: "configUpdate",
139139
config: {
140140
entrypoint: path.join(process.cwd(), "src/index.ts"),
141-
directory: process.cwd(),
141+
projectRoot: process.cwd(),
142142
build: {
143143
additionalModules: [],
144144
define: {},
@@ -168,7 +168,7 @@ base_dir = \"./some/base_dir\"`,
168168
type: "configUpdate",
169169
config: {
170170
entrypoint: path.join(process.cwd(), "src/index.ts"),
171-
directory: process.cwd(),
171+
projectRoot: process.cwd(),
172172
build: {
173173
alias: {
174174
foo: "bar",

packages/wrangler/src/__tests__/api/startDevWorker/LocalRuntimeController.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ function makeEsbuildBundle(testBundle: TestBundle): Bundle {
8888
entrypointSource: "",
8989
entry: {
9090
file: "index.mjs",
91-
directory: "/virtual/",
91+
projectRoot: "/virtual/",
9292
format: "modules",
9393
moduleRoot: "/virtual",
9494
name: undefined,
@@ -127,7 +127,7 @@ function configDefaults(
127127
): StartDevWorkerOptions {
128128
return {
129129
entrypoint: "NOT_REAL",
130-
directory: "NOT_REAL",
130+
projectRoot: "NOT_REAL",
131131
build: unusable<StartDevWorkerOptions["build"]>(),
132132
legacy: {},
133133
dev: { persist: "./persist" },
@@ -232,7 +232,7 @@ describe("LocalRuntimeController", () => {
232232
`,
233233
entry: {
234234
file: "esm/index.mjs",
235-
directory: "/virtual/",
235+
projectRoot: "/virtual/",
236236
format: "modules",
237237
moduleRoot: "/virtual",
238238
name: undefined,
@@ -346,7 +346,7 @@ describe("LocalRuntimeController", () => {
346346
path: "/virtual/index.js",
347347
entry: {
348348
file: "index.js",
349-
directory: "/virtual/",
349+
projectRoot: "/virtual/",
350350
format: "service-worker",
351351
moduleRoot: "/virtual",
352352
name: undefined,

packages/wrangler/src/__tests__/find-additional-modules.test.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ describe("traverse module graph", () => {
3939
const modules = await findAdditionalModules(
4040
{
4141
file: path.join(process.cwd(), "./index.js"),
42-
directory: process.cwd(),
42+
projectRoot: process.cwd(),
4343
format: "modules",
4444
moduleRoot: process.cwd(),
4545
exports: [],
@@ -75,7 +75,7 @@ describe("traverse module graph", () => {
7575
const modules = await findAdditionalModules(
7676
{
7777
file: path.join(process.cwd(), "./index.js"),
78-
directory: process.cwd(),
78+
projectRoot: process.cwd(),
7979
format: "modules",
8080
moduleRoot: process.cwd(),
8181
exports: [],
@@ -109,7 +109,7 @@ describe("traverse module graph", () => {
109109
const modules = await findAdditionalModules(
110110
{
111111
file: path.join(process.cwd(), "./src/nested/index.js"),
112-
directory: path.join(process.cwd(), "./src/nested"),
112+
projectRoot: path.join(process.cwd(), "./src/nested"),
113113
format: "modules",
114114
// The default module root is dirname(file)
115115
moduleRoot: path.join(process.cwd(), "./src/nested"),
@@ -144,7 +144,7 @@ describe("traverse module graph", () => {
144144
const modules = await findAdditionalModules(
145145
{
146146
file: path.join(process.cwd(), "./src/nested/index.js"),
147-
directory: path.join(process.cwd(), "./src/nested"),
147+
projectRoot: path.join(process.cwd(), "./src/nested"),
148148
format: "modules",
149149
// The default module root is dirname(file)
150150
moduleRoot: path.join(process.cwd(), "./src"),
@@ -179,7 +179,7 @@ describe("traverse module graph", () => {
179179
const modules = await findAdditionalModules(
180180
{
181181
file: path.join(process.cwd(), "./src/nested/index.js"),
182-
directory: path.join(process.cwd(), "./src/nested"),
182+
projectRoot: path.join(process.cwd(), "./src/nested"),
183183
format: "modules",
184184
// The default module root is dirname(file)
185185
moduleRoot: path.join(process.cwd(), "./src"),
@@ -214,7 +214,7 @@ describe("traverse module graph", () => {
214214
const modules = await findAdditionalModules(
215215
{
216216
file: path.join(process.cwd(), "./src/index.js"),
217-
directory: path.join(process.cwd(), "./src"),
217+
projectRoot: path.join(process.cwd(), "./src"),
218218
format: "modules",
219219
// The default module root is dirname(file)
220220
moduleRoot: path.join(process.cwd(), "./src"),
@@ -249,7 +249,7 @@ describe("traverse module graph", () => {
249249
findAdditionalModules(
250250
{
251251
file: path.join(process.cwd(), "./src/index.js"),
252-
directory: path.join(process.cwd(), "./src"),
252+
projectRoot: path.join(process.cwd(), "./src"),
253253
format: "modules",
254254
// The default module root is dirname(file)
255255
moduleRoot: path.join(process.cwd(), "./src"),
Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
import path from "path";
2+
import dedent from "ts-dedent";
3+
import { defaultWranglerConfig } from "../config/config";
4+
import { getEntry } from "../deployment-bundle/entry";
5+
import { mockConsoleMethods } from "./helpers/mock-console";
6+
import { runInTempDir } from "./helpers/run-in-tmp";
7+
import { seed } from "./helpers/seed";
8+
import type { Entry } from "../deployment-bundle/entry";
9+
10+
function normalize(entry: Entry): Entry {
11+
const tmpDir = process.cwd();
12+
const tmpDirName = path.basename(tmpDir);
13+
14+
return Object.fromEntries(
15+
Object.entries(entry).map(([k, v]) => [
16+
k,
17+
typeof v === "string"
18+
? v
19+
.replaceAll("\\", "/")
20+
.replace(new RegExp(`(.*${tmpDirName})`), `/tmp/dir`)
21+
: v,
22+
])
23+
) as Entry;
24+
}
25+
26+
describe("getEntry()", () => {
27+
runInTempDir();
28+
mockConsoleMethods();
29+
30+
it("--script index.ts", async () => {
31+
await seed({
32+
"index.ts": dedent/* javascript */ `
33+
export default {
34+
fetch() {
35+
36+
}
37+
}
38+
`,
39+
});
40+
const entry = await getEntry(
41+
{ script: "index.ts" },
42+
defaultWranglerConfig,
43+
"deploy"
44+
);
45+
expect(normalize(entry)).toMatchObject({
46+
projectRoot: "/tmp/dir",
47+
file: "/tmp/dir/index.ts",
48+
moduleRoot: "/tmp/dir",
49+
});
50+
});
51+
52+
it("--script src/index.ts", async () => {
53+
await seed({
54+
"src/index.ts": dedent/* javascript */ `
55+
export default {
56+
fetch() {
57+
58+
}
59+
}
60+
`,
61+
});
62+
const entry = await getEntry(
63+
{ script: "src/index.ts" },
64+
defaultWranglerConfig,
65+
"deploy"
66+
);
67+
expect(normalize(entry)).toMatchObject({
68+
projectRoot: "/tmp/dir",
69+
file: "/tmp/dir/src/index.ts",
70+
moduleRoot: "/tmp/dir/src",
71+
});
72+
});
73+
74+
it("main = index.ts", async () => {
75+
await seed({
76+
"index.ts": dedent/* javascript */ `
77+
export default {
78+
fetch() {
79+
80+
}
81+
}
82+
`,
83+
});
84+
const entry = await getEntry(
85+
{},
86+
{ ...defaultWranglerConfig, main: "index.ts" },
87+
"deploy"
88+
);
89+
expect(normalize(entry)).toMatchObject({
90+
projectRoot: "/tmp/dir",
91+
file: "/tmp/dir/index.ts",
92+
moduleRoot: "/tmp/dir",
93+
});
94+
});
95+
96+
it("main = src/index.ts", async () => {
97+
await seed({
98+
"src/index.ts": dedent/* javascript */ `
99+
export default {
100+
fetch() {
101+
102+
}
103+
}
104+
`,
105+
});
106+
const entry = await getEntry(
107+
{},
108+
{ ...defaultWranglerConfig, main: "src/index.ts" },
109+
"deploy"
110+
);
111+
expect(normalize(entry)).toMatchObject({
112+
projectRoot: "/tmp/dir",
113+
file: "/tmp/dir/src/index.ts",
114+
moduleRoot: "/tmp/dir/src",
115+
});
116+
});
117+
118+
it("main = src/index.ts w/ configPath", async () => {
119+
await seed({
120+
"other-worker/src/index.ts": dedent/* javascript */ `
121+
export default {
122+
fetch() {
123+
124+
}
125+
}
126+
`,
127+
});
128+
const entry = await getEntry(
129+
{},
130+
{
131+
...defaultWranglerConfig,
132+
main: "src/index.ts",
133+
configPath: "other-worker/wrangler.toml",
134+
},
135+
"deploy"
136+
);
137+
expect(normalize(entry)).toMatchObject({
138+
projectRoot: "/tmp/dir/other-worker",
139+
file: "/tmp/dir/other-worker/src/index.ts",
140+
moduleRoot: "/tmp/dir/other-worker/src",
141+
});
142+
});
143+
});

0 commit comments

Comments
 (0)