From b1aeb33adeb63a1ee521e7a1aacc552faab833da Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Thu, 16 Apr 2026 07:17:39 -0700 Subject: [PATCH] fix: classify fileset resource files with script extensions correctly (#8851) Co-authored-by: Claude Opus 4.6 (1M context) --- cli/src/commands/sync/sync.ts | 2 +- cli/src/types.ts | 6 +++--- cli/test/utils_unit.test.ts | 4 ++++ 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/cli/src/commands/sync/sync.ts b/cli/src/commands/sync/sync.ts index a5dde194b8..b672799106 100644 --- a/cli/src/commands/sync/sync.ts +++ b/cli/src/commands/sync/sync.ts @@ -1986,7 +1986,7 @@ interface ChangeTracker { } async function addToChangedIfNotExists(p: string, tracker: ChangeTracker) { - const isScript = exts.some((e) => p.endsWith(e)); + const isScript = exts.some((e) => p.endsWith(e)) && !isFileResource(p) && !isFilesetResource(p); if (isScript) { if (isFlowPath(p)) { const folder = extractFolderPath(p, "flow")!; diff --git a/cli/src/types.ts b/cli/src/types.ts index a2bc8bea69..98ef694044 100644 --- a/cli/src/types.ts +++ b/cli/src/types.ts @@ -286,6 +286,9 @@ export function getTypeStrFromPath( if (p.startsWith("dependencies" + SEP)) { return "workspace_dependencies"; } + if (isFileResource(p) || isFilesetResource(p)) { + return "resource"; + } const parsed = path.parse(p); if ( parsed.ext == ".go" || @@ -349,9 +352,6 @@ export function getTypeStrFromPath( ) { return typeEnding; } else { - if (isFileResource(p) || isFilesetResource(p)) { - return "resource"; - } throw new Error("Could not infer type of path " + JSON.stringify(parsed)); } } diff --git a/cli/test/utils_unit.test.ts b/cli/test/utils_unit.test.ts index 47edf45236..e5bcea4b92 100644 --- a/cli/test/utils_unit.test.ts +++ b/cli/test/utils_unit.test.ts @@ -270,6 +270,10 @@ describe("getTypeStrFromPath", () => { test("detects fileset resource files as resource type", () => { expect(getTypeStrFromPath("f/test/my_config.fileset/config.yaml")).toBe("resource"); expect(getTypeStrFromPath("u/admin/templates.fileset/path/to/file.txt")).toBe("resource"); + // fileset files with script-like extensions should still be detected as resource + expect(getTypeStrFromPath("f/test/my_queries.fileset/query.sql")).toBe("resource"); + expect(getTypeStrFromPath("f/test/my_queries.fileset/script.py")).toBe("resource"); + expect(getTypeStrFromPath("f/test/my_queries.fileset/nested/dir/file.ts")).toBe("resource"); }); test("throws for unknown type", () => {