diff --git a/.changeset/fix-json-reporter-file-output.md b/.changeset/fix-json-reporter-file-output.md new file mode 100644 index 000000000000..ded9ba07c70b --- /dev/null +++ b/.changeset/fix-json-reporter-file-output.md @@ -0,0 +1,5 @@ +--- +"@biomejs/biome": patch +--- + +Fixed an issue where the JSON reporter didn't write output to a file when `--reporter-file` was specified. The output is now correctly written to the specified file instead of always going to stdout. diff --git a/crates/biome_cli/src/runner/impls/finalizers/default.rs b/crates/biome_cli/src/runner/impls/finalizers/default.rs index 6615935c6360..0d889ae9ac3e 100644 --- a/crates/biome_cli/src/runner/impls/finalizers/default.rs +++ b/crates/biome_cli/src/runner/impls/finalizers/default.rs @@ -219,8 +219,15 @@ fn print_to_reporter(params: PrintToReporter) -> Result<(), CliDiagnostic> { verbose: cli_options.verbose, working_directory: fs.working_directory().clone(), }; + + let writer: &mut dyn ReporterWriter = if cli_reporter.is_file_report() { + file_reporter_writer + } else { + &mut console_reporter_writer + }; + let mut buffer = JsonReporterVisitor::new(summary); - reporter.write(&mut console_reporter_writer, &mut buffer)?; + reporter.write(writer, &mut buffer)?; let root = buffer.to_json(); if cli_reporter.kind == CliReporterKind::JsonPretty { let formatted = @@ -229,12 +236,12 @@ fn print_to_reporter(params: PrintToReporter) -> Result<(), CliDiagnostic> { .print() .expect("To print the JSON report"); - console_reporter_writer.log(markup! { + writer.log(markup! { {formatted.as_code()} }); } else { let code = root.to_string(); - console_reporter_writer.log(markup! { + writer.log(markup! { {code} }); } diff --git a/crates/biome_cli/tests/snapshots/main_cases_reporter_json/reports_diagnostics_json_check_command_file.snap b/crates/biome_cli/tests/snapshots/main_cases_reporter_json/reports_diagnostics_json_check_command_file.snap index d2340ef9e38d..96bc13df7b61 100644 --- a/crates/biome_cli/tests/snapshots/main_cases_reporter_json/reports_diagnostics_json_check_command_file.snap +++ b/crates/biome_cli/tests/snapshots/main_cases_reporter_json/reports_diagnostics_json_check_command_file.snap @@ -5,55 +5,6 @@ expression: redactor(content) ## `file.json` ```json - -``` - -## `index.ts` - -```ts -import { z} from "z" -import { z, b , a} from "lodash" - -a ==b - -debugger - -let f; - let f; -``` - -## `main.ts` - -```ts -import { z} from "z" -import { z, b , a} from "lodash" - -a ==b - -debugger - -let f; - let f; -``` - -# Termination Message - -```block -check ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - - × Some errors were emitted while running checks. - - - -``` - -# Emitted Messages - -```block -The --json option is unstable/experimental and its output might change between patches/minor releases. -``` - -```block { "summary": { "changed": 0, @@ -362,3 +313,48 @@ The --json option is unstable/experimental and its output might change between p } ``` + +## `index.ts` + +```ts +import { z} from "z" +import { z, b , a} from "lodash" + +a ==b + +debugger + +let f; + let f; +``` + +## `main.ts` + +```ts +import { z} from "z" +import { z, b , a} from "lodash" + +a ==b + +debugger + +let f; + let f; +``` + +# Termination Message + +```block +check ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + × Some errors were emitted while running checks. + + + +``` + +# Emitted Messages + +```block +The --json option is unstable/experimental and its output might change between patches/minor releases. +```