From 327dc809c516cb8780c021ae6d43e099b76cbc2b Mon Sep 17 00:00:00 2001 From: Kit Langton Date: Mon, 31 Aug 2026 11:30:57 -0400 Subject: [PATCH] refactor(core): reuse formatter file extension (#46080) --- packages/core/src/formatter.ts | 5 ++--- packages/core/test/formatter.test.ts | 28 ++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/packages/core/src/formatter.ts b/packages/core/src/formatter.ts index 4e6bbe3c553..af17112ff16 100644 --- a/packages/core/src/formatter.ts +++ b/packages/core/src/formatter.ts @@ -54,9 +54,8 @@ const layer = Layer.effect( }) const file = Effect.fn("Formatter.file")(function* (filepath: string) { - const matching = state - .get() - .formatters.filter((formatter) => formatter.extensions.includes(path.extname(filepath))) + const extension = path.extname(filepath) + const matching = state.get().formatters.filter((formatter) => formatter.extensions.includes(extension)) for (const formatter of matching) { const enabled = yield* command(formatter) diff --git a/packages/core/test/formatter.test.ts b/packages/core/test/formatter.test.ts index 492ff7b7700..d4d9f96e242 100644 --- a/packages/core/test/formatter.test.ts +++ b/packages/core/test/formatter.test.ts @@ -58,6 +58,34 @@ function withFormatter( } describe("Formatter", () => { + ;[ + { file: "test.match", extension: ".match", matches: true }, + { file: "test.other", extension: ".match", matches: false }, + { file: "test.MATCH", extension: ".match", matches: false }, + { file: "test.MATCH", extension: ".MATCH", matches: true }, + { file: ".match", extension: ".match", matches: false }, + { file: ".match", extension: "", matches: true }, + { file: "README", extension: ".match", matches: false }, + { file: "README", extension: "", matches: true }, + { file: "test.part.match", extension: ".match", matches: true }, + { file: "test.part.match", extension: ".part.match", matches: false }, + ].forEach((entry) => + it.live(`matches ${entry.file} against ${JSON.stringify(entry.extension)}: ${entry.matches}`, () => + withFormatter( + { + matching: { + command: [process.execPath, "-e", "process.exit(0)", "$FILE"], + extensions: [entry.extension], + }, + }, + (formatter, directory) => + Effect.gen(function* () { + expect(yield* formatter.file(path.join(directory, entry.file))).toBe(entry.matches) + }), + ), + ), + ) + it.live("does not run formatters marked as disabled in config", () => withFormatter( {