diff --git a/packages/studio-server/src/routes/files.renameReferences.test.ts b/packages/studio-server/src/routes/files.renameReferences.test.ts index cec57833e4..d5669e944c 100644 --- a/packages/studio-server/src/routes/files.renameReferences.test.ts +++ b/packages/studio-server/src/routes/files.renameReferences.test.ts @@ -791,6 +791,20 @@ describe("renaming a folder over the route", () => { ); }); + it("in HTML follows a folder moved out of the page's folder", async () => { + const project = mkdtempSync(join(tmpdir(), "hf-rename-refs-")); + dirs.push(project); + mkdirSync(join(project, "assets", "clips"), { recursive: true }); + mkdirSync(join(project, "media")); + writeFileSync(join(project, "assets", "clips", "a.png"), "x"); + writeFileSync(join(project, "assets", "i.html"), ''); + + expect((await renameIn(project, "assets/clips", "media/clips")).status).toBe(200); + expect(readFileSync(join(project, "assets", "i.html"), "utf8")).toBe( + '', + ); + }); + it("in HTML gives a path the runtime reads from the root to the root pass, where both readings match", async () => { const project = mkdtempSync(join(tmpdir(), "hf-rename-refs-")); dirs.push(project); diff --git a/packages/studio-server/src/routes/files.ts b/packages/studio-server/src/routes/files.ts index 16e60e7ec9..a00e1d7617 100644 --- a/packages/studio-server/src/routes/files.ts +++ b/packages/studio-server/src/routes/files.ts @@ -1126,9 +1126,10 @@ function updateReferences( .filter((path) => path.startsWith(`${dir}/`)) .map((path) => path.slice(at + 1)); const [from, to] = [oldPath.slice(at + 1), posix.relative(dir, newPath)]; + const everywhere = filesOnly(existing.map((path) => posix.relative(dir, path))); parentFolderEdits.set(dir, { css: referenceEdits(from, to, isDirectory, inside, { targets: null }), - html: referenceEdits(from, to, isDirectory, inside, { targets: filesOnly(inside) }), + html: referenceEdits(from, to, isDirectory, inside, { targets: everywhere }), }); } let updatedCount = 0;