From 57a6421670d50da1ed6ad64f004a1fc11990cc9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kayla=20=E3=81=AF=E3=81=AA?= Date: Tue, 5 May 2026 13:33:59 -0600 Subject: [PATCH] fix(site): ignore empty file path segments in template file tree (#24980) --- site/src/utils/templateVersion.test.ts | 25 +++++++++++++++++++++++++ site/src/utils/templateVersion.ts | 2 +- 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 site/src/utils/templateVersion.test.ts diff --git a/site/src/utils/templateVersion.test.ts b/site/src/utils/templateVersion.test.ts new file mode 100644 index 0000000000..6e73e027f9 --- /dev/null +++ b/site/src/utils/templateVersion.test.ts @@ -0,0 +1,25 @@ +import { TarReader, TarWriter } from "./tar"; +import { createTemplateVersionFileTree } from "./templateVersion"; + +test("createTemplateVersionFileTree ignores empty path segments", async () => { + const writer = new TarWriter(); + writer.addFolder("files/etc/apt/"); + writer.addFile( + "files/etc/apt/sources.list", + "deb http://example.com stable main", + ); + + const tarFile = await writer.write(); + const reader = new TarReader(); + await reader.readFile(tarFile); + + expect(createTemplateVersionFileTree(reader)).toEqual({ + files: { + etc: { + apt: { + "sources.list": "deb http://example.com stable main", + }, + }, + }, + }); +}); diff --git a/site/src/utils/templateVersion.ts b/site/src/utils/templateVersion.ts index ac0e0d8908..5da96aa302 100644 --- a/site/src/utils/templateVersion.ts +++ b/site/src/utils/templateVersion.ts @@ -30,7 +30,7 @@ export const createTemplateVersionFileTree = ( for (const file of tarReader.fileInfo) { fileTree = set( fileTree, - file.name.split("/"), + file.name.split("/").filter((part) => part !== ""), file.type === TarFileTypeCodes.Dir ? {} : (tarReader.getTextFile(file.name) as string),